mirror of
https://github.com/pybricks/pybricks-code.git
synced 2026-09-12 01:23:52 +00:00
update to react 18
We were stuck on react 16.x for a long time but dependencies seem to have caught up enough that migration is trivial now.
This commit is contained in:
committed by
David Lechner
parent
ca63d048aa
commit
bf4670b25d
@@ -8,7 +8,4 @@ updates:
|
||||
ignore:
|
||||
- dependency-name: "@types/node"
|
||||
versions:
|
||||
- ">= 13.a"
|
||||
- dependency-name: "@types/react"
|
||||
versions:
|
||||
- ">= 17.a"
|
||||
- ">= 19.a"
|
||||
|
||||
+5
-5
@@ -25,13 +25,13 @@
|
||||
"@svgr/webpack": "^8.0.1",
|
||||
"@testing-library/dom": "^9.3.0",
|
||||
"@testing-library/jest-dom": "^5.16.5",
|
||||
"@testing-library/react": "^12.1.5",
|
||||
"@testing-library/react": "^14.0.0",
|
||||
"@testing-library/user-event": "^14.4.3",
|
||||
"@types/file-saver": "^2.0.5",
|
||||
"@types/jest": "^29.5.1",
|
||||
"@types/node": "^16.11.7",
|
||||
"@types/react": "^16.14.34",
|
||||
"@types/react-dom": "^16.9.17",
|
||||
"@types/react": "^18.2.6",
|
||||
"@types/react-dom": "^18.2.4",
|
||||
"@types/react-splitter-layout": "^3.0.2",
|
||||
"@types/redux-logger": "^3.0.9",
|
||||
"@types/semver": "^7.5.0",
|
||||
@@ -87,12 +87,12 @@
|
||||
"prompts": "^2.4.2",
|
||||
"prop-types": "^15.8.1",
|
||||
"pyodide": "0.23.2",
|
||||
"react": "^16.14.0",
|
||||
"react": "^18.2.0",
|
||||
"react-app-polyfill": "^3.0.0",
|
||||
"react-aria": "^3.24.0",
|
||||
"react-complex-tree": "^2.1.4",
|
||||
"react-dev-utils": "^12.0.1",
|
||||
"react-dom": "^16.14.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-dropzone": "^14.2.3",
|
||||
"react-joyride": "^2.5.4",
|
||||
"react-popper": "^2.3.0",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2021-2022 The Pybricks Authors
|
||||
// Copyright (c) 2021-2023 The Pybricks Authors
|
||||
|
||||
// The about dialog
|
||||
|
||||
@@ -24,7 +24,7 @@ import './about.scss';
|
||||
|
||||
type AboutDialogProps = { isOpen: boolean; onClose: () => void };
|
||||
|
||||
const AboutDialog: React.VoidFunctionComponent<AboutDialogProps> = ({
|
||||
const AboutDialog: React.FunctionComponent<AboutDialogProps> = ({
|
||||
isOpen,
|
||||
onClose,
|
||||
}) => {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import './activities.scss';
|
||||
import { Icon, Tab, Tabs } from '@blueprintjs/core';
|
||||
@@ -12,7 +12,7 @@ import { useI18n } from './i18n';
|
||||
/**
|
||||
* React component that acts as a tab control to select activities.
|
||||
*/
|
||||
const Activities: React.VoidFunctionComponent = () => {
|
||||
const Activities: React.FunctionComponent = () => {
|
||||
const [selectedActivity, setSelectedActivity] = useActivitiesSelectedActivity();
|
||||
const i18n = useI18n();
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import './UnexpectedErrorAlert.scss';
|
||||
import {
|
||||
@@ -19,7 +19,7 @@ type UnexpectedErrorAlertProps = {
|
||||
error: Error;
|
||||
};
|
||||
|
||||
const UnexpectedErrorAlert: React.VoidFunctionComponent<UnexpectedErrorAlertProps> = ({
|
||||
const UnexpectedErrorAlert: React.FunctionComponent<UnexpectedErrorAlertProps> = ({
|
||||
error,
|
||||
}) => {
|
||||
const i18n = useI18n();
|
||||
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2020-2022 The Pybricks Authors
|
||||
// Copyright (c) 2020-2023 The Pybricks Authors
|
||||
|
||||
import 'react-splitter-layout/lib/index.css';
|
||||
import './app.scss';
|
||||
@@ -46,7 +46,7 @@ const Terminal = React.lazy(async () => {
|
||||
return componentModule;
|
||||
});
|
||||
|
||||
const Docs: React.VFC = () => {
|
||||
const Docs: React.FunctionComponent = () => {
|
||||
const { setIsSettingShowDocsEnabled } = useSettingIsShowDocsEnabled();
|
||||
const { initialDocsPage, setLastDocsPage } = useAppLastDocsPageSetting();
|
||||
|
||||
@@ -153,7 +153,7 @@ const Docs: React.VFC = () => {
|
||||
);
|
||||
};
|
||||
|
||||
const App: React.VFC = () => {
|
||||
const App: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
const { isDarkMode } = useTernaryDarkMode();
|
||||
const { isSettingShowDocsEnabled } = useSettingIsShowDocsEnabled();
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Intent } from '@blueprintjs/core';
|
||||
import React from 'react';
|
||||
import type { CreateToast } from '../../toasterTypes';
|
||||
import { useI18n } from './i18n';
|
||||
|
||||
const UpdateServerFailure: React.VoidFunctionComponent = () => {
|
||||
const UpdateServerFailure: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
return <p>{i18n.translate('updateServerFailure.message')}</p>;
|
||||
};
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Intent } from '@blueprintjs/core';
|
||||
import React from 'react';
|
||||
import type { CreateToast } from '../../toasterTypes';
|
||||
import { useI18n } from './i18n';
|
||||
|
||||
const BluetoothNotAvailable: React.VoidFunctionComponent = () => {
|
||||
const BluetoothNotAvailable: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
return (
|
||||
<>
|
||||
|
||||
@@ -6,7 +6,7 @@ import React from 'react';
|
||||
import type { CreateToast } from '../../toasterTypes';
|
||||
import { useI18n } from './i18n';
|
||||
|
||||
const Disconnected: React.VoidFunctionComponent = () => {
|
||||
const Disconnected: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
return <p>{i18n.translate('disconnected.message')}</p>;
|
||||
};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Intent } from '@blueprintjs/core';
|
||||
import React from 'react';
|
||||
@@ -11,7 +11,7 @@ type MissingServiceProps = {
|
||||
hubName: string;
|
||||
};
|
||||
|
||||
const MissingService: React.VoidFunctionComponent<MissingServiceProps> = ({
|
||||
const MissingService: React.FunctionComponent<MissingServiceProps> = ({
|
||||
serviceName,
|
||||
hubName,
|
||||
}) => {
|
||||
|
||||
@@ -14,7 +14,7 @@ type NewPybricksProfileProps = {
|
||||
supportedVersion: string;
|
||||
};
|
||||
|
||||
const NewPybricksProfile: React.VoidFunctionComponent<NewPybricksProfileProps> = ({
|
||||
const NewPybricksProfile: React.FunctionComponent<NewPybricksProfileProps> = ({
|
||||
hubVersion,
|
||||
supportedVersion,
|
||||
}) => {
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Intent } from '@blueprintjs/core';
|
||||
import React from 'react';
|
||||
import type { CreateToast } from '../../toasterTypes';
|
||||
import { useI18n } from './i18n';
|
||||
|
||||
const NoGatt: React.VoidFunctionComponent = () => {
|
||||
const NoGatt: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
return <p>{i18n.translate('noGatt.message')}</p>;
|
||||
};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import './index.scss';
|
||||
import { AnchorButton, Button, Intent } from '@blueprintjs/core';
|
||||
@@ -13,7 +13,7 @@ type NoHubProps = {
|
||||
onFlashFirmware: () => void;
|
||||
};
|
||||
|
||||
const NoHub: React.VoidFunctionComponent<NoHubProps> = ({ onFlashFirmware }) => {
|
||||
const NoHub: React.FunctionComponent<NoHubProps> = ({ onFlashFirmware }) => {
|
||||
const i18n = useI18n();
|
||||
|
||||
return (
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Button, Code, Intent } from '@blueprintjs/core';
|
||||
import React from 'react';
|
||||
@@ -7,7 +7,7 @@ import type { CreateToast } from '../../toasterTypes';
|
||||
import { isIOS, isLinux } from '../../utils/os';
|
||||
import { useI18n } from './i18n';
|
||||
|
||||
const NoWebBluetooth: React.VoidFunctionComponent = () => {
|
||||
const NoWebBluetooth: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
return (
|
||||
<>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import './index.scss';
|
||||
import { Button, Intent } from '@blueprintjs/core';
|
||||
@@ -11,7 +11,7 @@ type OldFirmwareProps = {
|
||||
onFlashFirmware: () => void;
|
||||
};
|
||||
|
||||
const OldFirmware: React.VoidFunctionComponent<OldFirmwareProps> = ({
|
||||
const OldFirmware: React.FunctionComponent<OldFirmwareProps> = ({
|
||||
onFlashFirmware,
|
||||
}) => {
|
||||
const i18n = useI18n();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Classes, Icon, IconName, IconSize, Spinner } from '@blueprintjs/core';
|
||||
import { mergeRefs, useId } from '@react-aria/utils';
|
||||
@@ -29,7 +29,7 @@ type ButtonProps = {
|
||||
};
|
||||
|
||||
/** Similar to Blueprint.js button with better accessibility. */
|
||||
export const Button: React.VoidFunctionComponent<ButtonProps> = ({
|
||||
export const Button: React.FunctionComponent<ButtonProps> = ({
|
||||
id,
|
||||
label,
|
||||
hideLabel,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2021-2022 The Pybricks Authors
|
||||
// Copyright (c) 2021-2023 The Pybricks Authors
|
||||
|
||||
// Icon for indicating external links
|
||||
|
||||
@@ -8,7 +8,7 @@ import React from 'react';
|
||||
|
||||
import './clipboard.scss';
|
||||
|
||||
const ClipboardIcon: React.VFC = (_props) => {
|
||||
const ClipboardIcon: React.FunctionComponent = () => {
|
||||
return (
|
||||
<span className="pb-clipboard">
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2021 The Pybricks Authors
|
||||
// Copyright (c) 2021-2023 The Pybricks Authors
|
||||
|
||||
// Icon for indicating external links
|
||||
|
||||
@@ -8,7 +8,7 @@ import React from 'react';
|
||||
|
||||
import './external-link.scss';
|
||||
|
||||
const ExternalLinkIcon: React.VFC = (_props) => {
|
||||
const ExternalLinkIcon: React.FunctionComponent = () => {
|
||||
return (
|
||||
<span className="pb-external-link">
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Classes } from '@blueprintjs/core';
|
||||
import React, { useCallback, useEffect, useState } from 'react';
|
||||
@@ -16,7 +16,7 @@ type HelpButtonProps = {
|
||||
content: React.ReactNode;
|
||||
};
|
||||
|
||||
const HelpButton: React.VoidFunctionComponent<HelpButtonProps> = ({
|
||||
const HelpButton: React.FunctionComponent<HelpButtonProps> = ({
|
||||
helpForLabel,
|
||||
content,
|
||||
}) => {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import './HelpDialog.scss';
|
||||
import { Classes } from '@blueprintjs/core';
|
||||
@@ -9,7 +9,7 @@ import {
|
||||
Popover2Arrow,
|
||||
} from '@blueprintjs/popover2/lib/cjs/popover2Arrow';
|
||||
import classNames from 'classnames';
|
||||
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
||||
import React, { PropsWithChildren, useEffect, useMemo, useRef, useState } from 'react';
|
||||
import {
|
||||
DismissButton,
|
||||
FocusScope,
|
||||
@@ -36,7 +36,7 @@ type HelpDialogProps = {
|
||||
};
|
||||
|
||||
/** React component for showing help as a dialog. */
|
||||
const HelpDialog: React.FunctionComponent<HelpDialogProps> = ({
|
||||
const HelpDialog: React.FunctionComponent<PropsWithChildren<HelpDialogProps>> = ({
|
||||
title,
|
||||
isOpen,
|
||||
openButton,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import './hubPicker.scss';
|
||||
import { Radio, RadioGroup } from '@blueprintjs/core';
|
||||
@@ -12,7 +12,7 @@ type HubIconProps = {
|
||||
label: string;
|
||||
};
|
||||
|
||||
const HubIcon: React.VoidFunctionComponent<HubIconProps> = ({ url, label }) => {
|
||||
const HubIcon: React.FunctionComponent<HubIconProps> = ({ url, label }) => {
|
||||
return <img src={url.toString()} width={64} height={64} title={label} />;
|
||||
};
|
||||
|
||||
@@ -20,9 +20,7 @@ type HubPickerProps = {
|
||||
disabled?: boolean;
|
||||
};
|
||||
|
||||
export const HubPicker: React.VoidFunctionComponent<HubPickerProps> = ({
|
||||
disabled,
|
||||
}) => {
|
||||
export const HubPicker: React.FunctionComponent<HubPickerProps> = ({ disabled }) => {
|
||||
const [selectedHub, setSelectedHub] = useHubPickerSelectedHub();
|
||||
|
||||
return (
|
||||
|
||||
@@ -11,7 +11,7 @@ afterEach(() => {
|
||||
cleanup();
|
||||
});
|
||||
|
||||
const TestToolbar: React.VoidFunctionComponent = () => {
|
||||
const TestToolbar: React.FunctionComponent = () => {
|
||||
return (
|
||||
<Toolbar
|
||||
className="test-class"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import React from 'react';
|
||||
import React, { PropsWithChildren } from 'react';
|
||||
import { FocusScope } from 'react-aria';
|
||||
import { useToolbar } from './aria';
|
||||
import { ToolbarStateContext, useToolbarState } from './state';
|
||||
@@ -22,7 +22,9 @@ type ToolbarProps = Pick<
|
||||
*
|
||||
* https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/toolbar_role
|
||||
*/
|
||||
export const Toolbar: React.FunctionComponent<ToolbarProps> = (props) => {
|
||||
export const Toolbar: React.FunctionComponent<PropsWithChildren<ToolbarProps>> = (
|
||||
props,
|
||||
) => {
|
||||
const { className, children } = props;
|
||||
const state = useToolbarState(props);
|
||||
const { toolbarProps } = useToolbar(props);
|
||||
|
||||
+13
-8
@@ -87,9 +87,14 @@ type EditorContextMenuItemProps = Readonly<{
|
||||
editorAction: string;
|
||||
}>;
|
||||
|
||||
const EditorContextMenuItem: React.VoidFunctionComponent<
|
||||
EditorContextMenuItemProps
|
||||
> = ({ label, icon, keyboardShortcut, disabled, editor, editorAction }) => {
|
||||
const EditorContextMenuItem: React.FunctionComponent<EditorContextMenuItemProps> = ({
|
||||
label,
|
||||
icon,
|
||||
keyboardShortcut,
|
||||
disabled,
|
||||
editor,
|
||||
editorAction,
|
||||
}) => {
|
||||
const labelId = useId();
|
||||
|
||||
return (
|
||||
@@ -114,7 +119,7 @@ type EditorContextMenuProps = {
|
||||
editor: monaco.editor.IStandaloneCodeEditor | undefined;
|
||||
};
|
||||
|
||||
const EditorContextMenu: React.VoidFunctionComponent<EditorContextMenuProps> = ({
|
||||
const EditorContextMenu: React.FunctionComponent<EditorContextMenuProps> = ({
|
||||
editor,
|
||||
}) => {
|
||||
const i18n = useI18n();
|
||||
@@ -181,7 +186,7 @@ type FileNameProps = {
|
||||
onNameChanged: () => void;
|
||||
};
|
||||
|
||||
const TabLabel: React.VoidFunctionComponent<FileNameProps> = ({
|
||||
const TabLabel: React.FunctionComponent<FileNameProps> = ({
|
||||
id,
|
||||
uuid,
|
||||
onNameChanged,
|
||||
@@ -204,7 +209,7 @@ type TabCloseButtonProps = {
|
||||
uuid: UUID;
|
||||
};
|
||||
|
||||
const TabCloseButton: React.VoidFunctionComponent<TabCloseButtonProps> = ({ uuid }) => {
|
||||
const TabCloseButton: React.FunctionComponent<TabCloseButtonProps> = ({ uuid }) => {
|
||||
const fileName = useFileStoragePath(uuid) ?? '';
|
||||
const dispatch = useDispatch();
|
||||
const i18n = useI18n();
|
||||
@@ -235,7 +240,7 @@ type EditorTabsProps = Readonly<{
|
||||
onChange?: () => void;
|
||||
}>;
|
||||
|
||||
const EditorTabs: React.VoidFunctionComponent<EditorTabsProps> = ({ onChange }) => {
|
||||
const EditorTabs: React.FunctionComponent<EditorTabsProps> = ({ onChange }) => {
|
||||
const openFiles = useSelector((s) => s.editor.openFileUuids);
|
||||
const activeFile = useSelector((s) => s.editor.activeFileUuid);
|
||||
const dispatch = useDispatch();
|
||||
@@ -369,7 +374,7 @@ function useEditorAction(
|
||||
);
|
||||
}
|
||||
|
||||
const Editor: React.VFC = () => {
|
||||
const Editor: React.FunctionComponent = () => {
|
||||
const dispatch = useDispatch();
|
||||
|
||||
const [editor, setEditor] = useState<monaco.editor.IStandaloneCodeEditor>();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
// welcome screen that is shown when no editor is open.
|
||||
|
||||
@@ -60,7 +60,7 @@ type WelcomeProps = {
|
||||
isVisible: boolean;
|
||||
};
|
||||
|
||||
const Welcome: React.VoidFunctionComponent<WelcomeProps> = ({ isVisible }) => {
|
||||
const Welcome: React.FunctionComponent<WelcomeProps> = ({ isVisible }) => {
|
||||
const stateRef = useRef<State>({
|
||||
rotation: defaultRotation,
|
||||
rotationSpeed: 0,
|
||||
|
||||
@@ -71,7 +71,7 @@ type ActionButtonProps = {
|
||||
onClick: () => void;
|
||||
};
|
||||
|
||||
const ActionButton: React.VoidFunctionComponent<ActionButtonProps> = ({
|
||||
const ActionButton: React.FunctionComponent<ActionButtonProps> = ({
|
||||
id,
|
||||
icon,
|
||||
tooltip,
|
||||
@@ -109,7 +109,7 @@ type ActionButtonGroupProps = {
|
||||
item: TreeItem;
|
||||
};
|
||||
|
||||
const FileActionButtonGroup: React.VoidFunctionComponent<ActionButtonGroupProps> = ({
|
||||
const FileActionButtonGroup: React.FunctionComponent<ActionButtonGroupProps> = ({
|
||||
item,
|
||||
}) => {
|
||||
const i18n = useI18n();
|
||||
@@ -174,7 +174,7 @@ const FileActionButtonGroup: React.VoidFunctionComponent<ActionButtonGroupProps>
|
||||
const archiveButtonId = 'pb-explorer-archive-button';
|
||||
const newButtonId = 'pb-explorer-add-button';
|
||||
|
||||
const Header: React.VoidFunctionComponent = () => {
|
||||
const Header: React.FunctionComponent = () => {
|
||||
const exportButtonId = useId();
|
||||
const dispatch = useDispatch();
|
||||
const i18n = useI18n();
|
||||
@@ -263,7 +263,7 @@ function useLiveDescriptors(): LiveDescriptors {
|
||||
* REVISIT: maybe there will be a better way to do this some day:
|
||||
* https://github.com/lukasbach/react-complex-tree/issues/47
|
||||
*/
|
||||
const TreeContainer: React.VoidFunctionComponent<RenderProps<'renderTreeContainer'>> = (
|
||||
const TreeContainer: React.FunctionComponent<RenderProps<'renderTreeContainer'>> = (
|
||||
props,
|
||||
) => {
|
||||
const dispatch = useDispatch();
|
||||
@@ -352,7 +352,7 @@ const TreeContainer: React.VoidFunctionComponent<RenderProps<'renderTreeContaine
|
||||
return <div onKeyDown={handleKeyDown}>{renderers.renderTreeContainer(props)}</div>;
|
||||
};
|
||||
|
||||
const FileTree: React.VoidFunctionComponent = () => {
|
||||
const FileTree: React.FunctionComponent = () => {
|
||||
const [focusedItem, setFocusedItem] = useState<TreeItemIndex>();
|
||||
const files = useFileStorageMetadata();
|
||||
const liveDescriptors = useLiveDescriptors();
|
||||
@@ -447,7 +447,7 @@ const FileTree: React.VoidFunctionComponent = () => {
|
||||
);
|
||||
};
|
||||
|
||||
const Explorer: React.VFC = () => {
|
||||
const Explorer: React.FunctionComponent = () => {
|
||||
return (
|
||||
<div className="pb-explorer">
|
||||
<Header />
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Intent } from '@blueprintjs/core';
|
||||
import React from 'react';
|
||||
@@ -10,9 +10,7 @@ type FileInUseAlertProps = {
|
||||
fileName: string;
|
||||
};
|
||||
|
||||
const FileInUseAlert: React.VoidFunctionComponent<FileInUseAlertProps> = ({
|
||||
fileName,
|
||||
}) => {
|
||||
const FileInUseAlert: React.FunctionComponent<FileInUseAlertProps> = ({ fileName }) => {
|
||||
const i18n = useI18n();
|
||||
return <>{i18n.translate('fileInUse.message', { fileName })}</>;
|
||||
};
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Icon, Intent } from '@blueprintjs/core';
|
||||
import React from 'react';
|
||||
import type { CreateToast } from '../../toasterTypes';
|
||||
import { useI18n } from './i18n';
|
||||
|
||||
const NoFilesToBackup: React.VoidFunctionComponent = () => {
|
||||
const NoFilesToBackup: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
return (
|
||||
<>
|
||||
|
||||
@@ -7,7 +7,7 @@ import { pythonFileExtension } from '../../pybricksMicropython/lib';
|
||||
import type { CreateToast } from '../../toasterTypes';
|
||||
import { useI18n } from './i18n';
|
||||
|
||||
const NoPyFiles: React.VoidFunctionComponent = () => {
|
||||
const NoPyFiles: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
return (
|
||||
<>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Alert, Classes, Intent } from '@blueprintjs/core';
|
||||
import React, { useCallback } from 'react';
|
||||
@@ -8,7 +8,7 @@ import { useSelector } from '../../reducers';
|
||||
import { deleteFileAlertDidAccept, deleteFileAlertDidCancel } from './actions';
|
||||
import { useI18n } from './i18n';
|
||||
|
||||
const DeleteFileAlert: React.VoidFunctionComponent = () => {
|
||||
const DeleteFileAlert: React.FunctionComponent = () => {
|
||||
const { isOpen, fileName } = useSelector((s) => s.explorer.deleteFileAlert);
|
||||
const dispatch = useDispatch();
|
||||
const i18n = useI18n();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Button, Classes, Dialog } from '@blueprintjs/core';
|
||||
import React, { useCallback, useRef, useState } from 'react';
|
||||
@@ -14,7 +14,7 @@ import FileNameFormGroup from '../fileNameFormGroup/FileNameFormGroup';
|
||||
import { duplicateFileDialogDidAccept, duplicateFileDialogDidCancel } from './actions';
|
||||
import { useI18n } from './i18n';
|
||||
|
||||
const DuplicateFileDialog: React.VFC = () => {
|
||||
const DuplicateFileDialog: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
const dispatch = useDispatch();
|
||||
const isOpen = useSelector((s) => s.explorer.duplicateFileDialog.isOpen);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Classes, Code, FormGroup, InputGroup, Intent, Tag } from '@blueprintjs/core';
|
||||
import type { AriaButtonProps } from '@react-types/button';
|
||||
@@ -39,7 +39,7 @@ function replaceInvalidCharacters(value: string): string {
|
||||
|
||||
type FixItButtonProps = Pick<AriaButtonProps<'a'>, 'onPress'>;
|
||||
|
||||
const FixItButton: React.VoidFunctionComponent<FixItButtonProps> = (props) => {
|
||||
const FixItButton: React.FunctionComponent<FixItButtonProps> = (props) => {
|
||||
const i18n = useI18n();
|
||||
const ref = useRef<HTMLAnchorElement>(null);
|
||||
|
||||
@@ -66,7 +66,7 @@ type FileNameHelpTextProps = {
|
||||
/**
|
||||
* Component that maps FileNameValidationResult to help message to display to user.
|
||||
*/
|
||||
const FileNameHelpText: React.VoidFunctionComponent<FileNameHelpTextProps> = ({
|
||||
const FileNameHelpText: React.FunctionComponent<FileNameHelpTextProps> = ({
|
||||
fileName,
|
||||
validation,
|
||||
onFix,
|
||||
@@ -145,7 +145,7 @@ type FileNameFormGroupProps = {
|
||||
/**
|
||||
* Component used to get a valid new file name.
|
||||
*/
|
||||
const FileNameFormGroup: React.VoidFunctionComponent<FileNameFormGroupProps> = ({
|
||||
const FileNameFormGroup: React.FunctionComponent<FileNameFormGroupProps> = ({
|
||||
fileName,
|
||||
fileExtension,
|
||||
validationResult,
|
||||
|
||||
@@ -27,7 +27,7 @@ import FileNameFormGroup from '../fileNameFormGroup/FileNameFormGroup';
|
||||
import { newFileWizardDidAccept, newFileWizardDidCancel } from './actions';
|
||||
import { useI18n } from './i18n';
|
||||
|
||||
const NewFileWizard: React.VoidFunctionComponent = () => {
|
||||
const NewFileWizard: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
const dispatch = useDispatch();
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Button, Classes, Dialog } from '@blueprintjs/core';
|
||||
import React, { useCallback, useRef, useState } from 'react';
|
||||
@@ -14,7 +14,7 @@ import FileNameFormGroup from '../fileNameFormGroup/FileNameFormGroup';
|
||||
import { renameFileDialogDidAccept, renameFileDialogDidCancel } from './actions';
|
||||
import { useI18n } from './i18n';
|
||||
|
||||
const RenameFileDialog: React.VFC = () => {
|
||||
const RenameFileDialog: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
const dispatch = useDispatch();
|
||||
const isOpen = useSelector((s) => s.explorer.renameFileDialog.isOpen);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Button, Classes, Dialog } from '@blueprintjs/core';
|
||||
import React, { useCallback, useRef, useState } from 'react';
|
||||
@@ -15,7 +15,7 @@ import FileNameFormGroup from '../fileNameFormGroup/FileNameFormGroup';
|
||||
import { renameImportDialogDidAccept, renameImportDialogDidCancel } from './actions';
|
||||
import { useI18n } from './i18n';
|
||||
|
||||
const RenameImportDialog: React.VFC = () => {
|
||||
const RenameImportDialog: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
const dispatch = useDispatch();
|
||||
const isOpen = useSelector((s) => s.explorer.renameImportDialog.isOpen);
|
||||
|
||||
@@ -13,7 +13,7 @@ import {
|
||||
} from './actions';
|
||||
import { useI18n } from './i18n';
|
||||
|
||||
const RenameImportDialog: React.VFC = () => {
|
||||
const RenameImportDialog: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
const dispatch = useDispatch();
|
||||
const isOpen = useSelector((s) => s.explorer.replaceImportDialog.isOpen);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Button, Intent } from '@blueprintjs/core';
|
||||
import React from 'react';
|
||||
@@ -10,7 +10,7 @@ type DfuErrorProps = {
|
||||
onTryAgain: () => void;
|
||||
};
|
||||
|
||||
const DfuError: React.VoidFunctionComponent<DfuErrorProps> = ({ onTryAgain }) => {
|
||||
const DfuError: React.FunctionComponent<DfuErrorProps> = ({ onTryAgain }) => {
|
||||
const i18n = useI18n();
|
||||
return (
|
||||
<>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Intent, ProgressBar } from '@blueprintjs/core';
|
||||
import React from 'react';
|
||||
@@ -11,7 +11,7 @@ type FlashProgressProps = {
|
||||
progress: number | undefined;
|
||||
};
|
||||
|
||||
const FlashProgress: React.VoidFunctionComponent<FlashProgressProps> = ({
|
||||
const FlashProgress: React.FunctionComponent<FlashProgressProps> = ({
|
||||
action,
|
||||
progress,
|
||||
}) => {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { AnchorButton, Button, Intent } from '@blueprintjs/core';
|
||||
import React from 'react';
|
||||
@@ -16,7 +16,7 @@ type NoDfuHubProps = {
|
||||
onInstallWindowsDriver: () => void;
|
||||
};
|
||||
|
||||
const NoDfuHub: React.VoidFunctionComponent<NoDfuHubProps> = ({
|
||||
const NoDfuHub: React.FunctionComponent<NoDfuHubProps> = ({
|
||||
onInstallWindowsDriver,
|
||||
}) => {
|
||||
const i18n = useI18n();
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Intent } from '@blueprintjs/core';
|
||||
import React from 'react';
|
||||
import type { CreateToast } from '../../toasterTypes';
|
||||
import { useI18n } from './i18n';
|
||||
|
||||
const NoDfuInterface: React.VoidFunctionComponent = () => {
|
||||
const NoDfuInterface: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
return <p>{i18n.translate('noDfuInterface.message')}</p>;
|
||||
};
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Intent } from '@blueprintjs/core';
|
||||
import React from 'react';
|
||||
import type { CreateToast } from '../../toasterTypes';
|
||||
import { useI18n } from './i18n';
|
||||
|
||||
const NoWebUsb: React.VoidFunctionComponent = () => {
|
||||
const NoWebUsb: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
return (
|
||||
<>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Intent } from '@blueprintjs/core';
|
||||
import React from 'react';
|
||||
import type { CreateToast } from '../../toasterTypes';
|
||||
import { useI18n } from './i18n';
|
||||
|
||||
const ReleaseButton: React.VoidFunctionComponent = () => {
|
||||
const ReleaseButton: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
return <p>{i18n.translate('releaseButton.message')}</p>;
|
||||
};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import './bootloaderInstructions.scss';
|
||||
import { Callout, Intent } from '@blueprintjs/core';
|
||||
@@ -105,9 +105,11 @@ function countValidChildren(children: React.ReactNode) {
|
||||
* Provides customized instructions on how to enter bootloader mode based
|
||||
* on the hub type.
|
||||
*/
|
||||
const BootloaderInstructions: React.VoidFunctionComponent<
|
||||
BootloaderInstructionsProps
|
||||
> = ({ hubType, recovery, flashButtonText }) => {
|
||||
const BootloaderInstructions: React.FunctionComponent<BootloaderInstructionsProps> = ({
|
||||
hubType,
|
||||
recovery,
|
||||
flashButtonText,
|
||||
}) => {
|
||||
const dispatch = useDispatch();
|
||||
const i18n = useI18n();
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import './dfuWindowsDriverInstallDialog.scss';
|
||||
import {
|
||||
@@ -90,7 +90,7 @@ type ScreenshotProps = {
|
||||
url: URL;
|
||||
};
|
||||
|
||||
const Screenshot: React.VoidFunctionComponent<ScreenshotProps> = ({ url }) => {
|
||||
const Screenshot: React.FunctionComponent<ScreenshotProps> = ({ url }) => {
|
||||
return (
|
||||
<Card elevation={Elevation.FOUR}>
|
||||
<img src={url.toString()} alt="Screenshot" width={673} height={523} />
|
||||
@@ -102,7 +102,7 @@ type HubTypeProps = {
|
||||
hub: Hub;
|
||||
};
|
||||
|
||||
const Step1: React.VoidFunctionComponent = () => {
|
||||
const Step1: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
|
||||
return (
|
||||
@@ -123,7 +123,7 @@ const Step1: React.VoidFunctionComponent = () => {
|
||||
);
|
||||
};
|
||||
|
||||
const Step2: React.VoidFunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
const Step2: React.FunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
const i18n = useI18n();
|
||||
|
||||
return (
|
||||
@@ -164,7 +164,7 @@ const Step2: React.VoidFunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
);
|
||||
};
|
||||
|
||||
const Step3: React.VoidFunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
const Step3: React.FunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
const i18n = useI18n();
|
||||
|
||||
return (
|
||||
@@ -201,7 +201,7 @@ const Step3: React.VoidFunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
);
|
||||
};
|
||||
|
||||
const Step4: React.VoidFunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
const Step4: React.FunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
const i18n = useI18n();
|
||||
|
||||
return (
|
||||
@@ -228,7 +228,7 @@ const Step4: React.VoidFunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
);
|
||||
};
|
||||
|
||||
const Step5: React.VoidFunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
const Step5: React.FunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
const i18n = useI18n();
|
||||
|
||||
return (
|
||||
@@ -252,7 +252,7 @@ const Step5: React.VoidFunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
);
|
||||
};
|
||||
|
||||
const Step6: React.VoidFunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
const Step6: React.FunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
const i18n = useI18n();
|
||||
|
||||
return (
|
||||
@@ -277,7 +277,7 @@ const Step6: React.VoidFunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
);
|
||||
};
|
||||
|
||||
const Step7: React.VoidFunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
const Step7: React.FunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
const i18n = useI18n();
|
||||
|
||||
return (
|
||||
@@ -304,7 +304,7 @@ const Step7: React.VoidFunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
);
|
||||
};
|
||||
|
||||
const Step8: React.VoidFunctionComponent = () => {
|
||||
const Step8: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
|
||||
return (
|
||||
@@ -322,7 +322,7 @@ const Step8: React.VoidFunctionComponent = () => {
|
||||
);
|
||||
};
|
||||
|
||||
const Step9: React.VoidFunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
const Step9: React.FunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
const i18n = useI18n();
|
||||
|
||||
return (
|
||||
@@ -346,7 +346,7 @@ const Step9: React.VoidFunctionComponent<HubTypeProps> = ({ hub }) => {
|
||||
);
|
||||
};
|
||||
|
||||
const DfuWindowsDriverInstallDialog: React.VoidFunctionComponent = () => {
|
||||
const DfuWindowsDriverInstallDialog: React.FunctionComponent = () => {
|
||||
const [hub] = useHubPickerSelectedHub();
|
||||
const { isOpen } = useSelector((s) => s.firmware.dfuWindowsDriverInstallDialog);
|
||||
const dispatch = useDispatch();
|
||||
|
||||
@@ -93,7 +93,7 @@ function getHubTypeNameFromMetadata(metadata: FirmwareMetadata | undefined): str
|
||||
}
|
||||
}
|
||||
|
||||
const UnsupportedHubs: React.VoidFunctionComponent = () => {
|
||||
const UnsupportedHubs: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
|
||||
return (
|
||||
@@ -180,7 +180,7 @@ type SelectHubPanelProps = {
|
||||
onCustomFirmwareZip: (firmwareZip: File | undefined) => void;
|
||||
};
|
||||
|
||||
const SelectHubPanel: React.VoidFunctionComponent<SelectHubPanelProps> = ({
|
||||
const SelectHubPanel: React.FunctionComponent<SelectHubPanelProps> = ({
|
||||
isCustomFirmwareRequested,
|
||||
customFirmwareData,
|
||||
onCustomFirmwareZip,
|
||||
@@ -335,7 +335,7 @@ type AcceptLicensePanelProps = {
|
||||
onLicenseAcceptedChanged: (accepted: boolean) => void;
|
||||
};
|
||||
|
||||
const AcceptLicensePanel: React.VoidFunctionComponent<AcceptLicensePanelProps> = ({
|
||||
const AcceptLicensePanel: React.FunctionComponent<AcceptLicensePanelProps> = ({
|
||||
licenseAccepted,
|
||||
firmwareData,
|
||||
firmwareError,
|
||||
@@ -386,7 +386,7 @@ type SelectOptionsPanelProps = {
|
||||
onChangeHubName(hubName: string): void;
|
||||
};
|
||||
|
||||
const ConfigureOptionsPanel: React.VoidFunctionComponent<SelectOptionsPanelProps> = ({
|
||||
const ConfigureOptionsPanel: React.FunctionComponent<SelectOptionsPanelProps> = ({
|
||||
hubName,
|
||||
metadata,
|
||||
onChangeHubName,
|
||||
@@ -432,7 +432,7 @@ type BootloaderModePanelProps = {
|
||||
hubType: Hub;
|
||||
};
|
||||
|
||||
const BootloaderModePanel: React.VoidFunctionComponent<BootloaderModePanelProps> = ({
|
||||
const BootloaderModePanel: React.FunctionComponent<BootloaderModePanelProps> = ({
|
||||
hubType,
|
||||
}) => {
|
||||
const i18n = useI18n();
|
||||
@@ -447,7 +447,7 @@ const BootloaderModePanel: React.VoidFunctionComponent<BootloaderModePanelProps>
|
||||
);
|
||||
};
|
||||
|
||||
export const InstallPybricksDialog: React.VoidFunctionComponent = () => {
|
||||
export const InstallPybricksDialog: React.FunctionComponent = () => {
|
||||
const { isOpen } = useSelector((s) => s.firmware.installPybricksDialog);
|
||||
const dispatch = useDispatch();
|
||||
const [hubName, setHubName] = useState('');
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import {
|
||||
Button,
|
||||
@@ -25,7 +25,7 @@ import BootloaderInstructions from '../bootloaderInstructions/BootloaderInstruct
|
||||
import { firmwareRestoreOfficialDialogHide } from './actions';
|
||||
import { useI18n } from './i18n';
|
||||
|
||||
const SelectHubPanel: React.VoidFunctionComponent = () => {
|
||||
const SelectHubPanel: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
|
||||
return (
|
||||
@@ -42,7 +42,7 @@ const SelectHubPanel: React.VoidFunctionComponent = () => {
|
||||
);
|
||||
};
|
||||
|
||||
const RestoreFirmwarePanel: React.VoidFunctionComponent = () => {
|
||||
const RestoreFirmwarePanel: React.FunctionComponent = () => {
|
||||
const [hubType] = useHubPickerSelectedHub();
|
||||
const dispatch = useDispatch();
|
||||
const i18n = useI18n();
|
||||
@@ -84,7 +84,7 @@ const RestoreFirmwarePanel: React.VoidFunctionComponent = () => {
|
||||
);
|
||||
};
|
||||
|
||||
const RestoreOfficialDialog: React.VoidFunctionComponent = () => {
|
||||
const RestoreOfficialDialog: React.FunctionComponent = () => {
|
||||
const { isOpen } = useSelector((s) => s.firmware.restoreOfficialDialog);
|
||||
const dispatch = useDispatch();
|
||||
const i18n = useI18n();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Intent } from '@blueprintjs/core';
|
||||
import React from 'react';
|
||||
@@ -13,7 +13,7 @@ type UserProgramSizeProps = {
|
||||
max: number;
|
||||
};
|
||||
|
||||
const UserProgramSize: React.VoidFunctionComponent<UserProgramSizeProps> = ({
|
||||
const UserProgramSize: React.FunctionComponent<UserProgramSizeProps> = ({
|
||||
actual,
|
||||
max,
|
||||
}) => {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2021-2022 The Pybricks Authors
|
||||
// Copyright (c) 2021-2023 The Pybricks Authors
|
||||
|
||||
// The license dialog
|
||||
|
||||
@@ -44,7 +44,7 @@ type ListItemProps = {
|
||||
*
|
||||
* Style uses blueprints tree styles since there is no list style.
|
||||
*/
|
||||
const ListItem: React.VoidFunctionComponent<ListItemProps> = ({ item, state }) => {
|
||||
const ListItem: React.FunctionComponent<ListItemProps> = ({ item, state }) => {
|
||||
const ref = React.useRef<HTMLLIElement>(null);
|
||||
const { optionProps, isSelected } = useOption({ key: item.key }, state, ref);
|
||||
|
||||
@@ -105,7 +105,7 @@ type ListBoxProps = ListProps<LicenseInfo>;
|
||||
*
|
||||
* Style uses blueprints tree styles since there is no list style.
|
||||
*/
|
||||
const ListBox: React.VoidFunctionComponent<ListBoxProps> = (props) => {
|
||||
const ListBox: React.FunctionComponent<ListBoxProps> = (props) => {
|
||||
// Create state based on the incoming props
|
||||
const state = useListState(props);
|
||||
|
||||
@@ -133,7 +133,7 @@ type LicenseListPanelProps = {
|
||||
onItemSelected(info?: LicenseInfo): void;
|
||||
};
|
||||
|
||||
const LicenseListPanel: React.VoidFunctionComponent<LicenseListPanelProps> = ({
|
||||
const LicenseListPanel: React.FunctionComponent<LicenseListPanelProps> = ({
|
||||
onItemSelected,
|
||||
}) => {
|
||||
const i18n = useI18n();
|
||||
@@ -228,7 +228,7 @@ type LicenseDialogProps = {
|
||||
onClose(): void;
|
||||
};
|
||||
|
||||
const LicenseDialog: React.VoidFunctionComponent<LicenseDialogProps> = ({
|
||||
const LicenseDialog: React.FunctionComponent<LicenseDialogProps> = ({
|
||||
isOpen,
|
||||
onClose,
|
||||
}) => {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Button, Intent } from '@blueprintjs/core';
|
||||
import React, { useMemo } from 'react';
|
||||
@@ -13,7 +13,7 @@ type CompilerErrorProps = {
|
||||
error: string[];
|
||||
};
|
||||
|
||||
const CompilerError: React.VoidFunctionComponent<CompilerErrorProps> = ({ error }) => {
|
||||
const CompilerError: React.FunctionComponent<CompilerErrorProps> = ({ error }) => {
|
||||
const dispatch = useDispatch();
|
||||
const i18n = useI18n();
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2021-2022 The Pybricks Authors
|
||||
// Copyright (c) 2021-2023 The Pybricks Authors
|
||||
|
||||
// provides translation for notification text
|
||||
|
||||
@@ -12,7 +12,7 @@ type NotificationActionProps = {
|
||||
replacements?: Replacements;
|
||||
};
|
||||
|
||||
const NotificationAction: React.VoidFunctionComponent<NotificationActionProps> = ({
|
||||
const NotificationAction: React.FunctionComponent<NotificationActionProps> = ({
|
||||
messageId,
|
||||
replacements,
|
||||
}) => {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2021-2022 The Pybricks Authors
|
||||
// Copyright (c) 2021-2023 The Pybricks Authors
|
||||
|
||||
// provides translation for notification text
|
||||
|
||||
@@ -12,7 +12,7 @@ type NotificationMessageProps = {
|
||||
replacements?: Replacements;
|
||||
};
|
||||
|
||||
const NotificationMessage: React.VoidFunctionComponent<NotificationMessageProps> = ({
|
||||
const NotificationMessage: React.FunctionComponent<NotificationMessageProps> = ({
|
||||
messageId,
|
||||
replacements,
|
||||
}) => {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2021-2022 The Pybricks Authors
|
||||
// Copyright (c) 2021-2023 The Pybricks Authors
|
||||
|
||||
import {
|
||||
AnchorButton,
|
||||
@@ -32,7 +32,7 @@ import { isMacOS } from '../utils/os';
|
||||
import { useI18n } from './i18n';
|
||||
import './settings.scss';
|
||||
|
||||
const Settings: React.VoidFunctionComponent = () => {
|
||||
const Settings: React.FunctionComponent = () => {
|
||||
const [isAboutDialogOpen, setIsAboutDialogOpen] = useState(false);
|
||||
const { isDarkMode, setTernaryDarkMode } = useTernaryDarkMode();
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ import ethIcon from './eth_logo.svg';
|
||||
import { useI18n } from './i18n';
|
||||
import paypalIcon from './paypal_logo.svg';
|
||||
|
||||
const SponsorDialog: React.VoidFunctionComponent = () => {
|
||||
const SponsorDialog: React.FunctionComponent = () => {
|
||||
const { showDialog } = useSelector((s) => s.sponsor);
|
||||
const dispatch = useDispatch();
|
||||
const i18n = useI18n();
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Intent } from '@blueprintjs/core';
|
||||
import React from 'react';
|
||||
import type { CreateToast } from '../../toasterTypes';
|
||||
import { useI18n } from './i18n';
|
||||
|
||||
const AddressCopied: React.VoidFunctionComponent = () => {
|
||||
const AddressCopied: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
return <p>{i18n.translate('addressCopied.message')}</p>;
|
||||
};
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2020-2022 The Pybricks Authors
|
||||
// Copyright (c) 2020-2023 The Pybricks Authors
|
||||
|
||||
import {
|
||||
Button,
|
||||
@@ -25,7 +25,7 @@ const commonPopoverProps: Partial<Popover2Props> = {
|
||||
placement: 'top',
|
||||
};
|
||||
|
||||
const CompletionEngineIndicator: React.VoidFunctionComponent = () => {
|
||||
const CompletionEngineIndicator: React.FunctionComponent = () => {
|
||||
const { status } = useSelector((s) => s.editor.codeCompletion);
|
||||
const i18n = useI18n();
|
||||
|
||||
@@ -69,7 +69,7 @@ const CompletionEngineIndicator: React.VoidFunctionComponent = () => {
|
||||
);
|
||||
};
|
||||
|
||||
const HubInfoButton: React.VoidFunctionComponent = () => {
|
||||
const HubInfoButton: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
const deviceName = useSelector((s) => s.ble.deviceName);
|
||||
const deviceType = useSelector((s) => s.ble.deviceType);
|
||||
@@ -110,7 +110,7 @@ const HubInfoButton: React.VoidFunctionComponent = () => {
|
||||
);
|
||||
};
|
||||
|
||||
const BatteryIndicator: React.VoidFunctionComponent = () => {
|
||||
const BatteryIndicator: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
const charging = useSelector((s) => s.ble.deviceBatteryCharging);
|
||||
const lowBatteryWarning = useSelector((s) => s.ble.deviceLowBatteryWarning);
|
||||
@@ -142,7 +142,7 @@ const BatteryIndicator: React.VoidFunctionComponent = () => {
|
||||
);
|
||||
};
|
||||
|
||||
const StatusBar: React.VFC = (_props) => {
|
||||
const StatusBar: React.FunctionComponent = () => {
|
||||
const connection = useSelector((s) => s.ble.connection);
|
||||
|
||||
return (
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2020-2022 The Pybricks Authors
|
||||
// Copyright (c) 2020-2023 The Pybricks Authors
|
||||
|
||||
import 'xterm/css/xterm.css';
|
||||
import './terminal.scss';
|
||||
@@ -102,7 +102,7 @@ function createContextMenu(
|
||||
return ContextMenu;
|
||||
}
|
||||
|
||||
const Terminal: React.FC = (_props) => {
|
||||
const Terminal: React.FunctionComponent = () => {
|
||||
const { xterm, fitAddon } = useMemo(createXTerm, [createXTerm]);
|
||||
const terminalRef = useRef<HTMLDivElement>(null);
|
||||
const { isDarkMode } = useTernaryDarkMode();
|
||||
|
||||
@@ -39,7 +39,7 @@ export interface ActionButtonProps {
|
||||
readonly onAction: () => void;
|
||||
}
|
||||
|
||||
const ActionButton: React.VoidFunctionComponent<ActionButtonProps> = ({
|
||||
const ActionButton: React.FunctionComponent<ActionButtonProps> = ({
|
||||
id,
|
||||
label,
|
||||
keyboardShortcut,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2020-2022 The Pybricks Authors
|
||||
// Copyright (c) 2020-2023 The Pybricks Authors
|
||||
|
||||
import { ButtonGroup } from '@blueprintjs/core';
|
||||
import React from 'react';
|
||||
@@ -19,7 +19,7 @@ const bluetoothButtonId = 'pb-toolbar-bluetooth-button';
|
||||
const runButtonId = 'pb-toolbar-run-button';
|
||||
const sponsorButtonId = 'pb-toolbar-sponsor-button';
|
||||
|
||||
const Toolbar: React.VFC = () => {
|
||||
const Toolbar: React.FunctionComponent = () => {
|
||||
const i18n = useI18n();
|
||||
const stopButtonId = useId();
|
||||
const replButtonId = useId();
|
||||
|
||||
@@ -14,7 +14,7 @@ import { useI18n } from './i18n';
|
||||
|
||||
type BluetoothButtonProps = Pick<ActionButtonProps, 'id'>;
|
||||
|
||||
const BluetoothButton: React.VoidFunctionComponent<BluetoothButtonProps> = ({ id }) => {
|
||||
const BluetoothButton: React.FunctionComponent<BluetoothButtonProps> = ({ id }) => {
|
||||
const bootloaderConnection = useSelector((s) => s.bootloader.connection);
|
||||
const bleConnection = useSelector((s) => s.ble.connection);
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ import icon from './icon.svg';
|
||||
|
||||
type ReplButtonProps = Pick<ActionButtonProps, 'id'>;
|
||||
|
||||
const ReplButton: React.VoidFunctionComponent<ReplButtonProps> = ({ id }) => {
|
||||
const ReplButton: React.FunctionComponent<ReplButtonProps> = ({ id }) => {
|
||||
const { runtime, useLegacyDownload, hasRepl } = useSelector((s) => s.hub);
|
||||
const i18n = useI18n();
|
||||
const dispatch = useDispatch();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2020-2022 The Pybricks Authors
|
||||
// Copyright (c) 2020-2023 The Pybricks Authors
|
||||
|
||||
import React from 'react';
|
||||
import { useDispatch } from 'react-redux';
|
||||
@@ -12,7 +12,7 @@ import icon from './icon.svg';
|
||||
|
||||
type RunButtonProps = Pick<ActionButtonProps, 'id'>;
|
||||
|
||||
const RunButton: React.VoidFunctionComponent<RunButtonProps> = ({ id }) => {
|
||||
const RunButton: React.FunctionComponent<RunButtonProps> = ({ id }) => {
|
||||
const { downloadProgress, preferredFileFormat, runtime, useLegacyDownload } =
|
||||
useSelector((s) => s.hub);
|
||||
const activeFile = useSelector((s) => s.editor.activeFileUuid);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2020-2022 The Pybricks Authors
|
||||
// Copyright (c) 2020-2023 The Pybricks Authors
|
||||
|
||||
import React from 'react';
|
||||
import { useDispatch } from 'react-redux';
|
||||
@@ -10,7 +10,7 @@ import icon from './icon.svg';
|
||||
|
||||
type SponsorButtonProps = Pick<ActionButtonProps, 'id'>;
|
||||
|
||||
const SponsorButton: React.VoidFunctionComponent<SponsorButtonProps> = ({ id }) => {
|
||||
const SponsorButton: React.FunctionComponent<SponsorButtonProps> = ({ id }) => {
|
||||
const i18n = useI18n();
|
||||
const dispatch = useDispatch();
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ import icon from './icon.svg';
|
||||
|
||||
type StopButtonProps = Pick<ActionButtonProps, 'id'>;
|
||||
|
||||
const StopButton: React.VoidFunctionComponent<StopButtonProps> = ({ id }) => {
|
||||
const StopButton: React.FunctionComponent<StopButtonProps> = ({ id }) => {
|
||||
const runtime = useSelector((s) => s.hub.runtime);
|
||||
const keyboardShortcut = 'F6';
|
||||
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
import { Colors, Icon } from '@blueprintjs/core';
|
||||
import React, { useCallback, useMemo, useState } from 'react';
|
||||
@@ -107,7 +107,7 @@ const DownloadAndRunStep = React.memo(function DownloadAndRunStep() {
|
||||
);
|
||||
});
|
||||
|
||||
const Tour: React.VoidFunctionComponent = () => {
|
||||
const Tour: React.FunctionComponent = () => {
|
||||
const [selectedActivity, setSelectedActivity] = useActivitiesSelectedActivity();
|
||||
const [showOnStartup, setShowOnStartup] = useLocalStorage(
|
||||
'tour.showOnStartup',
|
||||
|
||||
+11
-13
@@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2022 The Pybricks Authors
|
||||
// Copyright (c) 2022-2023 The Pybricks Authors
|
||||
|
||||
/***/
|
||||
// react-complex-tree renderers for bluetprintjs integration
|
||||
@@ -49,7 +49,7 @@ export type RenderProps<T extends keyof RendererFuncs> = Parameters<
|
||||
RendererFuncs[T]
|
||||
>[0];
|
||||
|
||||
const TreeContainer: React.VoidFunctionComponent<RenderProps<'renderTreeContainer'>> = (
|
||||
const TreeContainer: React.FunctionComponent<RenderProps<'renderTreeContainer'>> = (
|
||||
props,
|
||||
) => {
|
||||
return (
|
||||
@@ -62,9 +62,9 @@ const TreeContainer: React.VoidFunctionComponent<RenderProps<'renderTreeContaine
|
||||
);
|
||||
};
|
||||
|
||||
const ItemsContainer: React.VoidFunctionComponent<
|
||||
RenderProps<'renderTreeContainer'>
|
||||
> = (props) => (
|
||||
const ItemsContainer: React.FunctionComponent<RenderProps<'renderTreeContainer'>> = (
|
||||
props,
|
||||
) => (
|
||||
<ul
|
||||
className={cx(Classes.TREE_NODE_LIST, Classes.TREE_ROOT)}
|
||||
{...props.containerProps}
|
||||
@@ -76,7 +76,7 @@ const ItemsContainer: React.VoidFunctionComponent<
|
||||
</ul>
|
||||
);
|
||||
|
||||
const Item: React.VoidFunctionComponent<RenderProps<'renderItem'>> = (props) => {
|
||||
const Item: React.FunctionComponent<RenderProps<'renderItem'>> = (props) => {
|
||||
const {
|
||||
value: isHover,
|
||||
setTrue: setIsHoverTrue,
|
||||
@@ -129,9 +129,7 @@ const Item: React.VoidFunctionComponent<RenderProps<'renderItem'>> = (props) =>
|
||||
);
|
||||
};
|
||||
|
||||
const ItemArrow: React.VoidFunctionComponent<RenderProps<'renderItemArrow'>> = (
|
||||
props,
|
||||
) => (
|
||||
const ItemArrow: React.FunctionComponent<RenderProps<'renderItemArrow'>> = (props) => (
|
||||
<Icon
|
||||
icon="chevron-right"
|
||||
className={cx(
|
||||
@@ -147,7 +145,7 @@ const ItemArrow: React.VoidFunctionComponent<RenderProps<'renderItemArrow'>> = (
|
||||
/>
|
||||
);
|
||||
|
||||
const ItemTitle: React.VoidFunctionComponent<RenderProps<'renderItemTitle'>> = ({
|
||||
const ItemTitle: React.FunctionComponent<RenderProps<'renderItemTitle'>> = ({
|
||||
title,
|
||||
context,
|
||||
info,
|
||||
@@ -172,7 +170,7 @@ const ItemTitle: React.VoidFunctionComponent<RenderProps<'renderItemTitle'>> = (
|
||||
}
|
||||
};
|
||||
|
||||
const DragBetweenLine: React.VoidFunctionComponent<
|
||||
const DragBetweenLine: React.FunctionComponent<
|
||||
RenderProps<'renderDragBetweenLine'>
|
||||
> = ({ draggingPosition, lineProps }) => (
|
||||
<div
|
||||
@@ -195,7 +193,7 @@ const DragBetweenLine: React.VoidFunctionComponent<
|
||||
/>
|
||||
);
|
||||
|
||||
const RenameInput: React.VoidFunctionComponent<RenderProps<'renderRenameInput'>> = (
|
||||
const RenameInput: React.FunctionComponent<RenderProps<'renderRenameInput'>> = (
|
||||
props,
|
||||
) => (
|
||||
<form {...props.formProps} style={{ display: 'contents' }}>
|
||||
@@ -218,7 +216,7 @@ const RenameInput: React.VoidFunctionComponent<RenderProps<'renderRenameInput'>>
|
||||
</form>
|
||||
);
|
||||
|
||||
const SearchInput: React.VoidFunctionComponent<RenderProps<'renderSearchInput'>> = (
|
||||
const SearchInput: React.FunctionComponent<RenderProps<'renderSearchInput'>> = (
|
||||
props,
|
||||
) => {
|
||||
const { ref, defaultValue, value, ...inputProps } = props.inputProps;
|
||||
|
||||
@@ -2644,13 +2644,13 @@ __metadata:
|
||||
"@svgr/webpack": ^8.0.1
|
||||
"@testing-library/dom": ^9.3.0
|
||||
"@testing-library/jest-dom": ^5.16.5
|
||||
"@testing-library/react": ^12.1.5
|
||||
"@testing-library/react": ^14.0.0
|
||||
"@testing-library/user-event": ^14.4.3
|
||||
"@types/file-saver": ^2.0.5
|
||||
"@types/jest": ^29.5.1
|
||||
"@types/node": ^16.11.7
|
||||
"@types/react": ^16.14.34
|
||||
"@types/react-dom": ^16.9.17
|
||||
"@types/react": ^18.2.6
|
||||
"@types/react-dom": ^18.2.4
|
||||
"@types/react-splitter-layout": ^3.0.2
|
||||
"@types/redux-logger": ^3.0.9
|
||||
"@types/semver": ^7.5.0
|
||||
@@ -2719,12 +2719,12 @@ __metadata:
|
||||
prompts: ^2.4.2
|
||||
prop-types: ^15.8.1
|
||||
pyodide: 0.23.2
|
||||
react: ^16.14.0
|
||||
react: ^18.2.0
|
||||
react-app-polyfill: ^3.0.0
|
||||
react-aria: ^3.24.0
|
||||
react-complex-tree: ^2.1.4
|
||||
react-dev-utils: ^12.0.1
|
||||
react-dom: ^16.14.0
|
||||
react-dom: ^18.2.0
|
||||
react-dropzone: ^14.2.3
|
||||
react-joyride: ^2.5.4
|
||||
react-popper: ^2.3.0
|
||||
@@ -4547,23 +4547,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@testing-library/dom@npm:^8.0.0":
|
||||
version: 8.20.0
|
||||
resolution: "@testing-library/dom@npm:8.20.0"
|
||||
dependencies:
|
||||
"@babel/code-frame": ^7.10.4
|
||||
"@babel/runtime": ^7.12.5
|
||||
"@types/aria-query": ^5.0.1
|
||||
aria-query: ^5.0.0
|
||||
chalk: ^4.1.0
|
||||
dom-accessibility-api: ^0.5.9
|
||||
lz-string: ^1.4.4
|
||||
pretty-format: ^27.0.2
|
||||
checksum: 1e599129a2fe91959ce80900a0a4897232b89e2a8e22c1f5950c36d39c97629ea86b4986b60b173b5525a05de33fde1e35836ea597b03de78cc51b122835c6f0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@testing-library/dom@npm:^9.3.0":
|
||||
"@testing-library/dom@npm:^9.0.0, @testing-library/dom@npm:^9.3.0":
|
||||
version: 9.3.0
|
||||
resolution: "@testing-library/dom@npm:9.3.0"
|
||||
dependencies:
|
||||
@@ -4596,17 +4580,17 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@testing-library/react@npm:^12.1.5":
|
||||
version: 12.1.5
|
||||
resolution: "@testing-library/react@npm:12.1.5"
|
||||
"@testing-library/react@npm:^14.0.0":
|
||||
version: 14.0.0
|
||||
resolution: "@testing-library/react@npm:14.0.0"
|
||||
dependencies:
|
||||
"@babel/runtime": ^7.12.5
|
||||
"@testing-library/dom": ^8.0.0
|
||||
"@types/react-dom": <18.0.0
|
||||
"@testing-library/dom": ^9.0.0
|
||||
"@types/react-dom": ^18.0.0
|
||||
peerDependencies:
|
||||
react: <18.0.0
|
||||
react-dom: <18.0.0
|
||||
checksum: 4abd0490405e709a7df584a0db604e508a4612398bb1326e8fa32dd9393b15badc826dcf6d2f7525437886d507871f719f127b9860ed69ddd204d1fa834f576a
|
||||
react: ^18.0.0
|
||||
react-dom: ^18.0.0
|
||||
checksum: 4a54c8f56cc4a39b50803205f84f06280bb76521d6d5d4b3b36651d760c7c7752ef142d857d52aaf4fad4848ed7a8be49afc793a5dda105955d2f8bef24901ac
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -4941,21 +4925,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/react-dom@npm:<18.0.0":
|
||||
version: 17.0.17
|
||||
resolution: "@types/react-dom@npm:17.0.17"
|
||||
"@types/react-dom@npm:^18.0.0, @types/react-dom@npm:^18.2.4":
|
||||
version: 18.2.4
|
||||
resolution: "@types/react-dom@npm:18.2.4"
|
||||
dependencies:
|
||||
"@types/react": ^17
|
||||
checksum: 23caf98aa03e968811560f92a2c8f451694253ebe16b670929b24eaf0e7fa62ba549abe9db0ac028a9d8a9086acd6ab9c6c773f163fa21224845edbc00ba6232
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/react-dom@npm:^16.9.17":
|
||||
version: 16.9.17
|
||||
resolution: "@types/react-dom@npm:16.9.17"
|
||||
dependencies:
|
||||
"@types/react": ^16
|
||||
checksum: c9246eb4d35993463608de61111f2bdae5afbd22556c8b9918081516b67eafd1a9ef141c3ed459dd4c753dd7ea037b6a375a856e677c2586396c23732772831d
|
||||
"@types/react": "*"
|
||||
checksum: 8301f35cf1cbfec8c723e9477aecf87774e3c168bd457d353b23c45064737213d3e8008b067c6767b7b08e4f2b3823ee239242a6c225fc91e7f8725ef8734124
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -4968,25 +4943,14 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/react@npm:*, @types/react@npm:^17":
|
||||
version: 17.0.45
|
||||
resolution: "@types/react@npm:17.0.45"
|
||||
"@types/react@npm:*, @types/react@npm:^18.2.6":
|
||||
version: 18.2.6
|
||||
resolution: "@types/react@npm:18.2.6"
|
||||
dependencies:
|
||||
"@types/prop-types": "*"
|
||||
"@types/scheduler": "*"
|
||||
csstype: ^3.0.2
|
||||
checksum: 3cc13a02824c13f6fa4807a83abd065ac1d9943359e76bd995cc7cd2b4148c1176ebd54a30a9f4eb8a0f141ff359d712876f256c4fee707e4290607ef8410b3e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/react@npm:^16, @types/react@npm:^16.14.34":
|
||||
version: 16.14.34
|
||||
resolution: "@types/react@npm:16.14.34"
|
||||
dependencies:
|
||||
"@types/prop-types": "*"
|
||||
"@types/scheduler": "*"
|
||||
csstype: ^3.0.2
|
||||
checksum: a1a105c131bd7fd5cae693c641b3a05eb03c079875fe8e780e616afc54d86e3fa1e8c6433e7a30d2a7f8a1a7681cf1a4f652e9eb48b6abe1f80f7cafe858ebf2
|
||||
checksum: dea9d232d8df7ac357367a69dcb557711ab3d5501807ffa77cebeee73d49ee94d095f298e36853c63ed47cce097eee4c7eae2aaa8c02fac3f0171ec1b523a819
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -5022,14 +4986,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/semver@npm:^7.3.12":
|
||||
version: 7.3.13
|
||||
resolution: "@types/semver@npm:7.3.13"
|
||||
checksum: 00c0724d54757c2f4bc60b5032fe91cda6410e48689633d5f35ece8a0a66445e3e57fa1d6e07eb780f792e82ac542948ec4d0b76eb3484297b79bd18b8cf1cb0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/semver@npm:^7.5.0":
|
||||
"@types/semver@npm:^7.3.12, @types/semver@npm:^7.5.0":
|
||||
version: 7.5.0
|
||||
resolution: "@types/semver@npm:7.5.0"
|
||||
checksum: 0a64b9b9c7424d9a467658b18dd70d1d781c2d6f033096a6e05762d20ebbad23c1b69b0083b0484722aabf35640b78ccc3de26368bcae1129c87e9df028a22e2
|
||||
@@ -5170,31 +5127,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/eslint-plugin@npm:^5.5.0, @typescript-eslint/eslint-plugin@npm:^5.55.0":
|
||||
version: 5.59.2
|
||||
resolution: "@typescript-eslint/eslint-plugin@npm:5.59.2"
|
||||
dependencies:
|
||||
"@eslint-community/regexpp": ^4.4.0
|
||||
"@typescript-eslint/scope-manager": 5.59.2
|
||||
"@typescript-eslint/type-utils": 5.59.2
|
||||
"@typescript-eslint/utils": 5.59.2
|
||||
debug: ^4.3.4
|
||||
grapheme-splitter: ^1.0.4
|
||||
ignore: ^5.2.0
|
||||
natural-compare-lite: ^1.4.0
|
||||
semver: ^7.3.7
|
||||
tsutils: ^3.21.0
|
||||
peerDependencies:
|
||||
"@typescript-eslint/parser": ^5.0.0
|
||||
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
|
||||
peerDependenciesMeta:
|
||||
typescript:
|
||||
optional: true
|
||||
checksum: 1045883173a36a069b56e906ed7e5b4106e1efc2ed0969a1718683aef58fd39e5dfa17774b8782c3ced0529a4edd6dedfcb54348a14525f191a6816e6f3b90dc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/eslint-plugin@npm:^5.59.6":
|
||||
"@typescript-eslint/eslint-plugin@npm:^5.5.0, @typescript-eslint/eslint-plugin@npm:^5.55.0, @typescript-eslint/eslint-plugin@npm:^5.59.6":
|
||||
version: 5.59.6
|
||||
resolution: "@typescript-eslint/eslint-plugin@npm:5.59.6"
|
||||
dependencies:
|
||||
@@ -5229,24 +5162,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/parser@npm:^5.5.0, @typescript-eslint/parser@npm:^5.55.0":
|
||||
version: 5.59.2
|
||||
resolution: "@typescript-eslint/parser@npm:5.59.2"
|
||||
dependencies:
|
||||
"@typescript-eslint/scope-manager": 5.59.2
|
||||
"@typescript-eslint/types": 5.59.2
|
||||
"@typescript-eslint/typescript-estree": 5.59.2
|
||||
debug: ^4.3.4
|
||||
peerDependencies:
|
||||
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
|
||||
peerDependenciesMeta:
|
||||
typescript:
|
||||
optional: true
|
||||
checksum: 0d3f992c49e062ff509606fb72846abaa66602d93ca15bc6498c345c55effa28c8d523b829cd180d901eaf04bca3d93a165d56a387ce109333d60d67b09b5638
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/parser@npm:^5.59.6":
|
||||
"@typescript-eslint/parser@npm:^5.5.0, @typescript-eslint/parser@npm:^5.55.0, @typescript-eslint/parser@npm:^5.59.6":
|
||||
version: 5.59.6
|
||||
resolution: "@typescript-eslint/parser@npm:5.59.6"
|
||||
dependencies:
|
||||
@@ -5273,16 +5189,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/scope-manager@npm:5.59.2":
|
||||
version: 5.59.2
|
||||
resolution: "@typescript-eslint/scope-manager@npm:5.59.2"
|
||||
dependencies:
|
||||
"@typescript-eslint/types": 5.59.2
|
||||
"@typescript-eslint/visitor-keys": 5.59.2
|
||||
checksum: e7adce27890ebaadd0fb36a35639c9a97d2965973643aef4b4b0dcfabb03181c82235d7171e718b002dd398e52fefd67816eb34912ddbc2bb738b47755bd502a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/scope-manager@npm:5.59.6":
|
||||
version: 5.59.6
|
||||
resolution: "@typescript-eslint/scope-manager@npm:5.59.6"
|
||||
@@ -5293,24 +5199,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/type-utils@npm:5.59.2, @typescript-eslint/type-utils@npm:^5.50.0, @typescript-eslint/type-utils@npm:^5.55.0":
|
||||
version: 5.59.2
|
||||
resolution: "@typescript-eslint/type-utils@npm:5.59.2"
|
||||
dependencies:
|
||||
"@typescript-eslint/typescript-estree": 5.59.2
|
||||
"@typescript-eslint/utils": 5.59.2
|
||||
debug: ^4.3.4
|
||||
tsutils: ^3.21.0
|
||||
peerDependencies:
|
||||
eslint: "*"
|
||||
peerDependenciesMeta:
|
||||
typescript:
|
||||
optional: true
|
||||
checksum: d9dc037509a97b11a3c7f758f0f6e985cf5b4909fab860018a75b1550711ce9ff07bf5b67d4197ba7a0a831fec7255851b1e6a773a69030fc8ea7ec649859f52
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/type-utils@npm:5.59.6":
|
||||
"@typescript-eslint/type-utils@npm:5.59.6, @typescript-eslint/type-utils@npm:^5.50.0, @typescript-eslint/type-utils@npm:^5.55.0":
|
||||
version: 5.59.6
|
||||
resolution: "@typescript-eslint/type-utils@npm:5.59.6"
|
||||
dependencies:
|
||||
@@ -5334,13 +5223,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/types@npm:5.59.2":
|
||||
version: 5.59.2
|
||||
resolution: "@typescript-eslint/types@npm:5.59.2"
|
||||
checksum: 5a91cfbcaa8c7e92ad91f67abd0ce43ae562fdbdd8c32aa968731bf7c200d13a0415e87fc032bd48f7e5b7d3ed1447cb14449ef2592c269ca311974b15ce0af2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/types@npm:5.59.6":
|
||||
version: 5.59.6
|
||||
resolution: "@typescript-eslint/types@npm:5.59.6"
|
||||
@@ -5366,24 +5248,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/typescript-estree@npm:5.59.2":
|
||||
version: 5.59.2
|
||||
resolution: "@typescript-eslint/typescript-estree@npm:5.59.2"
|
||||
dependencies:
|
||||
"@typescript-eslint/types": 5.59.2
|
||||
"@typescript-eslint/visitor-keys": 5.59.2
|
||||
debug: ^4.3.4
|
||||
globby: ^11.1.0
|
||||
is-glob: ^4.0.3
|
||||
semver: ^7.3.7
|
||||
tsutils: ^3.21.0
|
||||
peerDependenciesMeta:
|
||||
typescript:
|
||||
optional: true
|
||||
checksum: e8bb8817fe53f826f54e4ca584e48a6700dae25e0cc20ab7db38e7e5308987c5759408b39a4e494d4d6dcd7b4bca9f9c507fae987213380dc1c98607cb0a60b1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/typescript-estree@npm:5.59.6":
|
||||
version: 5.59.6
|
||||
resolution: "@typescript-eslint/typescript-estree@npm:5.59.6"
|
||||
@@ -5420,25 +5284,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/utils@npm:5.59.2, @typescript-eslint/utils@npm:^5.13.0, @typescript-eslint/utils@npm:^5.50.0, @typescript-eslint/utils@npm:^5.55.0":
|
||||
version: 5.59.2
|
||||
resolution: "@typescript-eslint/utils@npm:5.59.2"
|
||||
dependencies:
|
||||
"@eslint-community/eslint-utils": ^4.2.0
|
||||
"@types/json-schema": ^7.0.9
|
||||
"@types/semver": ^7.3.12
|
||||
"@typescript-eslint/scope-manager": 5.59.2
|
||||
"@typescript-eslint/types": 5.59.2
|
||||
"@typescript-eslint/typescript-estree": 5.59.2
|
||||
eslint-scope: ^5.1.1
|
||||
semver: ^7.3.7
|
||||
peerDependencies:
|
||||
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
|
||||
checksum: 483c35a592a36a5973204ce4cd11d52935c097b414d7edac2ecd15dba460b8c540b793ffc232c0f8580fef0624eb7704156ce33c66bd09a76769ed019bddd1d1
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/utils@npm:5.59.6":
|
||||
"@typescript-eslint/utils@npm:5.59.6, @typescript-eslint/utils@npm:^5.13.0, @typescript-eslint/utils@npm:^5.50.0, @typescript-eslint/utils@npm:^5.55.0":
|
||||
version: 5.59.6
|
||||
resolution: "@typescript-eslint/utils@npm:5.59.6"
|
||||
dependencies:
|
||||
@@ -5466,16 +5312,6 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/visitor-keys@npm:5.59.2":
|
||||
version: 5.59.2
|
||||
resolution: "@typescript-eslint/visitor-keys@npm:5.59.2"
|
||||
dependencies:
|
||||
"@typescript-eslint/types": 5.59.2
|
||||
eslint-visitor-keys: ^3.3.0
|
||||
checksum: 3057a017bca03b4ec3bee442044f2bc2f77a4af0d83ea9bf7c6cb2a12811126d93d9d300d89ef8078d981e478c6cc38693c51a2ae4b10a717796bba880eff924
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@typescript-eslint/visitor-keys@npm:5.59.6":
|
||||
version: 5.59.6
|
||||
resolution: "@typescript-eslint/visitor-keys@npm:5.59.6"
|
||||
@@ -8444,14 +8280,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"eslint-visitor-keys@npm:^3.3.0":
|
||||
version: 3.4.0
|
||||
resolution: "eslint-visitor-keys@npm:3.4.0"
|
||||
checksum: 33159169462d3989321a1ec1e9aaaf6a24cc403d5d347e9886d1b5bfe18ffa1be73bdc6203143a28a606b142b1af49787f33cff0d6d0813eb5f2e8d2e1a6043c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"eslint-visitor-keys@npm:^3.4.1":
|
||||
"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.1":
|
||||
version: 3.4.1
|
||||
resolution: "eslint-visitor-keys@npm:3.4.1"
|
||||
checksum: f05121d868202736b97de7d750847a328fcfa8593b031c95ea89425333db59676ac087fa905eba438d0a3c5769632f828187e0c1a0d271832a2153c1d3661c2c
|
||||
@@ -11162,7 +10991,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"lz-string@npm:^1.4.4, lz-string@npm:^1.5.0":
|
||||
"lz-string@npm:^1.5.0":
|
||||
version: 1.5.0
|
||||
resolution: "lz-string@npm:1.5.0"
|
||||
bin:
|
||||
@@ -13390,17 +13219,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"react-dom@npm:^16.14.0":
|
||||
version: 16.14.0
|
||||
resolution: "react-dom@npm:16.14.0"
|
||||
"react-dom@npm:^18.2.0":
|
||||
version: 18.2.0
|
||||
resolution: "react-dom@npm:18.2.0"
|
||||
dependencies:
|
||||
loose-envify: ^1.1.0
|
||||
object-assign: ^4.1.1
|
||||
prop-types: ^15.6.2
|
||||
scheduler: ^0.19.1
|
||||
scheduler: ^0.23.0
|
||||
peerDependencies:
|
||||
react: ^16.14.0
|
||||
checksum: 5a5c49da0f106b2655a69f96c622c347febcd10532db391c262b26aec225b235357d9da1834103457683482ab1b229af7a50f6927a6b70e53150275e31785544
|
||||
react: ^18.2.0
|
||||
checksum: 7d323310bea3a91be2965f9468d552f201b1c27891e45ddc2d6b8f717680c95a75ae0bc1e3f5cf41472446a2589a75aed4483aee8169287909fcd59ad149e8cc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -13592,14 +13419,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"react@npm:^16.14.0":
|
||||
version: 16.14.0
|
||||
resolution: "react@npm:16.14.0"
|
||||
"react@npm:^18.2.0":
|
||||
version: 18.2.0
|
||||
resolution: "react@npm:18.2.0"
|
||||
dependencies:
|
||||
loose-envify: ^1.1.0
|
||||
object-assign: ^4.1.1
|
||||
prop-types: ^15.6.2
|
||||
checksum: 8484f3ecb13414526f2a7412190575fc134da785c02695eb92bb6028c930bfe1c238d7be2a125088fec663cc7cda0a3623373c46807cf2c281f49c34b79881ac
|
||||
checksum: 88e38092da8839b830cda6feef2e8505dec8ace60579e46aa5490fc3dc9bba0bd50336507dc166f43e3afc1c42939c09fe33b25fae889d6f402721dcd78fca1b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -14104,13 +13929,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"scheduler@npm:^0.19.1":
|
||||
version: 0.19.1
|
||||
resolution: "scheduler@npm:0.19.1"
|
||||
"scheduler@npm:^0.23.0":
|
||||
version: 0.23.0
|
||||
resolution: "scheduler@npm:0.23.0"
|
||||
dependencies:
|
||||
loose-envify: ^1.1.0
|
||||
object-assign: ^4.1.1
|
||||
checksum: 73e185a59e2ff5aa3609f5b9cb97ddd376f89e1610579d29939d952411ca6eb7a24907a4ea4556569dacb931467a1a4a56d94fe809ef713aa76748642cd96a6c
|
||||
checksum: d79192eeaa12abef860c195ea45d37cbf2bbf5f66e3c4dcd16f54a7da53b17788a70d109ee3d3dde1a0fd50e6a8fc171f4300356c5aee4fc0171de526bf35f8a
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@@ -14187,18 +14011,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8":
|
||||
version: 7.5.0
|
||||
resolution: "semver@npm:7.5.0"
|
||||
dependencies:
|
||||
lru-cache: ^6.0.0
|
||||
bin:
|
||||
semver: bin/semver.js
|
||||
checksum: 2d266937756689a76f124ffb4c1ea3e1bbb2b263219f90ada8a11aebebe1280b13bb76cca2ca96bdee3dbc554cbc0b24752eb895b2a51577aa644427e9229f2b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"semver@npm:^7.5.1":
|
||||
"semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.1":
|
||||
version: 7.5.1
|
||||
resolution: "semver@npm:7.5.1"
|
||||
dependencies:
|
||||
@@ -15044,29 +14857,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"terser-webpack-plugin@npm:^5.3.7":
|
||||
version: 5.3.7
|
||||
resolution: "terser-webpack-plugin@npm:5.3.7"
|
||||
dependencies:
|
||||
"@jridgewell/trace-mapping": ^0.3.17
|
||||
jest-worker: ^27.4.5
|
||||
schema-utils: ^3.1.1
|
||||
serialize-javascript: ^6.0.1
|
||||
terser: ^5.16.5
|
||||
peerDependencies:
|
||||
webpack: ^5.1.0
|
||||
peerDependenciesMeta:
|
||||
"@swc/core":
|
||||
optional: true
|
||||
esbuild:
|
||||
optional: true
|
||||
uglify-js:
|
||||
optional: true
|
||||
checksum: 095e699fdeeb553cdf2c6f75f983949271b396d9c201d7ae9fc633c45c1c1ad14c7257ef9d51ccc62213dd3e97f875870ba31550f6d4f1b6674f2615562da7f7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"terser-webpack-plugin@npm:^5.3.8":
|
||||
"terser-webpack-plugin@npm:^5.3.7, terser-webpack-plugin@npm:^5.3.8":
|
||||
version: 5.3.8
|
||||
resolution: "terser-webpack-plugin@npm:5.3.8"
|
||||
dependencies:
|
||||
@@ -15088,21 +14879,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"terser@npm:^5.0.0, terser@npm:^5.10.0, terser@npm:^5.16.5":
|
||||
version: 5.16.6
|
||||
resolution: "terser@npm:5.16.6"
|
||||
dependencies:
|
||||
"@jridgewell/source-map": ^0.3.2
|
||||
acorn: ^8.5.0
|
||||
commander: ^2.20.0
|
||||
source-map-support: ~0.5.20
|
||||
bin:
|
||||
terser: bin/terser
|
||||
checksum: f763a7bcc7b98cb2bfc41434f7b92bfe8a701a12c92ea6049377736c8e6de328240d654a20dfe15ce170fd783491b9873fad9f4cd8fee4f6c6fb8ca407859dee
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"terser@npm:^5.16.8":
|
||||
"terser@npm:^5.0.0, terser@npm:^5.10.0, terser@npm:^5.16.8":
|
||||
version: 5.17.1
|
||||
resolution: "terser@npm:5.17.1"
|
||||
dependencies:
|
||||
|
||||
Reference in New Issue
Block a user