diff --git a/.i18n-codegen.json b/.i18n-codegen.json index bd6dd0c67aeb..5ebcd65a0dbd 100644 --- a/.i18n-codegen.json +++ b/.i18n-codegen.json @@ -15,8 +15,8 @@ } }, { - "input": "./packages/theme/src/locales/en.json", - "output": "./packages/theme/src/locales/i18n_generated", + "input": "./packages/shared/src/locales/en.json", + "output": "./packages/shared/src/locales/i18n_generated", "parser": "i18next", "generator": { "type": "i18next/react-hooks", diff --git a/packages/constants/data/token-asset-base-url.json b/packages/constants/data/token-asset-base-url.json new file mode 100644 index 000000000000..a63b25ade36f --- /dev/null +++ b/packages/constants/data/token-asset-base-url.json @@ -0,0 +1,40 @@ +{ + "TOKEN_ASSET_BASE_URI": { + "Mainnet": [ + "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum", + "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/ethereum" + ], + "Ropsten": [ + "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum", + "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/ethereum" + ], + "Rinkeby": [ + "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum", + "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/ethereum" + ], + "Kovan": [ + "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum", + "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/ethereum" + ], + "Gorli": [ + "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum", + "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/ethereum" + ], + "BSC": [ + "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/smartchain", + "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/smartchain" + ], + "BSCT": [ + "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/smartchain", + "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/smartchain" + ], + "Matic": [ + "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/polygon", + "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/polygon" + ], + "Mumbai": [ + "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/polygon", + "https://rawcdn.githack.com/trustwallet/assets/master/blockchains/polygon" + ] + } +} diff --git a/packages/dashboard/.storybook/preview.js b/packages/dashboard/.storybook/preview.js index a5e536c98736..954d3e275199 100644 --- a/packages/dashboard/.storybook/preview.js +++ b/packages/dashboard/.storybook/preview.js @@ -1,7 +1,7 @@ import React from 'react' import { ThemeProvider, StyledEngineProvider } from '@material-ui/core' import { StylesProvider } from '@material-ui/styles' -import { MaskLightTheme, addMaskThemeI18N, applyMaskColorVars } from '@masknet/theme' +import { MaskLightTheme, addMaskSharedI18N, applyMaskColorVars } from '@masknet/theme' import { withMatrix } from 'storybook-addon-matrix' import { addDashboardI18N } from '../src/locales' import { I18nextProvider, initReactI18next } from 'react-i18next' @@ -15,7 +15,7 @@ i18n.init({ }) i18n.use(initReactI18next) addDashboardI18N(i18n) -addMaskThemeI18N(i18n) +addMaskSharedI18N(i18n) export const parameters = { actions: { argTypesRegex: '^on[A-Z].*' }, } diff --git a/packages/dashboard/package.json b/packages/dashboard/package.json index 8955d0d2e12d..4e29800782a3 100644 --- a/packages/dashboard/package.json +++ b/packages/dashboard/package.json @@ -11,7 +11,7 @@ "build": "build -- snowpack build" }, "dependencies": { - "@dimensiondev/holoflows-kit": "0.8.0-20210317064617-6c4792c", + "@dimensiondev/holoflows-kit": "=0.8.0-20210429202414-74fb9a1", "@dimensiondev/kit": "=0.0.0-20210630045432-e05621c", "@masknet/icons": "workspace:*", "@masknet/plugin-example": "workspace:*", diff --git a/packages/dashboard/src/components/DashboardFrame/index.tsx b/packages/dashboard/src/components/DashboardFrame/index.tsx index 4b3156ff0968..e27da5646062 100644 --- a/packages/dashboard/src/components/DashboardFrame/index.tsx +++ b/packages/dashboard/src/components/DashboardFrame/index.tsx @@ -14,7 +14,7 @@ import { } from '@material-ui/core' import { Menu as MenuIcon, Close as CloseIcon } from '@material-ui/icons' import Color from 'color' -import { ErrorBoundary } from '@masknet/theme' +import { ErrorBoundary } from '@masknet/shared' import { useState, useContext, useMemo, Suspense } from 'react' import { DashboardContext } from './context' import { Navigation } from './Navigation' diff --git a/packages/dashboard/src/initialization/Dashboard.tsx b/packages/dashboard/src/initialization/Dashboard.tsx index ac38678a2e9f..0d5b0bfdade5 100644 --- a/packages/dashboard/src/initialization/Dashboard.tsx +++ b/packages/dashboard/src/initialization/Dashboard.tsx @@ -4,13 +4,13 @@ import { StylesProvider } from '@material-ui/styles' import { CustomSnackbarProvider, MaskLightTheme, - ErrorBoundary, applyMaskColorVars, MaskDarkTheme, useSystemPreferencePalatte, } from '@masknet/theme' import { ChainId } from '@masknet/web3-shared' import { Emitter } from '@servie/events' +import { ErrorBoundary } from '@masknet/shared' import i18n from 'i18next' import { I18nextProvider } from 'react-i18next' diff --git a/packages/dashboard/src/initialization/i18n.ts b/packages/dashboard/src/initialization/i18n.ts index 9f1c21aba0ee..25963a2f5d46 100644 --- a/packages/dashboard/src/initialization/i18n.ts +++ b/packages/dashboard/src/initialization/i18n.ts @@ -1,5 +1,5 @@ import i18n from 'i18next' -import { addMaskThemeI18N } from '@masknet/theme' +import { addMaskSharedI18N } from '@masknet/shared' import { addDashboardI18N } from '../locales' import { initReactI18next } from 'react-i18next' @@ -10,5 +10,5 @@ i18n.init({ fallbackLng: 'en', }) i18n.use(initReactI18next) -addMaskThemeI18N(i18n) +addMaskSharedI18N(i18n) addDashboardI18N(i18n) diff --git a/packages/dashboard/src/locales/en.json b/packages/dashboard/src/locales/en.json index 29ca82be18cd..d288a92adc23 100644 --- a/packages/dashboard/src/locales/en.json +++ b/packages/dashboard/src/locales/en.json @@ -72,6 +72,7 @@ "wallets_empty_collectible_tip": "No collectibles were found. Please add Collectibles.", "wallets_address_copied": "Address successfully copied", "wallets_address_copy": "Copy", + "wallets_loading_token": "Loading Token", "personas_setup_connect_tips": "Please connect to your {{type}} account.", "personas_setup_connect": "Connect", "personas_name_maximum_tips": "Maximum length is {{length}} characters long.", diff --git a/packages/dashboard/src/locales/zh.json b/packages/dashboard/src/locales/zh.json index ce03e5b36007..fc8d7a040ea4 100644 --- a/packages/dashboard/src/locales/zh.json +++ b/packages/dashboard/src/locales/zh.json @@ -41,6 +41,7 @@ "wallets_balance_Buy": "購買", "wallets_balance_Swap": "交換", "wallets_balance_Receive": "接收", + "wallets_loading_token": "", "personas_setup_connect_tips": "", "personas_setup_connect": "", "personas_name_maximum_tips": "", diff --git a/packages/dashboard/src/pages/Wallets/components/AddCollectibleDialog/index.tsx b/packages/dashboard/src/pages/Wallets/components/AddCollectibleDialog/index.tsx index 0533f37f7319..497c59ca5d22 100644 --- a/packages/dashboard/src/pages/Wallets/components/AddCollectibleDialog/index.tsx +++ b/packages/dashboard/src/pages/Wallets/components/AddCollectibleDialog/index.tsx @@ -1,5 +1,6 @@ import { memo, useMemo, useState } from 'react' -import { MaskColorVar, MaskDialog, useSnackbarCallback } from '@masknet/theme' +import { MaskColorVar, MaskDialog } from '@masknet/theme' +import { useSnackbarCallback } from '@masknet/shared' import { Box, Button, DialogActions, DialogContent, makeStyles, TextField } from '@material-ui/core' import { useERC721TokenAssetDetailed, useERC721TokenDetailed, useWallet } from '@masknet/web3-shared' import { PluginServices } from '../../../../API' diff --git a/packages/dashboard/src/pages/Wallets/components/AddTokenConfirmUI/index.tsx b/packages/dashboard/src/pages/Wallets/components/AddTokenConfirmUI/index.tsx index 3742bd847d55..c83211ea9af8 100644 --- a/packages/dashboard/src/pages/Wallets/components/AddTokenConfirmUI/index.tsx +++ b/packages/dashboard/src/pages/Wallets/components/AddTokenConfirmUI/index.tsx @@ -1,8 +1,8 @@ import { memo } from 'react' import { useDashboardI18N } from '../../../../locales' import { Box, Button, DialogActions, DialogContent, makeStyles, Stack, Typography } from '@material-ui/core' -import { TokenIcon } from '../TokenIcon' import type { ERC20TokenDetailed } from '@masknet/web3-shared' +import { TokenIcon } from '@masknet/shared' export interface AddTokenConfirmUIProps { onBack: () => void diff --git a/packages/dashboard/src/pages/Wallets/components/AddTokenDialog/index.tsx b/packages/dashboard/src/pages/Wallets/components/AddTokenDialog/index.tsx index d3eb780bff26..171d52211db8 100644 --- a/packages/dashboard/src/pages/Wallets/components/AddTokenDialog/index.tsx +++ b/packages/dashboard/src/pages/Wallets/components/AddTokenDialog/index.tsx @@ -1,5 +1,6 @@ import { memo, useState } from 'react' -import { MaskDialog, useSnackbarCallback } from '@masknet/theme' +import { MaskDialog } from '@masknet/theme' +import { useSnackbarCallback } from '@masknet/shared' import { ERC20TokenDetailed, useERC20TokenBalance, useERC20TokenDetailed, useWallet } from '@masknet/web3-shared' import { useUpdateEffect } from 'react-use' import { PluginServices } from '../../../../API' diff --git a/packages/dashboard/src/pages/Wallets/components/ReceiveDialog/index.tsx b/packages/dashboard/src/pages/Wallets/components/ReceiveDialog/index.tsx index 2090c9752464..8d7273c9b6cb 100644 --- a/packages/dashboard/src/pages/Wallets/components/ReceiveDialog/index.tsx +++ b/packages/dashboard/src/pages/Wallets/components/ReceiveDialog/index.tsx @@ -1,6 +1,7 @@ import { memo } from 'react' import { useDashboardI18N } from '../../../../locales' -import { MaskColorVar, MaskDialog, QRCode, useSnackbarCallback } from '@masknet/theme' +import { MaskColorVar, MaskDialog } from '@masknet/theme' +import { QRCode, useSnackbarCallback } from '@masknet/shared' import { DialogContent, Typography, makeStyles, DialogActions, Button } from '@material-ui/core' import { WalletQRCodeContainer } from '../../../../components/WalletQRCodeContainer' import { useCopyToClipboard } from 'react-use' diff --git a/packages/dashboard/src/pages/Wallets/components/TokenIcon/index.tsx b/packages/dashboard/src/pages/Wallets/components/TokenIcon/index.tsx deleted file mode 100644 index 3fb41cddd13b..000000000000 --- a/packages/dashboard/src/pages/Wallets/components/TokenIcon/index.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import { ChainId, resolveChainFullName, useBlockie, useChainDetailed, resolveTokenIconURL } from '@masknet/web3-shared' -import type { AvatarProps } from '@material-ui/core' -import { Avatar } from '@material-ui/core' -import { memo } from 'react' -import { useImageFailOver } from '../../../../hooks/useImageFailOver' - -export interface TokenIconProps { - address: string - name?: string - logoURL?: string - chainId?: ChainId - AvatarProps?: Partial -} - -export const TokenIcon = memo(({ address, name, logoURL, chainId, AvatarProps }) => { - const chainDetailed = useChainDetailed() - const tokenBlockie = useBlockie(address) - - const fullName = chainDetailed ? resolveChainFullName(chainId ?? chainDetailed.chainId) : '' - - const { value: baseURI, loading } = useImageFailOver( - chainDetailed - ? [ - `https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/${fullName.toLowerCase()}`, - `https://rawcdn.githack.com/trustwallet/assets/master/blockchains/${fullName.toLowerCase()}`, - ] - : [], - '/info/logo.png', - ) - - return ( - - ) -}) - -export interface TokenIconUIProps { - logoURL?: string - loading: boolean - address: string - baseURI: string - AvatarProps?: Partial - tokenBlockie: string - name?: string -} - -export const TokenIconUI = memo( - ({ logoURL, loading, address, baseURI, AvatarProps, tokenBlockie, name }) => { - if (logoURL) { - return ( - - {name?.substr(0, 1).toLocaleUpperCase()} - - ) - } - - return ( - - {name?.substr(0, 1).toLocaleUpperCase()} - - ) - }, -) diff --git a/packages/dashboard/src/pages/Wallets/components/TokenTableRow/index.tsx b/packages/dashboard/src/pages/Wallets/components/TokenTableRow/index.tsx index 9ed128b1340b..33a1283a18a3 100644 --- a/packages/dashboard/src/pages/Wallets/components/TokenTableRow/index.tsx +++ b/packages/dashboard/src/pages/Wallets/components/TokenTableRow/index.tsx @@ -1,14 +1,18 @@ import { memo } from 'react' import { Box, Button, makeStyles, TableCell, TableRow, Typography } from '@material-ui/core' -import { TokenIcon } from '../TokenIcon' import { FormattedCurrency } from '@masknet/shared' import { Asset, CurrencyType, formatBalance, formatCurrency, getTokenUSDValue, pow10 } from '@masknet/web3-shared' import BigNumber from 'bignumber.js' import { useNavigate } from 'react-router' import { RoutePaths } from '../../../../type' import { useDashboardI18N } from '../../../../locales' +import { TokenIcon } from '@masknet/shared' const useStyles = makeStyles((theme) => ({ + icon: { + width: 36, + height: 36, + }, symbol: { marginLeft: 14, fontSize: theme.typography.pxToRem(14), @@ -31,6 +35,7 @@ export const TokenTableRow = memo(({ asset }) => { + uniqBy( + nativeTokenDetailed ? [nativeTokenDetailed, ...erc20TokensDetailed] : [...erc20TokensDetailed], + (x) => x.address.toLowerCase(), + ).sort((a, z) => { + if (a.type === EthereumTokenType.Native) return -1 + if (z.type === EthereumTokenType.Native) return 1 + if (isSameAddress(a.address, MASK_ADDRESS)) return -1 + if (isSameAddress(z.address, MASK_ADDRESS)) return 1 + return 0 + }), + [nativeTokenDetailed, erc20TokensDetailed.length], + ) + + const { + value: assetsDetailedChain = [], + loading: assetsDetailedChainLoading, + error: assetsDetailedChainError, + } = useAssetsFromChain(tokens) + + return { + value: assetsDetailedChain, + loading: state !== TokenListsState.READY || assetsDetailedChainLoading, + error: assetsDetailedChainError, + } +} diff --git a/packages/dashboard/src/web3/context.ts b/packages/dashboard/src/web3/context.ts index 6ff32e27d8a5..9e015a4068f5 100644 --- a/packages/dashboard/src/web3/context.ts +++ b/packages/dashboard/src/web3/context.ts @@ -62,6 +62,7 @@ export const Web3Context: Web3ProviderType = { getAssetList: PluginServices.Wallet.getAssetsList, getAssetsListNFT: PluginServices.Wallet.getAssetsListNFT, getERC721TokensPaged, + fetchERC20TokensFromTokenLists: Services.Ethereum.fetchERC20TokensFromTokenLists, } export function createExternalProvider() { diff --git a/packages/theme/stories/components/CrashUI.stories.tsx b/packages/dashboard/stories/components/Shared/CrashUI.tsx similarity index 75% rename from packages/theme/stories/components/CrashUI.stories.tsx rename to packages/dashboard/stories/components/Shared/CrashUI.tsx index 1a52cb817e17..060da70ce0b0 100644 --- a/packages/theme/stories/components/CrashUI.stories.tsx +++ b/packages/dashboard/stories/components/Shared/CrashUI.tsx @@ -1,5 +1,5 @@ -import { CrashUI as C } from '../../src/Components/ErrorBoundary' -import { story } from '../utils' +import { CrashUI as C } from '@masknet/shared' +import { story } from '@masknet/storybook-shared' const { meta, of } = story(C) export default meta({ diff --git a/packages/dashboard/tsconfig.json b/packages/dashboard/tsconfig.json index 9095416d10f2..886915c80df3 100644 --- a/packages/dashboard/tsconfig.json +++ b/packages/dashboard/tsconfig.json @@ -4,7 +4,7 @@ "rootDir": "./", "outDir": "./dist/" }, - "include": ["./src/", "./stories/", "./src/locales/*.json"], + "include": ["./src/", "./stories/", "./src/**/*.json"], "references": [ { "path": "../theme/" }, { "path": "../maskbook/" }, diff --git a/packages/maskbook/package.json b/packages/maskbook/package.json index 8cf995606b38..e48e6e6faa65 100644 --- a/packages/maskbook/package.json +++ b/packages/maskbook/package.json @@ -8,7 +8,7 @@ "dependencies": { "@balancer-labs/sor": "^1.0.0", "@dimensiondev/common-protocols": "1.6.0-20201027083702-d0ae6e2", - "@dimensiondev/holoflows-kit": "0.8.0-20210317064617-6c4792c", + "@dimensiondev/holoflows-kit": "=0.8.0-20210429202414-74fb9a1", "@dimensiondev/kit": "=0.0.0-20210630045432-e05621c", "@dimensiondev/metamask-extension-provider": "3.0.6-20210519045409-1835d4d", "@dimensiondev/stego-js": "=0.11.1-20201027083223-8ab41be", diff --git a/packages/maskbook/src/UIRoot.tsx b/packages/maskbook/src/UIRoot.tsx index 7544665c4062..6051ccb54e5e 100644 --- a/packages/maskbook/src/UIRoot.tsx +++ b/packages/maskbook/src/UIRoot.tsx @@ -3,7 +3,7 @@ import { StylesProvider } from '@material-ui/styles' import { CssBaseline, StyledEngineProvider, ThemeProvider } from '@material-ui/core' import { Web3Provider } from '@masknet/web3-shared' import { SnackbarProvider } from '@masknet/theme' -import { ErrorBoundary, ErrorBoundaryBuildInfoContext } from '@masknet/theme' +import { ErrorBoundary, ErrorBoundaryBuildInfoContext } from '@masknet/shared' import i18nNextInstance from './utils/i18n-next' import { useClassicMaskTheme } from './utils/theme' import { Web3Context } from './web3/context' diff --git a/packages/maskbook/src/components/shared/ErrorBoundary.tsx b/packages/maskbook/src/components/shared/ErrorBoundary.tsx index 0eaa0e7cdd78..581aca2b7081 100644 --- a/packages/maskbook/src/components/shared/ErrorBoundary.tsx +++ b/packages/maskbook/src/components/shared/ErrorBoundary.tsx @@ -1 +1 @@ -export { ErrorBoundary, withErrorBoundary } from '@masknet/theme' +export { ErrorBoundary, withErrorBoundary } from '@masknet/shared' diff --git a/packages/maskbook/src/components/shared/InjectedDialog.tsx b/packages/maskbook/src/components/shared/InjectedDialog.tsx index 7f3ad8bddb87..20a543799212 100644 --- a/packages/maskbook/src/components/shared/InjectedDialog.tsx +++ b/packages/maskbook/src/components/shared/InjectedDialog.tsx @@ -16,7 +16,7 @@ import { Children, cloneElement } from 'react' import { useI18N, usePortalShadowRoot } from '../../utils' import { mergeClasses, useStylesExtends } from '../custom-ui-helper' import { DialogDismissIconUI } from '../InjectedComponents/DialogDismissIcon' -import { ErrorBoundary } from '@masknet/theme' +import { ErrorBoundary } from '@masknet/shared' import { activatedSocialNetworkUI } from '../../social-network' const useStyles = makeStyles((theme) => ({ diff --git a/packages/maskbook/src/extension/background-script/EthereumServices/tokenList.ts b/packages/maskbook/src/extension/background-script/EthereumServices/tokenList.ts index b90c04537c05..e7c1a18a48d1 100644 --- a/packages/maskbook/src/extension/background-script/EthereumServices/tokenList.ts +++ b/packages/maskbook/src/extension/background-script/EthereumServices/tokenList.ts @@ -18,6 +18,7 @@ interface TokenList { name: string symbol: string decimals: number + logoURI?: string }[] version: { major: number diff --git a/packages/maskbook/src/extension/options-page/DashboardComponents/FixedTokenList.tsx b/packages/maskbook/src/extension/options-page/DashboardComponents/FixedTokenList.tsx index cf3f1cb09f4a..02d79cb43469 100644 --- a/packages/maskbook/src/extension/options-page/DashboardComponents/FixedTokenList.tsx +++ b/packages/maskbook/src/extension/options-page/DashboardComponents/FixedTokenList.tsx @@ -1,7 +1,9 @@ import { currySameAddress, - EthereumTokenType, + useERC20TokensDetailedFromTokenLists, + TokenListsState, FungibleTokenDetailed, + EthereumTokenType, isSameAddress, useEthereumConstants, useTokenConstants, @@ -11,10 +13,6 @@ import { uniqBy } from 'lodash-es' import { useState } from 'react' import { FixedSizeList, FixedSizeListProps } from 'react-window' import { useStylesExtends } from '../../../components/custom-ui-helper' -import { - TokenListsState, - useERC20TokensDetailedFromTokenLists, -} from '../../../web3/hooks/useERC20TokensDetailedFromTokenLists' import { TokenInList } from './TokenInList' const useStyles = makeStyles((theme) => ({ diff --git a/packages/maskbook/src/extension/options-page/DashboardComponents/TokenIcon.tsx b/packages/maskbook/src/extension/options-page/DashboardComponents/TokenIcon.tsx deleted file mode 100644 index cd67c707cadb..000000000000 --- a/packages/maskbook/src/extension/options-page/DashboardComponents/TokenIcon.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import { - ChainId, - formatEthereumAddress, - getChainFullName, - getTokenConstants, - useBlockie, - useChainDetailed, -} from '@masknet/web3-shared' -import { Avatar, AvatarProps, makeStyles, Theme } from '@material-ui/core' -import { useStylesExtends } from '../../../components/custom-ui-helper' -import { useImageFailover } from '../../../utils/hooks/useImageFailover' - -//#region fix icon image -function resolveTokenIconURL(address: string, baseURI: string) { - const iconMap = { - [getTokenConstants().NATIVE_TOKEN_ADDRESS]: `${baseURI}/info/logo.png`, - '0x69af81e73A73B40adF4f3d4223Cd9b1ECE623074': - 'https://dimensiondev.github.io/Maskbook-VI/assets/Logo/MB--Logo--Geo--ForceCircle--Blue.svg', // MASK - '0x32a7C02e79c4ea1008dD6564b35F131428673c41': 'https://s2.coinmarketcap.com/static/img/coins/64x64/6747.png', // CRUST - '0x04abEdA201850aC0124161F037Efd70c74ddC74C': 'https://s2.coinmarketcap.com/static/img/coins/64x64/5841.png', // NEST - '0x14de81C71B3F73874659082b971433514E201B27': 'https://etherscan.io/token/images/ykyctoken_32.png', // Yes KYC - '0x3B73c1B2ea59835cbfcADade5462b6aB630D9890': - 'https://raw.githubusercontent.com/chainswap/chainswap-assets/main/logo_white_256.png', // TOKEN - } - const checksummedAddress = formatEthereumAddress(address) - if (iconMap[checksummedAddress]) return iconMap[checksummedAddress] - return `${baseURI}/assets/${checksummedAddress}/logo.png` -} -//#endregion - -const useStyles = makeStyles((theme: Theme) => ({ - icon: { - width: 16, - height: 16, - backgroundColor: theme.palette.common.white, - margin: 0, - }, -})) - -export interface TokenIconProps extends withClasses { - name?: string - logoURL?: string - chainId?: ChainId - address: string - AvatarProps?: Partial -} - -export function TokenIcon(props: TokenIconProps) { - const { address, logoURL, name, chainId, AvatarProps } = props - - const classes = useStylesExtends(useStyles(), props) - const chainDetailed = useChainDetailed() - const tokenBlockie = useBlockie(address) - - const fullName = chainDetailed ? getChainFullName(chainId ?? chainDetailed.chainId) : '' - const { value: baseURI, loading } = useImageFailover( - chainDetailed - ? [ - `https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/${fullName.toLowerCase()}`, - `https://rawcdn.githack.com/trustwallet/assets/master/blockchains/${fullName.toLowerCase()}`, - ] - : [], - '/info/logo.png', - ) - - if (logoURL) - return ( - - {name?.substr(0, 1).toLocaleUpperCase()} - - ) - return ( - - - {name?.substr(0, 1).toLocaleUpperCase()} - - - ) -} diff --git a/packages/maskbook/src/extension/options-page/DashboardComponents/TokenInList.tsx b/packages/maskbook/src/extension/options-page/DashboardComponents/TokenInList.tsx index 7ae3ecf00e3a..08a3042027d2 100644 --- a/packages/maskbook/src/extension/options-page/DashboardComponents/TokenInList.tsx +++ b/packages/maskbook/src/extension/options-page/DashboardComponents/TokenInList.tsx @@ -9,12 +9,12 @@ import { Link, ListItem, ListItemIcon, ListItemText, Typography } from '@materia import { makeStyles, Theme } from '@material-ui/core/styles' import OpenInNewIcon from '@material-ui/icons/OpenInNew' import { useCallback } from 'react' -import { TokenIcon } from './TokenIcon' +import { TokenIcon } from '@masknet/shared' const useStyles = makeStyles((theme: Theme) => ({ icon: { - width: 28, - height: 28, + width: 36, + height: 36, }, text: { display: 'flex', @@ -76,7 +76,7 @@ export function TokenInList({ data, index, style }: TokenInListProps) { const token = data.tokens[index] if (!token) return null - const { address, name, symbol } = token + const { address, name, symbol, logoURI } = token return ( data.onSelect(address)}> - + diff --git a/packages/maskbook/src/extension/options-page/DashboardComponents/TransactionList/Record.tsx b/packages/maskbook/src/extension/options-page/DashboardComponents/TransactionList/Record.tsx index 068a0a79734f..eeafb663c578 100644 --- a/packages/maskbook/src/extension/options-page/DashboardComponents/TransactionList/Record.tsx +++ b/packages/maskbook/src/extension/options-page/DashboardComponents/TransactionList/Record.tsx @@ -1,6 +1,6 @@ import { makeStyles, Typography } from '@material-ui/core' import type { FC } from 'react' -import { TokenIcon } from '../TokenIcon' +import { TokenIcon } from '@masknet/shared' import classNames from 'classnames' import type { Transaction } from '../../../../plugins/Wallet/types' import { DebankTransactionDirection, ZerionTransactionDirection } from '../../../../plugins/Wallet/types' diff --git a/packages/maskbook/src/extension/options-page/DashboardComponents/WalletAssetsTable.tsx b/packages/maskbook/src/extension/options-page/DashboardComponents/WalletAssetsTable.tsx index 96e46e578665..183332acd05d 100644 --- a/packages/maskbook/src/extension/options-page/DashboardComponents/WalletAssetsTable.tsx +++ b/packages/maskbook/src/extension/options-page/DashboardComponents/WalletAssetsTable.tsx @@ -34,9 +34,8 @@ import { Wallet, } from '@masknet/web3-shared' import { useStylesExtends } from '../../../components/custom-ui-helper' -import { FormattedCurrency } from '@masknet/shared' +import { FormattedCurrency, TokenIcon } from '@masknet/shared' import { useI18N, useMatchXS } from '../../../utils' -import { TokenIcon } from './TokenIcon' import { ActionsBarFT } from './ActionsBarFT' import { useTrustedERC20TokensFromDB } from '../../../plugins/Wallet/hooks/useERC20Tokens' import { getTokenUSDValue } from '../../../plugins/Wallet/helpers' diff --git a/packages/maskbook/src/extension/options-page/DashboardDialogs/Base.tsx b/packages/maskbook/src/extension/options-page/DashboardDialogs/Base.tsx index c4d08f5ac411..d14e3ad8d532 100644 --- a/packages/maskbook/src/extension/options-page/DashboardDialogs/Base.tsx +++ b/packages/maskbook/src/extension/options-page/DashboardDialogs/Base.tsx @@ -272,4 +272,4 @@ export function DashboardDialogWrapper(props: DashboardDialogWrapperProps) { ) } -export { useSnackbarCallback } from '@masknet/theme' +export { useSnackbarCallback } from '@masknet/shared' diff --git a/packages/maskbook/src/extension/options-page/DashboardDialogs/Persona/Backup.tsx b/packages/maskbook/src/extension/options-page/DashboardDialogs/Persona/Backup.tsx index aa261d523abf..6d15cadd51b9 100644 --- a/packages/maskbook/src/extension/options-page/DashboardDialogs/Persona/Backup.tsx +++ b/packages/maskbook/src/extension/options-page/DashboardDialogs/Persona/Backup.tsx @@ -1,7 +1,7 @@ import { useEffect, useState } from 'react' import { User } from 'react-feather' import { useI18N, compressBackupFile, encodeArrayBuffer, encodeText } from '../../../../utils' -import { QRCode } from '@masknet/theme' +import { QRCode } from '@masknet/shared' import Services from '../../../service' import AbstractTab, { AbstractTabProps } from '../../../../components/shared/AbstractTab' import ShowcaseBox from '../../DashboardComponents/ShowcaseBox' diff --git a/packages/maskbook/src/extension/options-page/DashboardDialogs/Wallet/ReceiveTab.tsx b/packages/maskbook/src/extension/options-page/DashboardDialogs/Wallet/ReceiveTab.tsx index 50469cb8debe..2a099b94d54f 100644 --- a/packages/maskbook/src/extension/options-page/DashboardDialogs/Wallet/ReceiveTab.tsx +++ b/packages/maskbook/src/extension/options-page/DashboardDialogs/Wallet/ReceiveTab.tsx @@ -2,7 +2,7 @@ import { IconButton, InputAdornment, makeStyles, TextField, Theme } from '@mater import FileCopyOutlinedIcon from '@material-ui/icons/FileCopyOutlined' import { useCopyToClipboard } from 'react-use' import { useI18N } from '../../../../utils' -import { QRCode } from '@masknet/theme' +import { QRCode } from '@masknet/shared' import type { Wallet } from '@masknet/web3-shared' import { useSnackbarCallback } from '../Base' diff --git a/packages/maskbook/src/plugins/Airdrop/SNSAdaptor/ClaimDialog.tsx b/packages/maskbook/src/plugins/Airdrop/SNSAdaptor/ClaimDialog.tsx index b987d2ef0ff1..4e1f57e3958f 100644 --- a/packages/maskbook/src/plugins/Airdrop/SNSAdaptor/ClaimDialog.tsx +++ b/packages/maskbook/src/plugins/Airdrop/SNSAdaptor/ClaimDialog.tsx @@ -1,7 +1,7 @@ import { InjectedDialog, InjectedDialogProps } from '../../../components/shared/InjectedDialog' import { DialogContent, Box, Theme, makeStyles, DialogActions, Button, Typography } from '@material-ui/core' import { useStylesExtends } from '../../../components/custom-ui-helper' -import { TokenIcon } from '../../../extension/options-page/DashboardComponents/TokenIcon' +import { TokenIcon } from '@masknet/shared' import type { ERC20TokenDetailed } from '@masknet/web3-shared' const useStyles = makeStyles((theme: Theme) => ({ diff --git a/packages/maskbook/src/plugins/Gitcoin/messages.ts b/packages/maskbook/src/plugins/Gitcoin/messages.ts index 1c57e88e2457..818c995debc2 100644 --- a/packages/maskbook/src/plugins/Gitcoin/messages.ts +++ b/packages/maskbook/src/plugins/Gitcoin/messages.ts @@ -1,6 +1,7 @@ import { createPluginMessage } from '../utils/createPluginMessage' import { createPluginRPC } from '../utils/createPluginRPC' import { GITCOIN_PLUGIN_ID } from './constants' +import type { WebExtensionMessage } from '@dimensiondev/holoflows-kit' type DonationDialogUpdated = | { @@ -21,7 +22,8 @@ interface GitcoinMessages { rpc: unknown } -export const PluginGitcoinMessages = createPluginMessage(GITCOIN_PLUGIN_ID) +export const PluginGitcoinMessages: WebExtensionMessage = + createPluginMessage(GITCOIN_PLUGIN_ID) export const PluginGitcoinRPC = createPluginRPC( GITCOIN_PLUGIN_ID, () => import('./services'), diff --git a/packages/maskbook/src/plugins/ITO/UI/ITO.tsx b/packages/maskbook/src/plugins/ITO/UI/ITO.tsx index 512c66b8a305..a791384572bb 100644 --- a/packages/maskbook/src/plugins/ITO/UI/ITO.tsx +++ b/packages/maskbook/src/plugins/ITO/UI/ITO.tsx @@ -23,7 +23,7 @@ import formatDateTime from 'date-fns/format' import { useCallback, useEffect, useMemo, useState } from 'react' import { usePostLink } from '../../../components/DataSource/usePostInfo' import ActionButton from '../../../extension/options-page/DashboardComponents/ActionButton' -import { TokenIcon } from '../../../extension/options-page/DashboardComponents/TokenIcon' +import { TokenIcon } from '@masknet/shared' import { activatedSocialNetworkUI } from '../../../social-network' import { getAssetAsBlobURL, getTextUILength, useI18N, useRemoteControlledDialog } from '../../../utils' import { WalletMessages } from '../../Wallet/messages' diff --git a/packages/maskbook/src/plugins/ITO/UI/PoolInList.tsx b/packages/maskbook/src/plugins/ITO/UI/PoolInList.tsx index 18c953faaeb6..e7357c62b5cd 100644 --- a/packages/maskbook/src/plugins/ITO/UI/PoolInList.tsx +++ b/packages/maskbook/src/plugins/ITO/UI/PoolInList.tsx @@ -26,7 +26,7 @@ import { import BigNumber from 'bignumber.js' import formatDateTime from 'date-fns/format' import ActionButton from '../../../extension/options-page/DashboardComponents/ActionButton' -import { TokenIcon } from '../../../extension/options-page/DashboardComponents/TokenIcon' +import { TokenIcon } from '@masknet/shared' import { debugModeSetting } from '../../../settings/settings' import { useI18N } from '../../../utils' import { MSG_DELIMITER } from '../constants' diff --git a/packages/maskbook/src/plugins/ITO/UI/RemindDialog.tsx b/packages/maskbook/src/plugins/ITO/UI/RemindDialog.tsx index 254e63385473..535104b21c39 100644 --- a/packages/maskbook/src/plugins/ITO/UI/RemindDialog.tsx +++ b/packages/maskbook/src/plugins/ITO/UI/RemindDialog.tsx @@ -5,7 +5,7 @@ import { FormattedAddress } from '@masknet/shared' import { useI18N } from '../../../utils' import { useStylesExtends } from '../../../components/custom-ui-helper' import ActionButton from '../../../extension/options-page/DashboardComponents/ActionButton' -import { TokenIcon } from '../../../extension/options-page/DashboardComponents/TokenIcon' +import { TokenIcon } from '@masknet/shared' import { resolveLinkOnExplorer, FungibleTokenDetailed, ChainId } from '@masknet/web3-shared' import { SwapStatus } from './SwapGuide' diff --git a/packages/maskbook/src/plugins/RedPacket/SNSAdaptor/RedPacketInHistoryList.tsx b/packages/maskbook/src/plugins/RedPacket/SNSAdaptor/RedPacketInHistoryList.tsx index 74cdc26f9949..d1ebf1b099af 100644 --- a/packages/maskbook/src/plugins/RedPacket/SNSAdaptor/RedPacketInHistoryList.tsx +++ b/packages/maskbook/src/plugins/RedPacket/SNSAdaptor/RedPacketInHistoryList.tsx @@ -7,7 +7,7 @@ import { RedPacketHistory, RedPacketJSONPayload, RedPacketStatus } from '../type import { useRemoteControlledDialog } from '../../../utils/hooks/useRemoteControlledDialog' import { useI18N } from '../../../utils/i18n-next-ui' import { formatBalance, TransactionStateType, useAccount } from '@masknet/web3-shared' -import { TokenIcon } from '../../../extension/options-page/DashboardComponents/TokenIcon' +import { TokenIcon } from '@masknet/shared' import { dateTimeFormat } from '../../ITO/assets/formatDate' import ActionButton from '../../../extension/options-page/DashboardComponents/ActionButton' import { StyledLinearProgress } from '../../ITO/UI/StyledLinearProgress' diff --git a/packages/maskbook/src/plugins/Snapshot/SNSAdaptor/InformationCard.tsx b/packages/maskbook/src/plugins/Snapshot/SNSAdaptor/InformationCard.tsx index b164b76cc699..902a49c908d6 100644 --- a/packages/maskbook/src/plugins/Snapshot/SNSAdaptor/InformationCard.tsx +++ b/packages/maskbook/src/plugins/Snapshot/SNSAdaptor/InformationCard.tsx @@ -9,7 +9,7 @@ import { Avatar, Box, Link, makeStyles, Typography } from '@material-ui/core' import OpenInNew from '@material-ui/icons/OpenInNew' import formatDateTime from 'date-fns/format' import { useContext } from 'react' -import { TokenIcon } from '../../../extension/options-page/DashboardComponents/TokenIcon' +import { TokenIcon } from '@masknet/shared' import { useI18N } from '../../../utils' import { EthereumBlockie } from '../../../web3/UI/EthereumBlockie' import { SnapshotContext } from '../context' diff --git a/packages/maskbook/src/plugins/Trader/UI/balancer/TradeRouteHop.tsx b/packages/maskbook/src/plugins/Trader/UI/balancer/TradeRouteHop.tsx index 1fb2a2feb9b2..01444abedfce 100644 --- a/packages/maskbook/src/plugins/Trader/UI/balancer/TradeRouteHop.tsx +++ b/packages/maskbook/src/plugins/Trader/UI/balancer/TradeRouteHop.tsx @@ -1,5 +1,5 @@ import { Box, makeStyles, AvatarGroup, Link } from '@material-ui/core' -import { TokenIcon } from '../../../../extension/options-page/DashboardComponents/TokenIcon' +import { TokenIcon } from '@masknet/shared' import { Hop, TradeProvider } from '../../types' import { resolveTradePairLink } from '../../pipes' diff --git a/packages/maskbook/src/plugins/Trader/UI/trader/TokenPanel.tsx b/packages/maskbook/src/plugins/Trader/UI/trader/TokenPanel.tsx index 399b9d372359..770ed5f6fa38 100644 --- a/packages/maskbook/src/plugins/Trader/UI/trader/TokenPanel.tsx +++ b/packages/maskbook/src/plugins/Trader/UI/trader/TokenPanel.tsx @@ -1,7 +1,7 @@ import type { FungibleTokenDetailed } from '@masknet/web3-shared' import { formatBalance } from '@masknet/web3-shared' import { Box, makeStyles, Theme, Typography } from '@material-ui/core' -import { TokenIcon } from '../../../../extension/options-page/DashboardComponents/TokenIcon' +import { TokenIcon } from '@masknet/shared' export interface TokenPanelProps { amount: string diff --git a/packages/maskbook/src/plugins/Trader/UI/trending/TrendingViewDeck.tsx b/packages/maskbook/src/plugins/Trader/UI/trending/TrendingViewDeck.tsx index ce1e729294a8..73210e2bb0ca 100644 --- a/packages/maskbook/src/plugins/Trader/UI/trending/TrendingViewDeck.tsx +++ b/packages/maskbook/src/plugins/Trader/UI/trending/TrendingViewDeck.tsx @@ -12,7 +12,7 @@ import { Linking } from './Linking' import { TrendingCard, TrendingCardProps } from './TrendingCard' import { PluginTransakMessages } from '../../../Transak/messages' import { useAccount } from '@masknet/web3-shared' -import { TokenIcon } from '../../../../extension/options-page/DashboardComponents/TokenIcon' +import { TokenIcon } from '@masknet/shared' import { useStylesExtends } from '../../../../components/custom-ui-helper' import type { FootnoteMenuOption } from '../trader/FootnoteMenu' import { TradeFooter } from '../trader/TradeFooter' diff --git a/packages/maskbook/src/plugins/Trader/UI/uniswap/TradeRoute.tsx b/packages/maskbook/src/plugins/Trader/UI/uniswap/TradeRoute.tsx index cb8061cc457e..7fa1157adfd5 100644 --- a/packages/maskbook/src/plugins/Trader/UI/uniswap/TradeRoute.tsx +++ b/packages/maskbook/src/plugins/Trader/UI/uniswap/TradeRoute.tsx @@ -1,9 +1,9 @@ import { AvatarGroup, Box, Breadcrumbs, makeStyles, Paper, Typography } from '@material-ui/core' import NavigateNextIcon from '@material-ui/icons/NavigateNext' -import { TokenIcon } from '../../../../extension/options-page/DashboardComponents/TokenIcon' import { useStylesExtends } from '../../../../components/custom-ui-helper' import type { TradeComputed } from '../../types' import { formatEthereumAddress } from '@masknet/web3-shared' +import { TokenIcon } from '@masknet/shared' const useStyles = makeStyles((theme) => ({ root: { diff --git a/packages/maskbook/src/plugins/Trader/messages.ts b/packages/maskbook/src/plugins/Trader/messages.ts index d3db601f0d50..8ed4e2bbfcbe 100644 --- a/packages/maskbook/src/plugins/Trader/messages.ts +++ b/packages/maskbook/src/plugins/Trader/messages.ts @@ -3,6 +3,7 @@ import { createPluginMessage } from '../utils/createPluginMessage' import { PLUGIN_IDENTIFIER } from './constants' import { createPluginRPC } from '../utils/createPluginRPC' import type { TraderProps } from './UI/trader/Trader' +import type { WebExtensionMessage } from '@dimensiondev/holoflows-kit' interface CashTagEvent { name: string @@ -50,7 +51,8 @@ interface PluginTraderMessage { } if (import.meta.webpackHot) import.meta.webpackHot.accept() -export const PluginTraderMessages = createPluginMessage(PLUGIN_IDENTIFIER) +export const PluginTraderMessages: WebExtensionMessage = + createPluginMessage(PLUGIN_IDENTIFIER) export const PluginTraderRPC = createPluginRPC( PLUGIN_IDENTIFIER, () => import('./services'), diff --git a/packages/maskbook/src/plugins/Transak/messages.ts b/packages/maskbook/src/plugins/Transak/messages.ts index d2f8e20db987..05965c9d8ae5 100644 --- a/packages/maskbook/src/plugins/Transak/messages.ts +++ b/packages/maskbook/src/plugins/Transak/messages.ts @@ -1,5 +1,6 @@ import { createPluginMessage } from '../utils/createPluginMessage' import { PLUGIN_IDENTIFIER } from './constants' +import type { WebExtensionMessage } from '@dimensiondev/holoflows-kit' type BuyTokenDialogEvent = | { @@ -16,4 +17,5 @@ interface PluginTransakMessage { } if (import.meta.webpackHot) import.meta.webpackHot.accept() -export const PluginTransakMessages = createPluginMessage(PLUGIN_IDENTIFIER) +export const PluginTransakMessages: WebExtensionMessage = + createPluginMessage(PLUGIN_IDENTIFIER) diff --git a/packages/maskbook/src/plugins/Wallet/SNSAdaptor/WalletConnectQRCodeDialog/QRCodeModel.tsx b/packages/maskbook/src/plugins/Wallet/SNSAdaptor/WalletConnectQRCodeDialog/QRCodeModel.tsx index 34add2fdf743..76d8f2881c8e 100644 --- a/packages/maskbook/src/plugins/Wallet/SNSAdaptor/WalletConnectQRCodeDialog/QRCodeModel.tsx +++ b/packages/maskbook/src/plugins/Wallet/SNSAdaptor/WalletConnectQRCodeDialog/QRCodeModel.tsx @@ -1,6 +1,6 @@ import { Grid, makeStyles, Typography } from '@material-ui/core' import { useI18N } from '../../../../utils' -import { QRCode } from '@masknet/theme' +import { QRCode } from '@masknet/shared' const useStyles = makeStyles((theme) => ({ container: { diff --git a/packages/maskbook/src/settings/createSettings.tsx b/packages/maskbook/src/settings/createSettings.tsx index 67e44e6b2c53..a8185245e77a 100644 --- a/packages/maskbook/src/settings/createSettings.tsx +++ b/packages/maskbook/src/settings/createSettings.tsx @@ -94,13 +94,12 @@ export function createGlobalSettings( return settings } +export interface NetworkSettingsCache { + [networkKey: string]: ValueRef & { ready: boolean; readyPromise: Promise } +} + export function createNetworkSettings(settingsKey: string) { - const cached: { - [networkKey: string]: ValueRef & { - ready: boolean - readyPromise: Promise - } - } = {} + const cached: NetworkSettingsCache = {} MaskMessage.events.createNetworkSettingsReady.on((networkKey) => { if (!(networkKey in cached)) cached[networkKey] = createInternalSettings(`${networkKey}+${settingsKey}`, '') }) diff --git a/packages/maskbook/src/settings/settings.ts b/packages/maskbook/src/settings/settings.ts index ac93b57f3b3c..d8f24ef73fac 100644 --- a/packages/maskbook/src/settings/settings.ts +++ b/packages/maskbook/src/settings/settings.ts @@ -1,4 +1,4 @@ -import { createGlobalSettings, createNetworkSettings } from './createSettings' +import { createGlobalSettings, createNetworkSettings, NetworkSettingsCache } from './createSettings' import i18nNextInstance, { i18n } from '../utils/i18n-next' import { sideEffect } from '../utils/side-effects' import { LaunchPage } from './types' @@ -11,6 +11,7 @@ export const debugModeSetting = createGlobalSettings('debugMode', false primary: () => i18n.t('settings_enable_debug'), secondary: () => i18n.t('settings_enable_debug_desc'), }) + /** * Never open a new tab in the background */ @@ -52,12 +53,27 @@ export const enableGroupSharingSettings = createGlobalSettings('experim secondary: () => '(Unstable) Automatically share posts to a group', }) -export const currentImagePayloadStatus = createNetworkSettings('currentImagePayloadStatus') -export const currentSelectedIdentity = createNetworkSettings('currentSelectedIdentity') -export const currentSetupGuideStatus = createNetworkSettings('currentSetupGuideStatus') +//#region network setting + +/** + * Expected Usage:export const currentImagePayloadStatus = createNetworkSettings('currentImagePayloadStatus') + * + * Work around the issue: + * https://github.com/microsoft/TypeScript/issues/42873 + * https://github.com/microsoft/TypeScript/issues/30858 + * + * References: + * PluginGitcoinMessages: packages/maskbook/src/plugins/Gitcoin/messages.ts + * PluginTraderMessages: packages/maskbook/src/plugins/Trader/messages.ts + * PluginTransakMessages: packages/maskbook/src/plugins/Transak/messages.ts + */ +export const currentImagePayloadStatus: NetworkSettingsCache = createNetworkSettings('currentImagePayloadStatus') +export const currentSelectedIdentity: NetworkSettingsCache = createNetworkSettings('currentSelectedIdentity') +export const currentSetupGuideStatus: NetworkSettingsCache = createNetworkSettings('currentSetupGuideStatus') export const currentImportingBackup = createGlobalSettings('importingBackup', false, { primary: () => 'DO NOT DISPLAY IT IN UI', }) +//#endregion export const launchPageSettings = createGlobalSettings('launchPage', LaunchPage.dashboard, { primary: () => i18n.t('settings_launch_page'), diff --git a/packages/maskbook/src/utils/hooks/index.ts b/packages/maskbook/src/utils/hooks/index.ts index 010b11b932e5..6921d6252a47 100644 --- a/packages/maskbook/src/utils/hooks/index.ts +++ b/packages/maskbook/src/utils/hooks/index.ts @@ -1,6 +1,5 @@ export * from './useAsyncTimes' export * from './useForms' -export * from './useImageFailover' export * from './useIsWindowVisible' export * from './useMatchXS' export * from './useMenu' diff --git a/packages/maskbook/src/utils/hooks/useImageFailover.ts b/packages/maskbook/src/utils/hooks/useImageFailover.ts deleted file mode 100644 index a5dd80026f0d..000000000000 --- a/packages/maskbook/src/utils/hooks/useImageFailover.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { useAsync } from 'react-use' -import { findAvailableImageURL } from '@dimensiondev/kit' - -export function useImageFailover(urls: readonly string[], suffix: string) { - return useAsync(async () => { - try { - const imgs = urls.map((v) => v + suffix) - const img = await findAvailableImageURL(imgs) - return urls[imgs.indexOf(img)] - } catch { - return '' - } - }) -} diff --git a/packages/maskbook/src/utils/i18n-next.ts b/packages/maskbook/src/utils/i18n-next.ts index 60abbff05134..90602d3f58d8 100644 --- a/packages/maskbook/src/utils/i18n-next.ts +++ b/packages/maskbook/src/utils/i18n-next.ts @@ -3,7 +3,7 @@ import en from '../_locales/en/messages.json' // english import zh from '../_locales/zh/messages.json' // traditional chinese import ko from '../_locales/ko/messages.json' // korean import ja from '../_locales/ja/messages.json' // japanese -import { addMaskThemeI18N } from '@masknet/theme' +import { addMaskSharedI18N } from '@masknet/shared' import type { I18NFunction } from './i18n-next-ui' // @ts-ignore in case circle dependency make typescript complains import { addDashboardI18N } from '@masknet/dashboard' @@ -26,7 +26,7 @@ i18nNextInstance.init({ }, fallbackLng: 'en', }) -addMaskThemeI18N(i18nNextInstance) +addMaskSharedI18N(i18nNextInstance) addDashboardI18N(i18nNextInstance) i18nNextInstance.languages = ['en', 'zh', 'ko', 'ja'] diff --git a/packages/maskbook/src/web3/UI/SelectTokenChip.tsx b/packages/maskbook/src/web3/UI/SelectTokenChip.tsx index 1ea850204a96..adc6d6059928 100644 --- a/packages/maskbook/src/web3/UI/SelectTokenChip.tsx +++ b/packages/maskbook/src/web3/UI/SelectTokenChip.tsx @@ -3,7 +3,7 @@ import { makeStyles, Theme, Chip, ChipProps, CircularProgress } from '@material- import ExpandMoreIcon from '@material-ui/icons/ExpandMore' import ErrorIcon from '@material-ui/icons/Error' import { noop } from 'lodash-es' -import { TokenIcon } from '../../extension/options-page/DashboardComponents/TokenIcon' +import { TokenIcon } from '@masknet/shared' import type { FungibleTokenDetailed } from '@masknet/web3-shared' import { useI18N } from '../../utils' diff --git a/packages/maskbook/src/web3/context.ts b/packages/maskbook/src/web3/context.ts index 791ad9c8e615..75a85a5669fa 100644 --- a/packages/maskbook/src/web3/context.ts +++ b/packages/maskbook/src/web3/context.ts @@ -22,6 +22,7 @@ import { import { Flags } from '../utils' import type { InternalSettings } from '../settings/createSettings' import { createExternalProvider } from './helpers' +import Services from '../extension/service' const Web3Provider = createExternalProvider() @@ -54,6 +55,7 @@ export const Web3Context: Web3ProviderType = { getAssetList: WalletRPC.getAssetsList, getAssetsListNFT: WalletRPC.getAssetsListNFT, getERC721TokensPaged, + fetchERC20TokensFromTokenLists: Services.Ethereum.fetchERC20TokensFromTokenLists, } async function getWallets() { diff --git a/packages/maskbook/tsconfig.json b/packages/maskbook/tsconfig.json index adc651ddcc6f..8e8465d3a075 100644 --- a/packages/maskbook/tsconfig.json +++ b/packages/maskbook/tsconfig.json @@ -10,11 +10,11 @@ // ! but dashboard/ depends maskbook/ on type level // ! do not add dashboard/ as a reference otherwise there is a circular dependency on the type level. "references": [ - { "path": "../shared/" }, + { "path": "../shared" }, { "path": "../web3-shared" }, { "path": "../constants" }, - { "path": "../theme/" }, - { "path": "../icons/" }, + { "path": "../theme" }, + { "path": "../icons" }, { "path": "../plugin-infra" }, { "path": "../external-plugin-previewer" } ], diff --git a/packages/plugin-infra/package.json b/packages/plugin-infra/package.json index 6c2558731e61..b9deda0f0fc4 100644 --- a/packages/plugin-infra/package.json +++ b/packages/plugin-infra/package.json @@ -6,7 +6,7 @@ "types": "./dist/", "scripts": {}, "dependencies": { - "@dimensiondev/holoflows-kit": "0.8.0-20210317064617-6c4792c", + "@dimensiondev/holoflows-kit": "=0.8.0-20210429202414-74fb9a1", "@masknet/shared": "workspace:*", "@masknet/theme": "workspace:*", "@masknet/web3-shared": "workspace:*", diff --git a/packages/plugin-infra/src/utils/index.tsx b/packages/plugin-infra/src/utils/index.tsx index 544a6a4ece87..fd0eabfceebb 100644 --- a/packages/plugin-infra/src/utils/index.tsx +++ b/packages/plugin-infra/src/utils/index.tsx @@ -1,6 +1,6 @@ import type { Plugin } from '../types' import { useEffect, useState, useRef } from 'react' -import { ErrorBoundary } from '@masknet/theme' +import { ErrorBoundary } from '@masknet/shared' type Inject = Plugin.InjectUI type Raw = Plugin.InjectUIRaw diff --git a/packages/shared/package.json b/packages/shared/package.json index 4d012b1ce8cf..5c18442672cd 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -3,8 +3,9 @@ "main": "./dist/index.js", "types": "./dist/index.d.ts", "dependencies": { - "@dimensiondev/holoflows-kit": "0.8.0-20210317064617-6c4792c", + "@dimensiondev/holoflows-kit": "=0.8.0-20210429202414-74fb9a1", "@dimensiondev/kit": "=0.0.0-20210630045432-e05621c", + "@masknet/theme": "workspace:*", "@masknet/web3-shared": "workspace:*", "@servie/events": "^3.0.0", "anchorme": "^2.1.2", @@ -12,6 +13,9 @@ "bignumber.js": "^9.0.1", "immer": "^9.0.2", "lodash-es": "^4.17.21", + "notistack": "^1.0.9", + "qrcode": "^1.4.4", + "react-use": "^17.2.4", "ts-results": "^3.3.0", "typeson": "^6.1.0", "typeson-registry": "^1.0.0-alpha.38", diff --git a/packages/shared/src/UI/UIHelper/custom-ui-helper.tsx b/packages/shared/src/UI/UIHelper/custom-ui-helper.tsx new file mode 100644 index 000000000000..17a90f9a9ffd --- /dev/null +++ b/packages/shared/src/UI/UIHelper/custom-ui-helper.tsx @@ -0,0 +1,36 @@ +/// +// Priority: classes from props > configHooks > defaultStyles +export function useStylesExtends( + defaultStyles: Record, + props: withClasses, + useConfigHooks?: () => Partial>, +): Record & Partial> { + // Note: this is a React hooks + const configOverwrite = useConfigHooks?.() + const propsOverwrite = props.classes + return mergeClasses(defaultStyles, configOverwrite, propsOverwrite) as any +} + +export function mergeClasses( + ...args: (Partial> | undefined)[] +): Partial> { + args = args.filter(Boolean) + if (args.length === 1) return args[0]! + const result = {} as Partial> + for (const current of args) { + if (!current) continue + for (const key in current) { + if (key === '__proto__') continue + if (key in result) result[key] = result[key] + ' ' + current[key] + else result[key] = current[key] + } + } + return result +} + +/** + * In case of y is a react hooks call, we should always call the hooks. So we can't use x ?? y directly. + */ +export function or(x: T | undefined, y: T) { + return x ?? y +} diff --git a/packages/shared/src/UI/UIHelper/custom-ui.d.ts b/packages/shared/src/UI/UIHelper/custom-ui.d.ts new file mode 100644 index 000000000000..4040b558d799 --- /dev/null +++ b/packages/shared/src/UI/UIHelper/custom-ui.d.ts @@ -0,0 +1,13 @@ +interface withClasses { + classes?: Partial> +} + +type PartialRequired = Partial & Pick + +type PropsOf = T extends React.ComponentType ? U : never + +type EnumRecord = { + [K in T]: U +} + +type UnboxPromise = T extends Promise ? R : never diff --git a/packages/theme/src/Components/ErrorBoundary/CrashUI.tsx b/packages/shared/src/UI/components/ErrorBoundary/CrashUI.tsx similarity index 98% rename from packages/theme/src/Components/ErrorBoundary/CrashUI.tsx rename to packages/shared/src/UI/components/ErrorBoundary/CrashUI.tsx index 1c43bc4fd7cf..d409fe718d3e 100644 --- a/packages/theme/src/Components/ErrorBoundary/CrashUI.tsx +++ b/packages/shared/src/UI/components/ErrorBoundary/CrashUI.tsx @@ -3,9 +3,9 @@ import { Alert, AlertTitle, experimentalStyled as styled } from '@material-ui/co import { useMemo, useState } from 'react' import ExpandLess from '@material-ui/icons/ExpandLess' import ExpandMore from '@material-ui/icons/ExpandMore' -import { useMaskThemeI18N } from '../../locales' import { useContext } from 'react' import { ErrorBoundaryBuildInfoContext, ErrorBoundaryError } from './context' +import { useMaskThemeI18N } from '../../../locales' export type CrashUIProps = ErrorBoundaryError & { /** Type of the Error */ diff --git a/packages/theme/src/Components/ErrorBoundary/ErrorBoundary.tsx b/packages/shared/src/UI/components/ErrorBoundary/ErrorBoundary.tsx similarity index 96% rename from packages/theme/src/Components/ErrorBoundary/ErrorBoundary.tsx rename to packages/shared/src/UI/components/ErrorBoundary/ErrorBoundary.tsx index 4cc7045466c7..ce198d27664d 100644 --- a/packages/theme/src/Components/ErrorBoundary/ErrorBoundary.tsx +++ b/packages/shared/src/UI/components/ErrorBoundary/ErrorBoundary.tsx @@ -1,5 +1,5 @@ import { Component, forwardRef } from 'react' -import { CrashUIProps, CrashUI, ErrorBoundaryError } from '.' +import { CrashUIProps, CrashUI, ErrorBoundaryError } from './index' const map = new WeakMap, React.ForwardRefExoticComponent>() /** diff --git a/packages/theme/src/Components/ErrorBoundary/context.ts b/packages/shared/src/UI/components/ErrorBoundary/context.ts similarity index 100% rename from packages/theme/src/Components/ErrorBoundary/context.ts rename to packages/shared/src/UI/components/ErrorBoundary/context.ts diff --git a/packages/theme/src/Components/ErrorBoundary/index.ts b/packages/shared/src/UI/components/ErrorBoundary/index.ts similarity index 100% rename from packages/theme/src/Components/ErrorBoundary/index.ts rename to packages/shared/src/UI/components/ErrorBoundary/index.ts diff --git a/packages/theme/src/Components/QRCode/index.tsx b/packages/shared/src/UI/components/QRCode/index.tsx similarity index 97% rename from packages/theme/src/Components/QRCode/index.tsx rename to packages/shared/src/UI/components/QRCode/index.tsx index f5403261e7f9..77b20ca34da6 100644 --- a/packages/theme/src/Components/QRCode/index.tsx +++ b/packages/shared/src/UI/components/QRCode/index.tsx @@ -1,10 +1,10 @@ import { makeStyles } from '@material-ui/core/styles' import qr from 'qrcode' import { useEffect, useRef, useState } from 'react' -import { SessionStorageCache } from '@masknet/shared' import { Typography } from '@material-ui/core' import { Trans } from 'react-i18next' import { blue } from '@material-ui/core/colors' +import { SessionStorageCache } from '../../../utils' interface QRProps { text: string diff --git a/packages/shared/src/UI/components/TokenIcon/TokenIconSpecialIconList.json b/packages/shared/src/UI/components/TokenIcon/TokenIconSpecialIconList.json new file mode 100644 index 000000000000..c2dabf84f51c --- /dev/null +++ b/packages/shared/src/UI/components/TokenIcon/TokenIconSpecialIconList.json @@ -0,0 +1,167 @@ +[ + { + "name": "NEST", + "address": "0x04abEdA201850aC0124161F037Efd70c74ddC74C", + "logo_url": "https://s2.coinmarketcap.com/static/img/coins/64x64/5841.png" + }, + { + "name": "Yes KYC", + "address": "0x14de81C71B3F73874659082b971433514E201B27", + "logo_url": "https://etherscan.io/token/images/ykyctoken_32.png" + }, + { + "name": "cWBTC", + "address": "0xC11b1268C1A384e55C48c2391d8d480264A3A7F4", + "logo_url": "https://etherscan.io/token/images/compoundwrappedbtc_32.png" + }, + { + "name": "DANK", + "address": "0x0cB8D0B37C7487b11d57F1f33dEfA2B1d3cFccfE", + "logo_url": "https://etherscan.io/token/images/dank_32.png" + }, + { + "name": "DSCP", + "address": "0x03e3f0c25965f13DbbC58246738C183E27b26a56", + "logo_url": "https://etherscan.io/token/images/disciplina_28.png" + }, + { + "name": "GEE", + "address": "0x4F4f0Db4de903B88f2B1a2847971E231D54F8fd3", + "logo_url": "https://etherscan.io/token/images/geens_28.png" + }, + { + "name": "FKX", + "address": "0x009e864923b49263c7F10D19B7f8Ab7a9A5AAd33", + "logo_url": "https://etherscan.io/token/images/knoxstertoken_32.png?v=2" + }, + { + "name": "N0031", + "address": "0x075190c6130EA0a3A7E40802F1D77F4Ea8f38fE2", + "logo_url": "https://etherscan.io/token/images/nestyfi_32.png" + }, + { + "name": "NFC", + "address": "0xb0866289e870D2efc282406cF4123Df6E5BcB652", + "logo_url": "https://etherscan.io/token/images/nofaketoday_28.png" + }, + { + "name": "O3Swap", + "address": "0xEe9801669C6138E84bD50dEB500827b776777d28", + "logo_url": "https://etherscan.io/token/images/o3swaptoken_32.png" + }, + { + "name": "QTUM", + "address": "0x9a642d6b3368ddc662CA244bAdf32cDA716005BC", + "logo_url": "https://etherscan.io/token/images/qtum_28.png" + }, + { + "name": "REMI", + "address": "0x13cb85823f78Cff38f0B0E90D3e975b8CB3AAd64", + "logo_url": "https://etherscan.io/token/images/remiit_28.png" + }, + { + "name": "REDC", + "address": "0xB563300A3BAc79FC09B93b6F84CE0d4465A2AC27", + "logo_url": "https://etherscan.io/token/images/redcab_28.png" + }, + { + "name": "SBTC", + "address": "0xfE18be6b3Bd88A2D2A7f928d00292E7a9963CfC6", + "logo_url": "https://etherscan.io/token/images/Synthetixsbtc_32.png" + }, + { + "name": "TPT", + "address": "0xC596bD09d652827b0106292D3e378D5938df4B12", + "logo_url": "https://etherscan.io/token/images/009-TPT-Teleport-Token-Coin-Logo.png" + }, + { + "name": "TRL", + "address": "0xCed1A8529125D1bD06B54a7B01210df357D00885", + "logo_url": "https://etherscan.io/token/images/giraffage_28.png" + }, + { + "name": "UPX", + "address": "0x5f778ec4B31a506c1Dfd8b06F131E9B451a61D39", + "logo_url": "https://etherscan.io/token/images/udap_28.png" + }, + { + "name": "WYV", + "address": "0x056017c55aE7AE32d12AeF7C679dF83A85ca75Ff", + "logo_url": "https://etherscan.io/token/images/wyvern_28.png" + }, + { + "name": "VDOC", + "address": "0x82BD526bDB718C6d4DD2291Ed013A5186cAE2DCa", + "logo_url": "https://etherscan.io/token/images/vdoc_28.png" + }, + { + "name": "rSAI", + "address": "0xea8b224eDD3e342DEb514C4176c2E72Bcce6fFF9", + "logo_url": "https://etherscan.io/token/images/redeemabledai_32.png?v=2" + }, + { + "name": "ALICE", + "address": "0xAC51066d7bEC65Dc4589368da368b212745d63E8", + "logo_url": "https://bscscan.com/token/images/alicetoken_32.png" + }, + { + "name": "BP", + "address": "0xACB8f52DC63BB752a51186D1c55868ADbFfEe9C1", + "logo_url": "https://bscscan.com/token/images/bunnypark_32.png" + }, + { + "name": "DOGGY", + "address": "0x74926B3d118a63F6958922d3DC05eB9C6E6E00c6", + "logo_url": "https://bscscan.com/token/images/doggy_32.png" + }, + { + "name": "DCH", + "address": "0x14ACe3d3429408bFA8562099A253172913AD71bd", + "logo_url": "https://bscscan.com/token/images/dechart_32.png" + }, + { + "name": "FRANK", + "address": "0x129e6d84c6CAb9b0c2F37aD1D14a9fe2E59DAb09", + "logo_url": "https://bscscan.com/token/images/frankenstein_32.png" + }, + { + "name": "RFOX", + "address": "0x0a3A21356793B49154Fd3BbE91CBc2A16c0457f5", + "logo_url": "https://bscscan.com/token/images/redfoxlabs_32.png" + }, + { + "name": "FOR", + "address": "0x658A109C5900BC6d2357c87549B651670E5b0539", + "logo_url": "https://bscscan.com/token/images/forceprotocol_32.png" + }, + { + "name": "TPT", + "address": "0xECa41281c24451168a37211F0bc2b8645AF45092", + "logo_url": "https://bscscan.com/token/images/tokenpocket_32.png" + }, + { + "name": "UNCL", + "address": "0x0E8D5504bF54D9E44260f8d153EcD5412130CaBb", + "logo_url": "https://bscscan.com/token/images/unicrypt-uncl_32.png" + }, + { + "name": "UNCX", + "address": "0x09a6c44c3947B69E2B45F4D51b67E6a39ACfB506", + "logo_url": "https://bscscan.com/token/images/unicrypt_32.png" + }, + { + "name": "WOOP", + "address": "0x8b303d5BbfBbf46F1a4d9741E491e06986894e18", + "logo_url": "https://bscscan.com/token/images/woonkly_32.png" + }, + { + "name": "ZIL", + "address": "0xb86AbCb37C3A4B64f74f59301AFF131a1BEcC787", + "logo_url": "https://bscscan.com/token/images/zilliqa_32.png" + }, + { + "name": "PBTC", + "address": "0xeD28A457A5A76596ac48d87C0f577020F6Ea1c4C", + "logo_url": "https://bscscan.com/token/images/ptokenbtc_32.png" + } +] diff --git a/packages/shared/src/UI/components/TokenIcon/index.tsx b/packages/shared/src/UI/components/TokenIcon/index.tsx new file mode 100644 index 000000000000..b0621862d519 --- /dev/null +++ b/packages/shared/src/UI/components/TokenIcon/index.tsx @@ -0,0 +1,93 @@ +import { makeStyles, Avatar, Theme, AvatarProps } from '@material-ui/core' +import { useImageFailOver } from '../../index' +import SPECIAL_ICON_LIST from './TokenIconSpecialIconList.json' +import { useStylesExtends } from '../../UIHelper/custom-ui-helper' +import { + ChainId, + currySameAddress, + formatEthereumAddress, + getTokenAssetBaseURLConstants, + getTokenConstants, + isSameAddress, + useBlockie, + useChainDetailed, +} from '@masknet/web3-shared' +import { memo } from 'react' + +//#region fix icon image +function resolveTokenIconURLs(address: string, baseURIs: string[], chainId: ChainId, logoURI?: string) { + const checkSummedAddress = formatEthereumAddress(address) + + if (isSameAddress(getTokenConstants().NATIVE_TOKEN_ADDRESS, checkSummedAddress)) { + return baseURIs.map((x) => `${x}/info/logo.png`) + } + + const specialIcon = SPECIAL_ICON_LIST.find(currySameAddress(address)) + + if (specialIcon) return [specialIcon.logo_url] + + // load from remote + const fullIconAssetURIs = baseURIs.map((x) => `${x}/assets/${checkSummedAddress}/logo.png`) + return logoURI ? [logoURI] : fullIconAssetURIs +} +//#endregion + +const useStyles = makeStyles((theme: Theme) => ({ + icon: { + width: 16, + height: 16, + backgroundColor: theme.palette.common.white, + margin: 0, + }, +})) + +export interface TokenIconProps extends withClasses { + name?: string + logoURI?: string + chainId?: ChainId + address: string + AvatarProps?: Partial +} + +export function TokenIcon(props: TokenIconProps) { + const { address, logoURI, name, chainId, AvatarProps, classes } = props + + const chainDetailed = useChainDetailed() + const tokenBlockie = useBlockie(address) + const { TOKEN_ASSET_BASE_URI } = getTokenAssetBaseURLConstants() + + const tokenURIs = resolveTokenIconURLs(address, TOKEN_ASSET_BASE_URI, chainId ?? ChainId.Mainnet, logoURI) + const { value: logoURL, loading } = useImageFailOver(chainDetailed ? tokenURIs : [], '') + + return ( + + ) +} + +export interface TokenIconUIProps extends withClasses { + logoURL?: string + loading: boolean + AvatarProps?: Partial + tokenBlockie: string + name?: string +} + +export const TokenIconUI = memo((props) => { + const { logoURL, loading, AvatarProps, tokenBlockie, name } = props + const classes = useStylesExtends(useStyles(), props) + + return ( + + + {name?.substr(0, 1).toLocaleUpperCase()} + + + ) +}) diff --git a/packages/shared/src/UI/components/TokenList/TokenListItem.tsx b/packages/shared/src/UI/components/TokenList/TokenListItem.tsx new file mode 100644 index 000000000000..f1bc898df3e2 --- /dev/null +++ b/packages/shared/src/UI/components/TokenList/TokenListItem.tsx @@ -0,0 +1,84 @@ +import { makeStyles, Theme } from '@material-ui/core/styles' +import { ListItem, ListItemText, Typography, ListItemIcon, Button } from '@material-ui/core' +import { Asset, formatBalance } from '@masknet/web3-shared' +import { TokenIcon } from '../TokenIcon' +import type { MaskSearchableListItemProps } from '@masknet/theme' + +// todo: change Typography from global theme +const useStyles = makeStyles((theme: Theme) => ({ + icon: { + width: 36, + height: 36, + }, + list: { + paddingLeft: theme.spacing(1), + }, + text: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + }, + primary: { + flex: 1, + whiteSpace: 'nowrap', + textOverflow: 'ellipsis', + overflow: 'hidden', + paddingRight: theme.spacing(1), + }, + name: { + display: 'block', + lineHeight: '20px', + fontSize: 14, + }, + secondary: { + fontSize: 14, + textAlign: 'right', + }, + symbol: { + lineHeight: '20px', + fontSize: 14, + }, + importButton: { + borderRadius: '30px', + }, +})) + +export function TokenListItem({ data, onSelect }: MaskSearchableListItemProps) { + const classes = useStyles() + const token = data.token + + if (!token) return null + const { address, name, symbol } = token + + const handleTokenSelect = (e: React.MouseEvent) => { + e.stopPropagation() + onSelect(data) + } + + return ( + + + + + + + {symbol} + {name} + + + {data.isAddedToken ? ( + {formatBalance(data.balance, token.decimals)} + ) : ( + + )} + + + + ) +} diff --git a/packages/shared/src/UI/components/TokenList/index.tsx b/packages/shared/src/UI/components/TokenList/index.tsx new file mode 100644 index 000000000000..3a852e35855e --- /dev/null +++ b/packages/shared/src/UI/components/TokenList/index.tsx @@ -0,0 +1,32 @@ +import React, { memo } from 'react' +import { TokenListItem } from './TokenListItem' +import { some } from 'lodash-es' +import type { Asset, FungibleTokenDetailed } from '@masknet/web3-shared' +import { EthereumTokenType, isSameAddress, useERC20Tokens } from '@masknet/web3-shared' +import { SearchableList } from '@masknet/theme' + +export interface TokenListProps { + onSelect(asset: Asset): void + placeholder?: string + assets: Asset[] + loading: boolean +} + +const checkAddedToken = (token: FungibleTokenDetailed, tokens: FungibleTokenDetailed[]) => + token.type === EthereumTokenType.Native || some(tokens, (t: any) => isSameAddress(token.address, t.address)) + +export const TokenList: React.FC = memo(({ onSelect, placeholder, assets, loading }) => { + const tokens = useERC20Tokens() + + const renderAsset = assets.map((x: Asset) => ({ ...x, isAddedToken: checkAddedToken(x.token, tokens) })) + + return ( + + onSelect={onSelect} + data={renderAsset} + searchKey={['token.address', 'token.symbol', 'token.name']} + itemRender={TokenListItem} + placeholder={loading ? placeholder : undefined} + /> + ) +}) diff --git a/packages/shared/src/UI/components/index.ts b/packages/shared/src/UI/components/index.ts new file mode 100644 index 000000000000..180114e9bef5 --- /dev/null +++ b/packages/shared/src/UI/components/index.ts @@ -0,0 +1,4 @@ +export * from './TokenIcon' +export * from './TokenList' +export * from './QRCode' +export * from './ErrorBoundary' diff --git a/packages/shared/src/UI/hooks/index.ts b/packages/shared/src/UI/hooks/index.ts new file mode 100644 index 000000000000..d7e593adb438 --- /dev/null +++ b/packages/shared/src/UI/hooks/index.ts @@ -0,0 +1 @@ +export * from './useImageFailOver' diff --git a/packages/dashboard/src/hooks/useImageFailOver.ts b/packages/shared/src/UI/hooks/useImageFailOver.ts similarity index 100% rename from packages/dashboard/src/hooks/useImageFailOver.ts rename to packages/shared/src/UI/hooks/useImageFailOver.ts diff --git a/packages/shared/src/UI/index.ts b/packages/shared/src/UI/index.ts new file mode 100644 index 000000000000..ff1eef7b9f26 --- /dev/null +++ b/packages/shared/src/UI/index.ts @@ -0,0 +1,3 @@ +export * from './UIHelper/custom-ui-helper' +export * from './hooks' +export * from './components' diff --git a/packages/shared/src/hooks/index.ts b/packages/shared/src/hooks/index.ts index 82eb3a5c0f84..041df502f0d9 100644 --- a/packages/shared/src/hooks/index.ts +++ b/packages/shared/src/hooks/index.ts @@ -1,4 +1,5 @@ export * from './useValueRef' export * from './useObservableMapSet' export * from './useMenu' +export * from './useSnackbarCallback' export * from './useScrollBottomEvent' diff --git a/packages/theme/src/hooks/useSnackbarCallback.tsx b/packages/shared/src/hooks/useSnackbarCallback.tsx similarity index 100% rename from packages/theme/src/hooks/useSnackbarCallback.tsx rename to packages/shared/src/hooks/useSnackbarCallback.tsx diff --git a/packages/shared/src/index.ts b/packages/shared/src/index.ts index d9cf04e088da..ce94045121be 100644 --- a/packages/shared/src/index.ts +++ b/packages/shared/src/index.ts @@ -12,3 +12,6 @@ export * from './hooks' export * from './crypto/JWKType' export * from './wallet' export * from './Persona/type' +export * from './Persona/type' +export * from './UI' +export * from './locales' diff --git a/packages/theme/src/locales/en.json b/packages/shared/src/locales/en.json similarity index 100% rename from packages/theme/src/locales/en.json rename to packages/shared/src/locales/en.json diff --git a/packages/theme/src/locales/index.ts b/packages/shared/src/locales/index.ts similarity index 54% rename from packages/theme/src/locales/index.ts rename to packages/shared/src/locales/index.ts index 839128abd7f4..18cd8ea6526a 100644 --- a/packages/theme/src/locales/index.ts +++ b/packages/shared/src/locales/index.ts @@ -1,9 +1,10 @@ +import { createI18NBundle } from '../i18n/register-ns' + export * from './i18n_generated' -import { createI18NBundle } from '@masknet/shared' import en from './en.json' import zh from './zh.json' import ja from './ja.json' -export const addMaskThemeI18N = createI18NBundle('theme', { +export const addMaskSharedI18N = createI18NBundle('theme', { en, zh, ja, diff --git a/packages/theme/src/locales/ja.json b/packages/shared/src/locales/ja.json similarity index 100% rename from packages/theme/src/locales/ja.json rename to packages/shared/src/locales/ja.json diff --git a/packages/theme/src/locales/zh.json b/packages/shared/src/locales/zh.json similarity index 100% rename from packages/theme/src/locales/zh.json rename to packages/shared/src/locales/zh.json diff --git a/packages/shared/tsconfig.json b/packages/shared/tsconfig.json index 266df49a045a..da0c9c74fa4c 100644 --- a/packages/shared/tsconfig.json +++ b/packages/shared/tsconfig.json @@ -6,9 +6,9 @@ "experimentalDecorators": true, "tsBuildInfoFile": "./dist/.tsbuildinfo" }, - "include": ["./src/"], + "include": ["./src/**/*", "./src/**/*.json", "./src/locales/*.json"], "ts-node": { "compilerOptions": { "module": "CommonJS" } }, - "references": [{ "path": "../web3-shared" }] + "references": [{ "path": "../web3-shared" }, { "path": "../theme" }] } diff --git a/packages/theme/.storybook/preview.js b/packages/theme/.storybook/preview.js index fe8025c5b12f..dd7adef3cc3e 100644 --- a/packages/theme/.storybook/preview.js +++ b/packages/theme/.storybook/preview.js @@ -3,7 +3,6 @@ import { ThemeProvider, StyledEngineProvider, Box } from '@material-ui/core' import { StylesProvider } from '@material-ui/styles' import { MaskDarkTheme, MaskLightTheme, applyMaskColorVars } from '../src/theme' import { withMatrix } from 'storybook-addon-matrix' -import { addMaskThemeI18N } from '../src/locales' import { I18nextProvider, initReactI18next } from 'react-i18next' import i18n from 'i18next' i18n.init({ @@ -13,7 +12,6 @@ i18n.init({ fallbackLng: 'en', }) i18n.use(initReactI18next) -addMaskThemeI18N(i18n) export const parameters = { actions: { argTypesRegex: '^on[A-Z].*' }, } diff --git a/packages/theme/README.md b/packages/theme/README.md index 17519d70e5ee..b8a446fac0a6 100644 --- a/packages/theme/README.md +++ b/packages/theme/README.md @@ -1,10 +1,3 @@ # Mask Theme This is shared theme and components. Preview all components in this package at . - -To use this package, you must setup `i18next`. - -```ts -import { addMaskThemeI18N } from '@masknet/theme' -addMaskThemeI18N(your_i18next_instance) -``` diff --git a/packages/theme/package.json b/packages/theme/package.json index 78c3b2baf79f..ee86e7886531 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -14,12 +14,11 @@ "start": "dev -- start-storybook -p 6006" }, "dependencies": { - "@masknet/shared": "workspace:*", "@masknet/storybook-shared": "workspace:*", "classnames": "^2.3.1", + "fuse.js": "^6.4.6", "lodash-es": "^4.17.20", - "notistack": "^1.0.9", - "qrcode": "^1.4.4", + "react-window": "^1.8.6", "tinycolor2": "^1.4.2" }, "devDependencies": { diff --git a/packages/theme/src/Components/SearchableList/MaskSearchableItemInList.tsx b/packages/theme/src/Components/SearchableList/MaskSearchableItemInList.tsx new file mode 100644 index 000000000000..ce9d72ff4c8e --- /dev/null +++ b/packages/theme/src/Components/SearchableList/MaskSearchableItemInList.tsx @@ -0,0 +1,25 @@ +import React from 'react' + +interface FixSizeListItemProps extends React.PropsWithChildren<{}> { + data: { + dataSet: T[] + onSelect: any + } + index: number + style: any +} + +export interface MaskSearchableListItemProps extends React.PropsWithChildren<{}> { + data: T + index: number + onSelect(item: T): void +} + +export const MaskSearchableItemInList = ({ children, data, index, style }: FixSizeListItemProps) => ( +
+ {React.createElement>( + children as React.FunctionComponent>, + { data: data.dataSet[index], index: index, onSelect: data.onSelect }, + )} +
+) diff --git a/packages/theme/src/Components/SearchableList/SearchableList.tsx b/packages/theme/src/Components/SearchableList/SearchableList.tsx new file mode 100644 index 000000000000..0c2d40bf6a38 --- /dev/null +++ b/packages/theme/src/Components/SearchableList/SearchableList.tsx @@ -0,0 +1,153 @@ +import React, { ReactNode, useMemo, useState } from 'react' +import { FixedSizeList, FixedSizeListProps } from 'react-window' +import Fuse from 'fuse.js' +import { uniqBy } from 'lodash-es' +import { InputAdornment, makeStyles, TextField, Typography } from '@material-ui/core' +import { Search } from '@material-ui/icons' +import { MaskColorVar } from '../../constants' +import { MaskSearchableItemInList } from './MaskSearchableItemInList' + +export interface MaskSearchableListProps { + /** The list data should be render */ + data: T[] + /** The identity of list data item for remove duplicates item */ + itemKey?: keyof T + /** Intermediate state when data is loaded */ + placeholder?: ReactNode + /** The key of list item for search */ + searchKey?: string[] + /** Renderer for each list item */ + itemRender: ReactNode + /** The props to react-window */ + FixedSizeListProps?: Partial + /** The callback when clicked someone list item */ + onSelect(selected: T): void + /** The hook when search */ + onSearch?(data: T[], key: string): T[] +} + +/** + * This component is used to provide a searchable list in Mask design. + * + * @example + * interface IListDate { name: string } + * const ListItem = ({ name }: IListDate) =>
{ name }
+ * const onSelect = () => {} + * + * return ( + * + * onSelect={onSelect} + * data={ListData} + * searchKey={['name']} + * itemRender={ListItem} + * /> + * ) + */ +export const SearchableList = ({ + itemKey, + data, + placeholder, + onSelect, + onSearch, + searchKey, + itemRender, + FixedSizeListProps, +}: MaskSearchableListProps) => { + const [keyword, setKeyword] = useState('') + const classes = useStyles() + + //#region fuse + const fuse = useMemo( + () => + new Fuse(data, { + shouldSort: true, + threshold: 0.45, + minMatchCharLength: 1, + keys: searchKey ?? Object.keys(data.length > 0 ? data[0] : []), + }), + [data], + ) + //#endregion + + //#region create searched data + const readyToRenderData = useMemo(() => { + if (!keyword) return data + const filtered = [...(onSearch ? onSearch(data, keyword) : []), ...fuse.search(keyword).map((x: any) => x.item)] + return itemKey ? uniqBy(filtered, (x) => x[itemKey]) : filtered + }, [keyword, fuse, data]) + //#endregion + + return ( +
+ + + + ), + }} + onChange={(e) => setKeyword(e.currentTarget.value)} + /> + {placeholder && ( + + {placeholder} + + )} + {!placeholder && ( +
+ + {(props) => {...props}>{itemRender}} + +
+ )} +
+ ) +} + +const useStyles = makeStyles((theme) => ({ + container: { + paddingBottom: theme.spacing(4), + }, + textField: { + '&>div': { + borderRadius: theme.spacing(1), + background: MaskColorVar.normalBackground, + }, + }, + list: { + marginTop: theme.spacing(1), + '& > div::-webkit-scrollbar': { + width: '7px', + }, + '& > div::-webkit-scrollbar-track': { + boxShadow: 'inset 0 0 6px rgba(0,0,0,0.00)', + webkitBoxShadow: 'inset 0 0 6px rgba(0,0,0,0.00)', + }, + '& > div::-webkit-scrollbar-thumb': { + borderRadius: '4px', + backgroundColor: MaskColorVar.normalBackground, + }, + }, + placeholder: { + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + minHeight: '300px', + fontSize: 16, + }, +})) diff --git a/packages/theme/src/Components/SearchableList/index.ts b/packages/theme/src/Components/SearchableList/index.ts new file mode 100644 index 000000000000..c6903f209424 --- /dev/null +++ b/packages/theme/src/Components/SearchableList/index.ts @@ -0,0 +1,2 @@ +export * from './SearchableList' +export * from './MaskSearchableItemInList' diff --git a/packages/theme/src/Components/index.ts b/packages/theme/src/Components/index.ts index 9912aa8707c7..8dc0df912e62 100644 --- a/packages/theme/src/Components/index.ts +++ b/packages/theme/src/Components/index.ts @@ -1,5 +1,4 @@ -export * from './ErrorBoundary/index' export * from './Dialogs/index' export * from './ButtonGroupTab/index' -export * from './QRCode/index' export * from './Snackbar' +export * from './SearchableList' diff --git a/packages/theme/src/hooks/index.ts b/packages/theme/src/hooks/index.ts index 7c505cd428b2..6437b5291118 100644 --- a/packages/theme/src/hooks/index.ts +++ b/packages/theme/src/hooks/index.ts @@ -1,2 +1 @@ export * from './useTabs' -export * from './useSnackbarCallback' diff --git a/packages/theme/src/theme.ts b/packages/theme/src/theme.ts index 715a7aaa4165..6896841d60de 100644 --- a/packages/theme/src/theme.ts +++ b/packages/theme/src/theme.ts @@ -34,7 +34,6 @@ export const MaskLightTheme = MaskTheme('light') export const MaskDarkTheme = MaskTheme('dark') export * from './Components/index' export * from './hooks/index' -export { addMaskThemeI18N } from './locales' export { getMaskColor, useMaskColor, MaskColorVar, applyMaskColorVars } from './constants' const query = '(prefers-color-scheme: dark)' diff --git a/packages/theme/stories/components/SearchableList.stories.tsx b/packages/theme/stories/components/SearchableList.stories.tsx new file mode 100644 index 000000000000..5ac945180eb4 --- /dev/null +++ b/packages/theme/stories/components/SearchableList.stories.tsx @@ -0,0 +1,10 @@ +import { story } from '../utils' +import { SearchableListExample } from './SearchableListExample' + +const { meta, of } = story(SearchableListExample) +export default meta({ + title: 'Components/Searchable List', + parameters: {}, +}) + +export const SearchableList = of({}) diff --git a/packages/theme/stories/components/SearchableListExample.tsx b/packages/theme/stories/components/SearchableListExample.tsx new file mode 100644 index 000000000000..518efd4d8ad5 --- /dev/null +++ b/packages/theme/stories/components/SearchableListExample.tsx @@ -0,0 +1,41 @@ +import { SearchableList } from '../../src/Components/SearchableList' +import { DialogContent } from '@material-ui/core' +import { MaskDialog } from '../../src/Components' +import { experimentalStyled as styled } from '@material-ui/core/styles' + +const demoData: IDemoData[] = [ + { address: 'ETH' }, + { address: 'MASK' }, + { address: 'ETH' }, + { address: 'UMI' }, + { address: 'AMP' }, + { address: 'ANT' }, + { address: 'BAL' }, + { address: 'YFI' }, +] + +interface IItemProps { + data: IDemoData +} + +interface IDemoData { + address: string +} + +const ListItem = styled('div')` + line-height: 60px; +` + +export function SearchableListItemExample({ data }: IItemProps) { + return {data.address} +} + +export function SearchableListExample() { + return ( + + + data={demoData} onSelect={() => {}} itemRender={SearchableListItemExample} /> + + + ) +} diff --git a/packages/theme/tsconfig.json b/packages/theme/tsconfig.json index e01bc308e701..c573945fdad2 100644 --- a/packages/theme/tsconfig.json +++ b/packages/theme/tsconfig.json @@ -5,8 +5,8 @@ "outDir": "./dist/", "resolveJsonModule": true }, - "include": ["./src/", "./stories", "./src/locales/*.json"], - "references": [{ "path": "../storybook-shared/" }, { "path": "../shared/" }], + "include": ["./src/", "./stories"], + "references": [{ "path": "../storybook-shared/" }], "ts-node": { "compilerOptions": { "module": "CommonJS" } } diff --git a/packages/web3-shared/package.json b/packages/web3-shared/package.json index 18552d321fd1..b5ddb1699bdb 100644 --- a/packages/web3-shared/package.json +++ b/packages/web3-shared/package.json @@ -8,6 +8,7 @@ "@masknet/contracts": "workspace:*", "bignumber.js": "9.0.1", "ethereum-blockies": "^0.1.1", + "fuse.js": "^6.4.6", "lodash-es": "^4.17.21", "react-use": "^17.2.4", "unstated-next": "^1.1.0", diff --git a/packages/web3-shared/src/constants/index.ts b/packages/web3-shared/src/constants/index.ts index 59b81bf7a629..f8d78df943b2 100644 --- a/packages/web3-shared/src/constants/index.ts +++ b/packages/web3-shared/src/constants/index.ts @@ -8,6 +8,7 @@ import Token from '@masknet/constants/data/token.json' import Trader from '@masknet/constants/data/trader.json' import Trending from '@masknet/constants/data/trending.json' import URL from '@masknet/constants/data/url.json' +import TokenAssetBaseURL from '@masknet/constants/data/token-asset-base-url.json' import { hookTransform, transform } from './utils' export const getAirdropConstants = transform(Airdrop) @@ -39,3 +40,6 @@ export const useTrendingConstants = hookTransform(getTrendingConstants) export const getURLConstants = transform(URL) export const useURLConstants = hookTransform(getURLConstants) + +export const getTokenAssetBaseURLConstants = transform(TokenAssetBaseURL) +export const useTokenAssetBaseURLConstants = hookTransform(getURLConstants) diff --git a/packages/web3-shared/src/context/type.ts b/packages/web3-shared/src/context/type.ts index 4ee5f5a11eab..ce6202e4f3b1 100644 --- a/packages/web3-shared/src/context/type.ts +++ b/packages/web3-shared/src/context/type.ts @@ -38,4 +38,5 @@ export interface Web3ProviderType { size?: number, ) => Promise<{ assets: (ERC721TokenAssetDetailed | ERC1155TokenAssetDetailed)[]; hasNextPage: boolean }> getERC721TokensPaged: (index: number, count: number, query?: string) => Promise + fetchERC20TokensFromTokenLists: (urls: string[], chainId: ChainId) => Promise } diff --git a/packages/web3-shared/src/hooks/index.ts b/packages/web3-shared/src/hooks/index.ts index 53f809e3d144..4bccea63086c 100644 --- a/packages/web3-shared/src/hooks/index.ts +++ b/packages/web3-shared/src/hooks/index.ts @@ -14,6 +14,7 @@ export * from './useERC20TokenApproveCallback' export * from './useERC20TokenBalance' export * from './useERC20TokenDetailed' export * from './useERC20TokenTransferCallback' +export * from './useERC20TokensDetailedFromTokenLists' export * from './useERC721TokenAssetDetailed' export * from './useERC721TokenBalance' export * from './useERC721TokenByIndex' diff --git a/packages/web3-shared/src/hooks/useERC20TokensDetailedFromTokenLists.ts b/packages/web3-shared/src/hooks/useERC20TokensDetailedFromTokenLists.ts new file mode 100644 index 000000000000..da288796474b --- /dev/null +++ b/packages/web3-shared/src/hooks/useERC20TokensDetailedFromTokenLists.ts @@ -0,0 +1,72 @@ +import { useMemo } from 'react' +import { useAsync } from 'react-use' +import Fuse from 'fuse.js' +import { EthereumAddress } from 'wallet.ts' +import { useWeb3Context } from '../context' +import { useChainId } from './useChainId' +import { currySameAddress } from '../utils' +import { EthereumTokenType } from '../types' +import { useERC20TokenDetailed } from './useERC20TokenDetailed' + +export enum TokenListsState { + READY, + LOADING_TOKEN_LISTS, + LOADING_SEARCHED_TOKEN, +} + +export function useERC20TokensDetailedFromTokenLists(lists: string[], keyword: string = '') { + //#region fetch token lists + const chainId = useChainId() + const { fetchERC20TokensFromTokenLists } = useWeb3Context() + const { value: allTokens = [], loading: loadingAllTokens } = useAsync( + async () => (lists.length === 0 ? [] : fetchERC20TokensFromTokenLists(lists, chainId)), + [chainId, lists.sort().join()], + ) + //#endregion + + //#region fuse + const fuse = useMemo( + () => + new Fuse(allTokens, { + shouldSort: true, + threshold: 0.45, + minMatchCharLength: 1, + keys: [ + { name: 'name', weight: 0.5 }, + { name: 'symbol', weight: 0.5 }, + ], + }), + [allTokens], + ) + //#endregion + + //#region create searched tokens + const searchedTokens = useMemo(() => { + if (!keyword) return allTokens + return [ + ...(EthereumAddress.isValid(keyword) ? allTokens.filter(currySameAddress(keyword)) : []), + ...fuse.search(keyword).map((x) => x.item), + ] + }, [keyword, fuse, allTokens]) + //#endregion + + //#region add token by address + const matchedToken = useMemo(() => { + if (!keyword || !EthereumAddress.isValid(keyword) || searchedTokens.length) return + return { + type: EthereumTokenType.ERC20, + address: keyword, + } + }, [keyword, searchedTokens.length]) + const { value: searchedToken, loading: loadingSearchedToken } = useERC20TokenDetailed(matchedToken?.address ?? '') + //#endregion + + return { + state: loadingAllTokens + ? TokenListsState.LOADING_TOKEN_LISTS + : loadingSearchedToken + ? TokenListsState.LOADING_SEARCHED_TOKEN + : TokenListsState.READY, + tokensDetailed: searchedTokens.length ? searchedTokens : searchedToken ? [searchedToken] : [], + } +} diff --git a/packages/web3-shared/src/types/index.ts b/packages/web3-shared/src/types/index.ts index 5185fc4dc6ed..8df0f39ffb68 100644 --- a/packages/web3-shared/src/types/index.ts +++ b/packages/web3-shared/src/types/index.ts @@ -70,6 +70,7 @@ export interface NativeTokenDetailed extends NativeToken { name: string symbol: string decimals: number + logoURI?: string } //#endregion @@ -84,6 +85,7 @@ export interface ERC20TokenDetailed extends ERC20Token { name?: string symbol?: string decimals: number + logoURI?: string } //#endregion diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bc8eeef1bb3c..3b3068c64afc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -112,7 +112,7 @@ importers: '@types/lodash': 4.14.170 '@types/proper-lockfile': 4.1.1 gulp: 4.0.2 - ts-node: 10.0.0_typescript@4.3.2 + ts-node: 10.0.0 packages/constants: specifiers: {} @@ -127,7 +127,7 @@ importers: web3-eth-contract: ^1.3.4 dependencies: '@typechain/web3-v1': 3.0.0_typechain@5.0.0 - typechain: 5.0.0_typescript@4.3.2 + typechain: 5.0.0 devDependencies: bn.js: 4.12.0 promievent: 0.1.5 @@ -137,7 +137,7 @@ importers: packages/dashboard: specifiers: '@babel/core': ^7.14.3 - '@dimensiondev/holoflows-kit': 0.8.0-20210317064617-6c4792c + '@dimensiondev/holoflows-kit': '=0.8.0-20210429202414-74fb9a1' '@dimensiondev/kit': '=0.0.0-20210630045432-e05621c' '@masknet/icons': workspace:* '@masknet/plugin-example': workspace:* @@ -173,7 +173,7 @@ importers: use-subscription: ^1.5.1 wallet.ts: ^1.0.1 dependencies: - '@dimensiondev/holoflows-kit': 0.8.0-20210317064617-6c4792c + '@dimensiondev/holoflows-kit': 0.8.0-20210429202414-74fb9a1 '@dimensiondev/kit': 0.0.0-20210630045432-e05621c '@masknet/icons': link:../icons '@masknet/plugin-example': link:../plugins/example @@ -191,22 +191,22 @@ importers: history: 5.0.0 json-stable-stringify: 1.0.1 lodash-es: 4.17.21 - react-router: 6.0.0-beta.0_dd3df4049b9a65e1e2d003c7940c4871 - react-router-dom: 6.0.0-beta.0_66263521e705c985f663eeac15167a50 - react-use: 17.2.4_f991c289939c8299bed5e4a6a5a79a62 + react-router: 6.0.0-beta.0_history@5.0.0 + react-router-dom: 6.0.0-beta.0_history@5.0.0 + react-use: 17.2.4 unstated-next: 1.1.0 - use-subscription: 1.5.1_react@18.0.0-alpha-aecb3b6d1 + use-subscription: 1.5.1 wallet.ts: 1.0.1 devDependencies: '@babel/core': 7.14.3 '@snowpack/plugin-dotenv': 2.1.0 - '@snowpack/plugin-react-refresh': 2.5.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/addon-actions': 6.3.0_1f407347b6533184bf697218ead413cc - '@storybook/addon-essentials': 6.3.0_e525380d430cf3d4a84ecd437d63ed54 - '@storybook/addon-links': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/react': 6.3.0_47956781722f535ef7d04bde54cd9359 - '@storybook/theming': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@snowpack/plugin-react-refresh': 2.5.0 + '@storybook/addon-actions': 6.3.0 + '@storybook/addon-essentials': 6.3.0_39cd091171729aa2cccda2ce52974d2f + '@storybook/addon-links': 6.3.0 + '@storybook/addons': 6.3.0 + '@storybook/react': 6.3.0_@babel+core@7.14.3 + '@storybook/theming': 6.3.0 '@types/snowpack-env': 2.3.3 babel-loader: 8.2.2_@babel+core@7.14.3 snowpack: 3.5.1 @@ -235,7 +235,7 @@ importers: specifiers: '@balancer-labs/sor': ^1.0.0 '@dimensiondev/common-protocols': 1.6.0-20201027083702-d0ae6e2 - '@dimensiondev/holoflows-kit': 0.8.0-20210317064617-6c4792c + '@dimensiondev/holoflows-kit': '=0.8.0-20210429202414-74fb9a1' '@dimensiondev/kit': '=0.0.0-20210630045432-e05621c' '@dimensiondev/metamask-extension-provider': 3.0.6-20210519045409-1835d4d '@dimensiondev/stego-js': '=0.11.1-20201027083223-8ab41be' @@ -397,7 +397,7 @@ importers: dependencies: '@balancer-labs/sor': 1.0.0 '@dimensiondev/common-protocols': 1.6.0-20201027083702-d0ae6e2 - '@dimensiondev/holoflows-kit': 0.8.0-20210317064617-6c4792c_webextension-polyfill@0.8.0 + '@dimensiondev/holoflows-kit': 0.8.0-20210429202414-74fb9a1_webextension-polyfill@0.8.0 '@dimensiondev/kit': 0.0.0-20210630045432-e05621c '@dimensiondev/metamask-extension-provider': 3.0.6-20210519045409-1835d4d '@dimensiondev/stego-js': 0.11.1-20201027083223-8ab41be @@ -476,14 +476,14 @@ importers: pvtsutils: 1.1.2 qrcode: 1.4.4 react-draggable: 4.4.3 - react-feather: 2.0.9_react@18.0.0-alpha-aecb3b6d1 - react-highlight-words: 0.17.0_react@18.0.0-alpha-aecb3b6d1 - react-middle-ellipsis: 1.2.1_f991c289939c8299bed5e4a6a5a79a62 - react-router: 5.2.0_react@18.0.0-alpha-aecb3b6d1 - react-router-dom: 5.2.0_react@18.0.0-alpha-aecb3b6d1 - react-use: 17.2.4_f991c289939c8299bed5e4a6a5a79a62 - react-virtualized-auto-sizer: 1.0.5_f991c289939c8299bed5e4a6a5a79a62 - react-window: 1.8.6_f991c289939c8299bed5e4a6a5a79a62 + react-feather: 2.0.9 + react-highlight-words: 0.17.0 + react-middle-ellipsis: 1.2.1 + react-router: 5.2.0 + react-router-dom: 5.2.0 + react-use: 17.2.4 + react-virtualized-auto-sizer: 1.0.5 + react-window: 1.8.6 remarkable: 2.0.1 scrypt-js: 3.0.1 socket.io-client: 2.4.0 @@ -493,7 +493,7 @@ importers: tiny-secp256k1: 1.1.6 ts-results: 3.3.0 unstated-next: 1.1.0 - use-subscription: 1.5.1_react@18.0.0-alpha-aecb3b6d1 + use-subscription: 1.5.1 uuid: 8.3.2 wallet.ts: 1.0.1 web-ext-types: 3.2.1 @@ -508,10 +508,10 @@ importers: webextension-polyfill: 0.8.0 z-schema: 5.0.1 devDependencies: - '@dimensiondev/webextension-shim': 0.0.3-20201120022530-b318b89_typescript@4.3.2 + '@dimensiondev/webextension-shim': 0.0.3-20201120022530-b318b89 '@pmmmwh/react-refresh-webpack-plugin': 0.5.0-rc.0_dae7018c5b5576f32207b1e2608a9d18 '@sinonjs/text-encoding': 0.7.1 - '@testing-library/react-hooks': 7.0.0_1959de3a9153879cff3acd96b46ed70f + '@testing-library/react-hooks': 7.0.0_react-test-renderer@17.0.2 '@types/enzyme': 3.10.8 '@types/enzyme-adapter-react-16': 1.0.6 '@types/expect-puppeteer': 4.4.5 @@ -522,19 +522,19 @@ importers: '@types/rimraf': 3.0.0 '@types/socket.io-client': 1.4.36 '@types/webpack-dev-server': 3.11.4 - '@typescript-eslint/eslint-plugin': 4.25.0_ec7770e83475322b368bff30b543badb - '@typescript-eslint/parser': 4.25.0_eslint@7.27.0+typescript@4.3.2 + '@typescript-eslint/eslint-plugin': 4.25.0_@typescript-eslint+parser@4.25.0 + '@typescript-eslint/parser': 4.25.0 babel-loader: 8.2.2_webpack@5.37.1 chrome-launcher: 0.14.0 copy-webpack-plugin: 9.0.0_webpack@5.37.1 dotenv: 10.0.0 enzyme: 3.11.0 - enzyme-adapter-react-16: 1.15.6_f15f970d9b179e8975516dda0497bdea + enzyme-adapter-react-16: 1.15.6_enzyme@3.11.0 expect-puppeteer: 5.0.4 fake-indexeddb: 3.1.2 file-loader: 6.2.0_webpack@5.37.1 html-webpack-plugin: 5.3.1_webpack@5.37.1 - jest: 27.0.1_ts-node@10.0.0 + jest: 27.0.1 jest-environment-jsdom-fourteen: 1.0.1 jest-esm-transformer: 1.0.0 jest-junit: 12.1.0 @@ -544,13 +544,13 @@ importers: react-dev-utils: 11.0.4 react-devtools-core: 4.13.5 react-refresh: 0.10.0 - react-refresh-typescript: 2.0.1_5fd9bdb32789d99f678b3c3315477f9a - react-test-renderer: 17.0.2_react@18.0.0-alpha-aecb3b6d1 + react-refresh-typescript: 2.0.1_react-refresh@0.10.0 + react-test-renderer: 17.0.2 rimraf: 3.0.2 source-map-loader: 3.0.0_webpack@5.37.1 - ts-jest: 27.0.1_jest@27.0.1+typescript@4.3.2 - ts-loader: 9.2.2_typescript@4.3.2+webpack@5.37.1 - type-coverage: 2.17.5_typescript@4.3.2 + ts-jest: 27.0.1_jest@27.0.1 + ts-loader: 9.2.2_webpack@5.37.1 + type-coverage: 2.17.5 webpack: 5.37.1_webpack-cli@4.7.0 webpack-cli: 4.7.0_73b101d6e7258082846183368a5d0f22 webpack-dev-server: 3.11.2_webpack-cli@4.7.0+webpack@5.37.1 @@ -560,7 +560,7 @@ importers: packages/plugin-infra: specifiers: - '@dimensiondev/holoflows-kit': 0.8.0-20210317064617-6c4792c + '@dimensiondev/holoflows-kit': '=0.8.0-20210429202414-74fb9a1' '@masknet/shared': workspace:* '@masknet/theme': workspace:* '@masknet/web3-shared': workspace:* @@ -569,14 +569,14 @@ importers: ts-results: ^3.3.0 use-subscription: ^1.5.1 dependencies: - '@dimensiondev/holoflows-kit': 0.8.0-20210317064617-6c4792c + '@dimensiondev/holoflows-kit': 0.8.0-20210429202414-74fb9a1 '@masknet/shared': link:../shared '@masknet/theme': link:../theme '@masknet/web3-shared': link:../web3-shared '@servie/events': 3.0.0 '@types/use-subscription': 1.0.0 ts-results: 3.3.0 - use-subscription: 1.5.1_react@18.0.0-alpha-aecb3b6d1 + use-subscription: 1.5.1 packages/plugins/example: specifiers: @@ -586,8 +586,9 @@ importers: packages/shared: specifiers: - '@dimensiondev/holoflows-kit': 0.8.0-20210317064617-6c4792c + '@dimensiondev/holoflows-kit': '=0.8.0-20210429202414-74fb9a1' '@dimensiondev/kit': '=0.0.0-20210630045432-e05621c' + '@masknet/theme': workspace:* '@masknet/web3-shared': workspace:* '@servie/events': ^3.0.0 anchorme: ^2.1.2 @@ -595,14 +596,18 @@ importers: bignumber.js: ^9.0.1 immer: ^9.0.2 lodash-es: ^4.17.21 + notistack: ^1.0.9 + qrcode: ^1.4.4 + react-use: ^17.2.4 ts-results: ^3.3.0 typeson: ^6.1.0 typeson-registry: ^1.0.0-alpha.38 use-subscription: ^1.5.1 wallet.ts: ^1.0.1 dependencies: - '@dimensiondev/holoflows-kit': 0.8.0-20210317064617-6c4792c + '@dimensiondev/holoflows-kit': 0.8.0-20210429202414-74fb9a1 '@dimensiondev/kit': 0.0.0-20210630045432-e05621c + '@masknet/theme': link:../theme '@masknet/web3-shared': link:../web3-shared '@servie/events': 3.0.0 anchorme: 2.1.2 @@ -610,10 +615,13 @@ importers: bignumber.js: 9.0.1 immer: 9.0.2 lodash-es: 4.17.21 + notistack: 1.0.9 + qrcode: 1.4.4 + react-use: 17.2.4 ts-results: 3.3.0 typeson: 6.1.0 typeson-registry: 1.0.0-alpha.39 - use-subscription: 1.5.1_react@18.0.0-alpha-aecb3b6d1 + use-subscription: 1.5.1 wallet.ts: 1.0.1 packages/storybook-shared: @@ -621,13 +629,12 @@ importers: '@storybook/addons': ^6.2.9 '@storybook/react': ^6.2.9 devDependencies: - '@storybook/addons': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/react': 6.2.9_7baed572bf2f4a171e7994a9ff64c932 + '@storybook/addons': 6.2.9 + '@storybook/react': 6.2.9 packages/theme: specifiers: '@babel/core': ^7.14.3 - '@masknet/shared': workspace:* '@masknet/storybook-shared': workspace:* '@storybook/addon-actions': ^6.3.0-rc.12 '@storybook/addon-essentials': ^6.3.0-rc.12 @@ -639,31 +646,30 @@ importers: '@types/tinycolor2': ^1.4.2 babel-loader: ^8.2.2 classnames: ^2.3.1 + fuse.js: ^6.4.6 lodash-es: ^4.17.20 - notistack: ^1.0.9 - qrcode: ^1.4.4 + react-window: ^1.8.6 storybook-addon-matrix: ^1.6.0 tinycolor2: ^1.4.2 dependencies: - '@masknet/shared': link:../shared '@masknet/storybook-shared': link:../storybook-shared classnames: 2.3.1 + fuse.js: 6.4.6 lodash-es: 4.17.21 - notistack: 1.0.9_132ff92e0fd7328580f6380de259b809 - qrcode: 1.4.4 + react-window: 1.8.6 tinycolor2: 1.4.2 devDependencies: '@babel/core': 7.14.3 - '@storybook/addon-actions': 6.3.0_1f407347b6533184bf697218ead413cc - '@storybook/addon-essentials': 6.3.0_e525380d430cf3d4a84ecd437d63ed54 - '@storybook/addon-links': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/react': 6.3.0_47956781722f535ef7d04bde54cd9359 - '@storybook/theming': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/addon-actions': 6.3.0 + '@storybook/addon-essentials': 6.3.0_39cd091171729aa2cccda2ce52974d2f + '@storybook/addon-links': 6.3.0 + '@storybook/addons': 6.3.0 + '@storybook/react': 6.3.0_@babel+core@7.14.3 + '@storybook/theming': 6.3.0 '@types/qrcode': 1.4.0 '@types/tinycolor2': 1.4.2 babel-loader: 8.2.2_@babel+core@7.14.3 - storybook-addon-matrix: 1.6.0_react-dom@18.0.0-alpha-aecb3b6d1 + storybook-addon-matrix: 1.6.0 packages/web3-shared: specifiers: @@ -673,6 +679,7 @@ importers: '@types/use-subscription': ^1.0.0 bignumber.js: 9.0.1 ethereum-blockies: ^0.1.1 + fuse.js: ^6.4.6 lodash-es: ^4.17.21 react-use: ^17.2.4 unstated-next: ^1.1.0 @@ -687,10 +694,11 @@ importers: '@masknet/contracts': link:../contracts bignumber.js: 9.0.1 ethereum-blockies: 0.1.1 + fuse.js: 6.4.6 lodash-es: 4.17.21 - react-use: 17.2.4_f991c289939c8299bed5e4a6a5a79a62 + react-use: 17.2.4 unstated-next: 1.1.0 - use-subscription: 1.5.1_react@18.0.0-alpha-aecb3b6d1 + use-subscription: 1.5.1 wallet.ts: 1.0.1 web3: 1.3.6 web3-core: 1.3.6 @@ -3545,8 +3553,8 @@ packages: '@msgpack/msgpack': 1.12.2 dev: false - /@dimensiondev/holoflows-kit/0.8.0-20210317064617-6c4792c: - resolution: {integrity: sha512-zB121+yJ3pVCkByf3LEHBUHEMy5rc/r3e4T5E+92SNb+GH/VowvGubSFPygeM2p5lFMyrO+AlvJRPvWQ8ONJTA==, tarball: download/@dimensiondev/holoflows-kit/0.8.0-20210317064617-6c4792c/0ad5efd95cb3cbb58a6e30983f6e0ad2a2216a1cf67d7903c9e0d935a7b1ae2a} + /@dimensiondev/holoflows-kit/0.8.0-20210429202414-74fb9a1: + resolution: {integrity: sha512-KkrelGIh426YENN8uMxdgNlr2DGGEeFkZYoh8AsbW8+5YOufeINmMLFXwB2PKdmISeJEkP5wi6d3cFsHF+E9kg==, tarball: download/@dimensiondev/holoflows-kit/0.8.0-20210429202414-74fb9a1/7d17e1f8587a91b31c2a6c84d951aeda1b19ef849c06896ecce1c8de075cd739} peerDependencies: webextension-polyfill: '*' dependencies: @@ -3559,8 +3567,8 @@ packages: tslib: 2.2.0 dev: false - /@dimensiondev/holoflows-kit/0.8.0-20210317064617-6c4792c_webextension-polyfill@0.8.0: - resolution: {integrity: sha512-zB121+yJ3pVCkByf3LEHBUHEMy5rc/r3e4T5E+92SNb+GH/VowvGubSFPygeM2p5lFMyrO+AlvJRPvWQ8ONJTA==, tarball: download/@dimensiondev/holoflows-kit/0.8.0-20210317064617-6c4792c/0ad5efd95cb3cbb58a6e30983f6e0ad2a2216a1cf67d7903c9e0d935a7b1ae2a} + /@dimensiondev/holoflows-kit/0.8.0-20210429202414-74fb9a1_webextension-polyfill@0.8.0: + resolution: {integrity: sha512-KkrelGIh426YENN8uMxdgNlr2DGGEeFkZYoh8AsbW8+5YOufeINmMLFXwB2PKdmISeJEkP5wi6d3cFsHF+E9kg==, tarball: download/@dimensiondev/holoflows-kit/0.8.0-20210429202414-74fb9a1/7d17e1f8587a91b31c2a6c84d951aeda1b19ef849c06896ecce1c8de075cd739} peerDependencies: webextension-polyfill: '*' dependencies: @@ -3619,7 +3627,7 @@ packages: toformat: 2.0.0 dev: false - /@dimensiondev/webextension-shim/0.0.3-20201120022530-b318b89_typescript@4.3.2: + /@dimensiondev/webextension-shim/0.0.3-20201120022530-b318b89: resolution: {integrity: sha512-f8Rmnc4RUTrBVMS7+edMu/J3S5pkM2DOY4nff5SHZKkDQUP5ES1/1YNkks2rXkeiVuyUTKbokKIV3o8XoeaNLw==, tarball: download/@dimensiondev/webextension-shim/0.0.3-20201120022530-b318b89/7cb726fb8ffa9cde3fa59a32c44c9ea981ba4820742bfaffc7e23e41a28bfffa} hasBin: true peerDependencies: @@ -3627,7 +3635,6 @@ packages: dependencies: async-call-rpc: 4.2.1 systemjs: 6.8.3 - typescript: 4.3.2 web-ext-types: 3.2.1 dev: true @@ -3698,7 +3705,7 @@ packages: react: 18.0.0-alpha-aecb3b6d1 dev: true - /@emotion/core/10.1.1_react@18.0.0-alpha-aecb3b6d1: + /@emotion/core/10.1.1: resolution: {integrity: sha512-ZMLG6qpXR8x031NXD8HJqugy/AZSkAuMxxqB46pmAR7ze47MhNJ56cdoX243QPZdGctrdfo+s08yZTiwaUcRKA==} peerDependencies: react: '>=16.3.0' @@ -3709,7 +3716,6 @@ packages: '@emotion/serialize': 0.11.16 '@emotion/sheet': 0.9.4 '@emotion/utils': 0.11.3 - react: 18.0.0-alpha-aecb3b6d1 dev: true /@emotion/css/10.0.27: @@ -3794,56 +3800,54 @@ packages: resolution: {integrity: sha512-GbIvVMe4U+Zc+929N1V7nW6YYJtidj31lidSmdYcWozwoBIObXBnaJkKNDjZrLm9Nc0BR+ZyHNaRZxqNZbof5g==} dev: false - /@emotion/styled-base/10.0.31_0969515b2e564c6f8da5ffe0dd24efb6: + /@emotion/styled-base/10.0.31_868fdfab3e8c9138cf50b7ab83aa28b0: resolution: {integrity: sha512-wTOE1NcXmqMWlyrtwdkqg87Mu6Rj1MaukEoEmEkHirO5IoHDJ8LgCQL4MjJODgxWxXibGR3opGp1p7YvkNEdXQ==} peerDependencies: '@emotion/core': ^10.0.28 react: '>=16.3.0' dependencies: '@babel/runtime': 7.14.0 - '@emotion/core': 10.1.1_react@18.0.0-alpha-aecb3b6d1 + '@emotion/core': 10.0.28_react@18.0.0-alpha-aecb3b6d1 '@emotion/is-prop-valid': 0.8.8 '@emotion/serialize': 0.11.16 '@emotion/utils': 0.11.3 react: 18.0.0-alpha-aecb3b6d1 dev: true - /@emotion/styled-base/10.0.31_868fdfab3e8c9138cf50b7ab83aa28b0: + /@emotion/styled-base/10.0.31_@emotion+core@10.1.1: resolution: {integrity: sha512-wTOE1NcXmqMWlyrtwdkqg87Mu6Rj1MaukEoEmEkHirO5IoHDJ8LgCQL4MjJODgxWxXibGR3opGp1p7YvkNEdXQ==} peerDependencies: '@emotion/core': ^10.0.28 react: '>=16.3.0' dependencies: '@babel/runtime': 7.14.0 - '@emotion/core': 10.0.28_react@18.0.0-alpha-aecb3b6d1 + '@emotion/core': 10.1.1 '@emotion/is-prop-valid': 0.8.8 '@emotion/serialize': 0.11.16 '@emotion/utils': 0.11.3 - react: 18.0.0-alpha-aecb3b6d1 dev: true - /@emotion/styled/10.0.27_0969515b2e564c6f8da5ffe0dd24efb6: + /@emotion/styled/10.0.27_868fdfab3e8c9138cf50b7ab83aa28b0: resolution: {integrity: sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==} peerDependencies: '@emotion/core': ^10.0.27 react: '>=16.3.0' dependencies: - '@emotion/core': 10.1.1_react@18.0.0-alpha-aecb3b6d1 - '@emotion/styled-base': 10.0.31_0969515b2e564c6f8da5ffe0dd24efb6 + '@emotion/core': 10.0.28_react@18.0.0-alpha-aecb3b6d1 + '@emotion/styled-base': 10.0.31_868fdfab3e8c9138cf50b7ab83aa28b0 babel-plugin-emotion: 10.2.2 react: 18.0.0-alpha-aecb3b6d1 dev: true - /@emotion/styled/10.0.27_868fdfab3e8c9138cf50b7ab83aa28b0: + /@emotion/styled/10.0.27_@emotion+core@10.1.1: resolution: {integrity: sha512-iK/8Sh7+NLJzyp9a5+vIQIXTYxfT4yB/OJbjzQanB2RZpvmzBQOHZWhpAMZWYEKRNNbsD6WfBw5sVWkb6WzS/Q==} peerDependencies: '@emotion/core': ^10.0.27 react: '>=16.3.0' dependencies: - '@emotion/core': 10.0.28_react@18.0.0-alpha-aecb3b6d1 - '@emotion/styled-base': 10.0.31_868fdfab3e8c9138cf50b7ab83aa28b0 + '@emotion/core': 10.1.1 + '@emotion/styled-base': 10.0.31_@emotion+core@10.1.1 babel-plugin-emotion: 10.2.2 - react: 18.0.0-alpha-aecb3b6d1 dev: true /@emotion/styled/11.3.0_341102e1c4a97544e323fe37efb0cd92: @@ -4616,7 +4620,7 @@ packages: slash: 3.0.0 dev: true - /@jest/core/27.0.1_ts-node@10.0.0: + /@jest/core/27.0.1: resolution: {integrity: sha512-PiCbKSMf6t8PEfY3MAd0Ldn3aJAt5T+UcaFkAfMZ1VZgas35+fXk5uHIjAQHQLNIHZWX19TLv0wWNT03yvrw6w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: @@ -4637,13 +4641,13 @@ packages: exit: 0.1.2 graceful-fs: 4.2.6 jest-changed-files: 27.0.1 - jest-config: 27.0.1_ts-node@10.0.0 + jest-config: 27.0.1 jest-haste-map: 27.0.1 jest-message-util: 27.0.1 jest-regex-util: 27.0.1 jest-resolve: 27.0.1 jest-resolve-dependencies: 27.0.1 - jest-runner: 27.0.1_ts-node@10.0.0 + jest-runner: 27.0.1 jest-runtime: 27.0.1 jest-snapshot: 27.0.1 jest-util: 27.0.1 @@ -4810,14 +4814,14 @@ packages: collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/27.0.1_ts-node@10.0.0: + /@jest/test-sequencer/27.0.1: resolution: {integrity: sha512-yK2c2iruJ35WgH4KH8whS72uH+FASJUrzwxzNKTzLAEWmNpWKNEPOsSEKsHynvz78bLHafrTg4adN7RrYNbEOA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/test-result': 27.0.1 graceful-fs: 4.2.6 jest-haste-map: 27.0.1 - jest-runner: 27.0.1_ts-node@10.0.0 + jest-runner: 27.0.1 jest-runtime: 27.0.1 transitivePeerDependencies: - bufferutil @@ -5195,11 +5199,11 @@ packages: react-is: 17.0.2 dev: false - /@mdx-js/loader/1.6.22_react@18.0.0-alpha-aecb3b6d1: + /@mdx-js/loader/1.6.22: resolution: {integrity: sha512-9CjGwy595NaxAYp0hF9B/A0lH6C8Rms97e2JS9d3jVUtILn6pT5i5IV965ra3lIWc7Rs1GG1tBdVF7dCowYe6Q==} dependencies: '@mdx-js/mdx': 1.6.22 - '@mdx-js/react': 1.6.22_react@18.0.0-alpha-aecb3b6d1 + '@mdx-js/react': 1.6.22 loader-utils: 2.0.0 transitivePeerDependencies: - react @@ -5232,12 +5236,10 @@ packages: - supports-color dev: true - /@mdx-js/react/1.6.22_react@18.0.0-alpha-aecb3b6d1: + /@mdx-js/react/1.6.22: resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==} peerDependencies: react: ^16.13.1 || ^17.0.0 - dependencies: - react: 18.0.0-alpha-aecb3b6d1 dev: true /@mdx-js/util/1.6.22: @@ -5503,7 +5505,19 @@ packages: /@popperjs/core/2.9.2: resolution: {integrity: sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q==} - /@reach/router/1.3.4_f991c289939c8299bed5e4a6a5a79a62: + /@reach/router/1.3.4: + resolution: {integrity: sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA==} + peerDependencies: + react: 15.x || 16.x || 16.4.0-alpha.0911da3 + react-dom: 15.x || 16.x || 16.4.0-alpha.0911da3 + dependencies: + create-react-context: 0.3.0_prop-types@15.7.2 + invariant: 2.2.4 + prop-types: 15.7.2 + react-lifecycles-compat: 3.0.4 + dev: true + + /@reach/router/1.3.4_react@18.0.0-alpha-aecb3b6d1: resolution: {integrity: sha512-+mtn9wjlB9NN2CNnnC/BRYtwdKBfSyyasPYraNAyvaV1occr/5NnB4CVzjEZipNHwYebQwcndGUmpFzxAUoqSA==} peerDependencies: react: 15.x || 16.x || 16.4.0-alpha.0911da3 @@ -5513,7 +5527,6 @@ packages: invariant: 2.2.4 prop-types: 15.7.2 react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 react-lifecycles-compat: 3.0.4 dev: true @@ -5573,7 +5586,7 @@ packages: dotenv-expand: 5.1.0 dev: true - /@snowpack/plugin-react-refresh/2.5.0_f991c289939c8299bed5e4a6a5a79a62: + /@snowpack/plugin-react-refresh/2.5.0: resolution: {integrity: sha512-3rYkwayAA+65IIYLXMEFqQwtBGbII9IidMJo1yXuj35kTEg9TdZrofoqcHaSts2sv2Nz0TD6v7BWRPdvCU0uIw==} peerDependencies: react: '>=16.9.0' @@ -5581,14 +5594,12 @@ packages: dependencies: '@babel/core': 7.14.3 '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.14.3 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 react-refresh: 0.9.0 transitivePeerDependencies: - supports-color dev: true - /@storybook/addon-actions/6.3.0_1f407347b6533184bf697218ead413cc: + /@storybook/addon-actions/6.3.0: resolution: {integrity: sha512-7Ls1OIAdtAa4a27/bTuAlejQee4j7bFBkRzAeaHzcaZT1VVXoF6yBfMGuEGJI8brQ+KuSaIhIU2b0Iuzq47dDQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -5599,21 +5610,19 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/api': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/client-api': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/components': 6.3.0_1f407347b6533184bf697218ead413cc + '@storybook/addons': 6.3.0 + '@storybook/api': 6.3.0 + '@storybook/client-api': 6.3.0 + '@storybook/components': 6.3.0 '@storybook/core-events': 6.3.0 - '@storybook/theming': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/theming': 6.3.0 core-js: 3.11.0 fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 polished: 4.1.1 prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 - react-inspector: 5.1.1_react@18.0.0-alpha-aecb3b6d1 + react-inspector: 5.1.1 regenerator-runtime: 0.13.7 ts-dedent: 2.1.1 util-deprecate: 1.0.2 @@ -5622,7 +5631,7 @@ packages: - '@types/react' dev: true - /@storybook/addon-backgrounds/6.3.0_1f407347b6533184bf697218ead413cc: + /@storybook/addon-backgrounds/6.3.0: resolution: {integrity: sha512-MzqD94IDfJ9oipFKMLoJhf3zTxqQ0DVfsWXGV1o2nslg8gZFFH04yXex2kVuTiHYCuaLxfk/wnlpSyzqX2+CZQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -5633,17 +5642,15 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/api': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/addons': 6.3.0 + '@storybook/api': 6.3.0 '@storybook/client-logger': 6.3.0 - '@storybook/components': 6.3.0_1f407347b6533184bf697218ead413cc + '@storybook/components': 6.3.0 '@storybook/core-events': 6.3.0 - '@storybook/theming': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/theming': 6.3.0 core-js: 3.11.0 global: 4.4.0 memoizerific: 1.11.3 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 regenerator-runtime: 0.13.7 ts-dedent: 2.1.1 util-deprecate: 1.0.2 @@ -5651,7 +5658,7 @@ packages: - '@types/react' dev: true - /@storybook/addon-controls/6.3.0_1f407347b6533184bf697218ead413cc: + /@storybook/addon-controls/6.3.0: resolution: {integrity: sha512-caiWFJ/iCdZPHI5rwk26fAQsf8QI7WXIoB850SYVDhkIirzJVZjugvwgrqgTfVf2Z5dWOe9aceroC9rBClHAlQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -5662,21 +5669,19 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/api': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/client-api': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/components': 6.3.0_1f407347b6533184bf697218ead413cc + '@storybook/addons': 6.3.0 + '@storybook/api': 6.3.0 + '@storybook/client-api': 6.3.0 + '@storybook/components': 6.3.0 '@storybook/node-logger': 6.3.0 - '@storybook/theming': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/theming': 6.3.0 core-js: 3.11.0 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 ts-dedent: 2.1.1 transitivePeerDependencies: - '@types/react' dev: true - /@storybook/addon-docs/6.3.0_7baed572bf2f4a171e7994a9ff64c932: + /@storybook/addon-docs/6.3.0: resolution: {integrity: sha512-FpANy+7J3jpoxUoMfqwAetMatwbxQctOwN+Eh95uwQWYRZwsNHqdTv72/rtHiWR9wMaYThok5vqYHFvCpQTVPw==} peerDependencies: '@storybook/angular': 6.3.0 @@ -5723,23 +5728,23 @@ packages: '@babel/plugin-transform-react-jsx': 7.13.12_@babel+core@7.14.3 '@babel/preset-env': 7.13.15_@babel+core@7.14.3 '@jest/transform': 26.6.2 - '@mdx-js/loader': 1.6.22_react@18.0.0-alpha-aecb3b6d1 + '@mdx-js/loader': 1.6.22 '@mdx-js/mdx': 1.6.22 - '@mdx-js/react': 1.6.22_react@18.0.0-alpha-aecb3b6d1 - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/api': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/builder-webpack4': 6.3.0_7baed572bf2f4a171e7994a9ff64c932 - '@storybook/client-api': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@mdx-js/react': 1.6.22 + '@storybook/addons': 6.3.0 + '@storybook/api': 6.3.0 + '@storybook/builder-webpack4': 6.3.0 + '@storybook/client-api': 6.3.0 '@storybook/client-logger': 6.3.0 - '@storybook/components': 6.3.0_1f407347b6533184bf697218ead413cc - '@storybook/core': 6.3.0_47956781722f535ef7d04bde54cd9359 + '@storybook/components': 6.3.0 + '@storybook/core': 6.3.0_@babel+core@7.14.3 '@storybook/core-events': 6.3.0 '@storybook/csf': 0.0.1 '@storybook/csf-tools': 6.3.0_@babel+core@7.14.3 '@storybook/node-logger': 6.3.0 '@storybook/postinstall': 6.3.0 - '@storybook/source-loader': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/theming': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/source-loader': 6.3.0 + '@storybook/theming': 6.3.0 acorn: 7.4.1 acorn-jsx: 5.3.1_acorn@7.4.1 acorn-walk: 7.2.0 @@ -5755,9 +5760,7 @@ packages: p-limit: 3.1.0 prettier: 2.2.1 prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 - react-element-to-jsx-string: 14.3.2_f991c289939c8299bed5e4a6a5a79a62 + react-element-to-jsx-string: 14.3.2 regenerator-runtime: 0.13.7 remark-external-links: 8.0.0 remark-slug: 6.0.0 @@ -5773,7 +5776,7 @@ packages: - webpack-command dev: true - /@storybook/addon-essentials/6.3.0_e525380d430cf3d4a84ecd437d63ed54: + /@storybook/addon-essentials/6.3.0_39cd091171729aa2cccda2ce52974d2f: resolution: {integrity: sha512-8ejOP3l4UC2utDbcq8QUQ2nOqAOzL9ri20So5qrlTuBPtMmSNUea7p5yAGB0GOJ9j96k3pS2nU1/dlEqepo5nA==} peerDependencies: '@babel/core': ^7.9.6 @@ -5799,22 +5802,20 @@ packages: optional: true dependencies: '@babel/core': 7.14.3 - '@storybook/addon-actions': 6.3.0_1f407347b6533184bf697218ead413cc - '@storybook/addon-backgrounds': 6.3.0_1f407347b6533184bf697218ead413cc - '@storybook/addon-controls': 6.3.0_1f407347b6533184bf697218ead413cc - '@storybook/addon-docs': 6.3.0_7baed572bf2f4a171e7994a9ff64c932 - '@storybook/addon-measure': 1.2.4_9262dd142c2abf9419d85bd362706911 - '@storybook/addon-toolbars': 6.3.0_1f407347b6533184bf697218ead413cc - '@storybook/addon-viewport': 6.3.0_1f407347b6533184bf697218ead413cc - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/api': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/addon-actions': 6.3.0 + '@storybook/addon-backgrounds': 6.3.0 + '@storybook/addon-controls': 6.3.0 + '@storybook/addon-docs': 6.3.0 + '@storybook/addon-measure': 1.2.4_47ec6dddbe8bb4457cb6e0df3cd7ca70 + '@storybook/addon-toolbars': 6.3.0 + '@storybook/addon-viewport': 6.3.0 + '@storybook/addons': 6.3.0 + '@storybook/api': 6.3.0 '@storybook/node-logger': 6.3.0 babel-loader: 8.2.2_@babel+core@7.14.3 core-js: 3.11.0 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 regenerator-runtime: 0.13.7 - storybook-addon-outline: 1.3.4_1f407347b6533184bf697218ead413cc + storybook-addon-outline: 1.3.4 ts-dedent: 2.1.1 transitivePeerDependencies: - '@storybook/angular' @@ -5835,7 +5836,7 @@ packages: - webpack-command dev: true - /@storybook/addon-links/6.3.0_f991c289939c8299bed5e4a6a5a79a62: + /@storybook/addon-links/6.3.0: resolution: {integrity: sha512-Q5rGj5lMhjB3LK/fvXwFS3o184hYzSUFC+99dbM1zeAhVIfFDUuETCckEsTI7gc9lt/5vWOjHF98KNk77PvhiA==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -5846,23 +5847,21 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/addons': 6.3.0 '@storybook/client-logger': 6.3.0 '@storybook/core-events': 6.3.0 '@storybook/csf': 0.0.1 - '@storybook/router': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/router': 6.3.0 '@types/qs': 6.9.6 core-js: 3.11.0 global: 4.4.0 prop-types: 15.7.2 qs: 6.10.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 regenerator-runtime: 0.13.7 ts-dedent: 2.1.1 dev: true - /@storybook/addon-measure/1.2.4_9262dd142c2abf9419d85bd362706911: + /@storybook/addon-measure/1.2.4_47ec6dddbe8bb4457cb6e0df3cd7ca70: resolution: {integrity: sha512-pxAo7QcETdiienZYMjAhX/3BqPnYTuH0ZSjmJzsr+yCBvZmZUciq1h3WvyUN59rT0ewFwLTKsmZG/wVZj+aN+Q==} peerDependencies: '@storybook/addons': ^6.3.0-beta.1 @@ -5878,14 +5877,12 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/api': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/theming': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 + '@storybook/addons': 6.3.0 + '@storybook/api': 6.3.0 + '@storybook/theming': 6.3.0 dev: true - /@storybook/addon-toolbars/6.3.0_1f407347b6533184bf697218ead413cc: + /@storybook/addon-toolbars/6.3.0: resolution: {integrity: sha512-E0LwAaoWNtmPfMq9GbySsK2ZdXlPf9gJQD1uI3KXbcaGBhtY136QmZS+VpUmPfilplrYJ2G6GAQoPHrIPUf1VQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -5896,20 +5893,18 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/api': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/client-api': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/components': 6.3.0_1f407347b6533184bf697218ead413cc - '@storybook/theming': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/addons': 6.3.0 + '@storybook/api': 6.3.0 + '@storybook/client-api': 6.3.0 + '@storybook/components': 6.3.0 + '@storybook/theming': 6.3.0 core-js: 3.11.0 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 regenerator-runtime: 0.13.7 transitivePeerDependencies: - '@types/react' dev: true - /@storybook/addon-viewport/6.3.0_1f407347b6533184bf697218ead413cc: + /@storybook/addon-viewport/6.3.0: resolution: {integrity: sha512-aOENuKIfmeQOhm++p2ezwIV9gET05s5/QQ1TTZrrPixQ3FxmCwAb/OqsmD4m/8e075C5gLXQEV47vGAkYyTm0Q==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -5920,27 +5915,25 @@ packages: react-dom: optional: true dependencies: - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/api': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/addons': 6.3.0 + '@storybook/api': 6.3.0 '@storybook/client-logger': 6.3.0 - '@storybook/components': 6.3.0_1f407347b6533184bf697218ead413cc + '@storybook/components': 6.3.0 '@storybook/core-events': 6.3.0 - '@storybook/theming': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/theming': 6.3.0 core-js: 3.11.0 global: 4.4.0 memoizerific: 1.11.3 prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 regenerator-runtime: 0.13.7 transitivePeerDependencies: - '@types/react' dev: true - /@storybook/addons/5.3.18_react-dom@18.0.0-alpha-aecb3b6d1: + /@storybook/addons/5.3.18: resolution: {integrity: sha512-ZQjDgTUDFRLvAiBg2d8FgPgghfQ+9uFyXQbtiGlTBLinrPCeQd7J86qiUES0fcGoohCCw0wWKtvB0WF2z1XNDg==} dependencies: - '@storybook/api': 5.3.18_react-dom@18.0.0-alpha-aecb3b6d1 + '@storybook/api': 5.3.18 '@storybook/channels': 5.3.18 '@storybook/client-logger': 5.3.18 '@storybook/core-events': 5.3.18 @@ -5952,56 +5945,52 @@ packages: - regenerator-runtime dev: true - /@storybook/addons/6.2.9_f991c289939c8299bed5e4a6a5a79a62: + /@storybook/addons/6.2.9: resolution: {integrity: sha512-GnmEKbJwiN1jncN9NSA8CuR1i2XAlasPcl/Zn0jkfV9WitQeczVcJCPw86SGH84AD+tTBCyF2i9UC0KaOV1YBQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: - '@storybook/api': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/api': 6.2.9 '@storybook/channels': 6.2.9 '@storybook/client-logger': 6.2.9 '@storybook/core-events': 6.2.9 - '@storybook/router': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/theming': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/router': 6.2.9 + '@storybook/theming': 6.2.9 core-js: 3.11.0 global: 4.4.0 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 regenerator-runtime: 0.13.7 dev: true - /@storybook/addons/6.3.0_f991c289939c8299bed5e4a6a5a79a62: + /@storybook/addons/6.3.0: resolution: {integrity: sha512-/dcq20HtdSw5+cG8znR59Y/uv2zCR2VjRK3N52IkGWk162b/UbSjjL0PhNnnQFGpH9Fruft6mqvjTAKT41kmJw==} peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: - '@storybook/api': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/api': 6.3.0 '@storybook/channels': 6.3.0 '@storybook/client-logger': 6.3.0 '@storybook/core-events': 6.3.0 - '@storybook/router': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/theming': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/router': 6.3.0 + '@storybook/theming': 6.3.0 core-js: 3.11.0 global: 4.4.0 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 regenerator-runtime: 0.13.7 dev: true - /@storybook/api/5.3.18_react-dom@18.0.0-alpha-aecb3b6d1: + /@storybook/api/5.3.18: resolution: {integrity: sha512-QXaccNCARHzPWOuxYndiebGWBZmwiUvRgB9ji0XTJBS3y8K0ZPb5QyuqiKPaEWUj8dBA8rzdDtkW3Yt95Namaw==} peerDependencies: regenerator-runtime: '*' dependencies: - '@reach/router': 1.3.4_f991c289939c8299bed5e4a6a5a79a62 + '@reach/router': 1.3.4_react@18.0.0-alpha-aecb3b6d1 '@storybook/channels': 5.3.18 '@storybook/client-logger': 5.3.18 '@storybook/core-events': 5.3.18 '@storybook/csf': 0.0.1 - '@storybook/router': 5.3.18_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/theming': 5.3.18_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/router': 5.3.18_react@18.0.0-alpha-aecb3b6d1 + '@storybook/theming': 5.3.18_react@18.0.0-alpha-aecb3b6d1 '@types/reach__router': 1.3.7 core-js: 3.10.0 fast-deep-equal: 2.0.1 @@ -6019,20 +6008,20 @@ packages: - react-dom dev: true - /@storybook/api/6.2.9_f991c289939c8299bed5e4a6a5a79a62: + /@storybook/api/6.2.9: resolution: {integrity: sha512-okkA3HAScE9tGnYBrjTOcgzT+L1lRHNoEh3ZfGgh1u/XNEyHGNkj4grvkd6nX7BzRcYQ/l2VkcKCqmOjUnSkVQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: - '@reach/router': 1.3.4_f991c289939c8299bed5e4a6a5a79a62 + '@reach/router': 1.3.4 '@storybook/channels': 6.2.9 '@storybook/client-logger': 6.2.9 '@storybook/core-events': 6.2.9 '@storybook/csf': 0.0.1 - '@storybook/router': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/router': 6.2.9 '@storybook/semver': 7.3.2 - '@storybook/theming': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/theming': 6.2.9 '@types/reach__router': 1.3.7 core-js: 3.11.0 fast-deep-equal: 3.1.3 @@ -6040,8 +6029,6 @@ packages: lodash: 4.17.21 memoizerific: 1.11.3 qs: 6.10.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 regenerator-runtime: 0.13.7 store2: 2.12.0 telejson: 5.1.1 @@ -6049,20 +6036,20 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/api/6.3.0_f991c289939c8299bed5e4a6a5a79a62: + /@storybook/api/6.3.0: resolution: {integrity: sha512-swPMcQadLDRTnMjL9dwY6K1zXHn3KcAa3euvSHd1R4OKXTSBBj1zHvIaOrq6yHz7RIYOACmZlEV3CUru9FlvEA==} peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: - '@reach/router': 1.3.4_f991c289939c8299bed5e4a6a5a79a62 + '@reach/router': 1.3.4 '@storybook/channels': 6.3.0 '@storybook/client-logger': 6.3.0 '@storybook/core-events': 6.3.0 '@storybook/csf': 0.0.1 - '@storybook/router': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/router': 6.3.0 '@storybook/semver': 7.3.2 - '@storybook/theming': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/theming': 6.3.0 '@types/reach__router': 1.3.7 core-js: 3.11.0 fast-deep-equal: 3.1.3 @@ -6070,8 +6057,6 @@ packages: lodash: 4.17.21 memoizerific: 1.11.3 qs: 6.10.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 regenerator-runtime: 0.13.7 store2: 2.12.0 telejson: 5.3.3 @@ -6079,7 +6064,7 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/builder-webpack4/6.2.9_7baed572bf2f4a171e7994a9ff64c932: + /@storybook/builder-webpack4/6.2.9: resolution: {integrity: sha512-swECic1huVdj+B+iRJIQ8ds59HuPVE4fmhI+j/nhw0CQCsgAEKqDlOQVYEimW6nZX8GO4WxNm6tiiRzxixejbw==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -6110,20 +6095,20 @@ packages: '@babel/preset-env': 7.13.15_@babel+core@7.13.16 '@babel/preset-react': 7.13.13_@babel+core@7.13.16 '@babel/preset-typescript': 7.13.0_@babel+core@7.13.16 - '@storybook/addons': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/api': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/addons': 6.2.9 + '@storybook/api': 6.2.9 '@storybook/channel-postmessage': 6.2.9 '@storybook/channels': 6.2.9 - '@storybook/client-api': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/client-api': 6.2.9 '@storybook/client-logger': 6.2.9 - '@storybook/components': 6.2.9_1f407347b6533184bf697218ead413cc - '@storybook/core-common': 6.2.9_0a9381bdf91aef92a8ad157f4a8c25c2 + '@storybook/components': 6.2.9 + '@storybook/core-common': 6.2.9 '@storybook/core-events': 6.2.9 '@storybook/node-logger': 6.2.9 - '@storybook/router': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/router': 6.2.9 '@storybook/semver': 7.3.2 - '@storybook/theming': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/ui': 6.2.9_1f407347b6533184bf697218ead413cc + '@storybook/theming': 6.2.9 + '@storybook/ui': 6.2.9 '@types/node': 14.14.41 '@types/webpack': 4.41.27 autoprefixer: 9.8.6 @@ -6142,19 +6127,16 @@ packages: glob-promise: 3.4.0_glob@7.1.6 global: 4.4.0 html-webpack-plugin: 4.5.2_webpack@4.46.0 - pnp-webpack-plugin: 1.6.4_typescript@4.3.2 + pnp-webpack-plugin: 1.6.4 postcss: 7.0.35 postcss-flexbugs-fixes: 4.2.1 postcss-loader: 4.2.0_postcss@7.0.35+webpack@4.46.0 raw-loader: 4.0.2_webpack@4.46.0 - react: 18.0.0-alpha-aecb3b6d1 react-dev-utils: 11.0.4 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 stable: 0.1.8 style-loader: 1.3.0_webpack@4.46.0 terser-webpack-plugin: 3.1.0_webpack@4.46.0 ts-dedent: 2.1.1 - typescript: 4.3.2 url-loader: 4.1.1_file-loader@6.2.0+webpack@4.46.0 util-deprecate: 1.0.2 webpack: 4.46.0 @@ -6169,7 +6151,7 @@ packages: - webpack-command dev: true - /@storybook/builder-webpack4/6.3.0_7baed572bf2f4a171e7994a9ff64c932: + /@storybook/builder-webpack4/6.3.0: resolution: {integrity: sha512-s2s9uVNIvj/CFQOwA9B8nbOKHNtVj5wIIeeR8cNAGWKxoDNA1YFAqSrmLGWDtxpZpADmJXzmVKMQts7MjkKdKg==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -6200,20 +6182,20 @@ packages: '@babel/preset-env': 7.13.15_@babel+core@7.14.3 '@babel/preset-react': 7.13.13_@babel+core@7.14.3 '@babel/preset-typescript': 7.13.0_@babel+core@7.14.3 - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/api': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/addons': 6.3.0 + '@storybook/api': 6.3.0 '@storybook/channel-postmessage': 6.3.0 '@storybook/channels': 6.3.0 - '@storybook/client-api': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/client-api': 6.3.0 '@storybook/client-logger': 6.3.0 - '@storybook/components': 6.3.0_1f407347b6533184bf697218ead413cc - '@storybook/core-common': 6.3.0_0a9381bdf91aef92a8ad157f4a8c25c2 + '@storybook/components': 6.3.0 + '@storybook/core-common': 6.3.0 '@storybook/core-events': 6.3.0 '@storybook/node-logger': 6.3.0 - '@storybook/router': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/router': 6.3.0 '@storybook/semver': 7.3.2 - '@storybook/theming': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/ui': 6.3.0_1f407347b6533184bf697218ead413cc + '@storybook/theming': 6.3.0 + '@storybook/ui': 6.3.0 '@types/node': 14.14.41 '@types/webpack': 4.41.27 autoprefixer: 9.8.6 @@ -6232,19 +6214,16 @@ packages: glob-promise: 3.4.0_glob@7.1.7 global: 4.4.0 html-webpack-plugin: 4.5.2_webpack@4.46.0 - pnp-webpack-plugin: 1.6.4_typescript@4.3.2 + pnp-webpack-plugin: 1.6.4 postcss: 7.0.36 postcss-flexbugs-fixes: 4.2.1 postcss-loader: 4.2.0_postcss@7.0.36+webpack@4.46.0 raw-loader: 4.0.2_webpack@4.46.0 - react: 18.0.0-alpha-aecb3b6d1 react-dev-utils: 11.0.4 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 stable: 0.1.8 style-loader: 1.3.0_webpack@4.46.0 terser-webpack-plugin: 4.2.3_webpack@4.46.0 ts-dedent: 2.1.1 - typescript: 4.3.2 url-loader: 4.1.1_file-loader@6.2.0+webpack@4.46.0 util-deprecate: 1.0.2 webpack: 4.46.0 @@ -6305,13 +6284,13 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/client-api/6.2.9_f991c289939c8299bed5e4a6a5a79a62: + /@storybook/client-api/6.2.9: resolution: {integrity: sha512-aLvEUVkbvv6Qo/2mF4rFCecdqi2CGOUDdsV1a6EFIVS/9gXFdpirsOwKHo9qNjacGdWPlBYGCUcbrw+DvNaSFA==} peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: - '@storybook/addons': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/addons': 6.2.9 '@storybook/channel-postmessage': 6.2.9 '@storybook/channels': 6.2.9 '@storybook/client-logger': 6.2.9 @@ -6324,8 +6303,6 @@ packages: lodash: 4.17.21 memoizerific: 1.11.3 qs: 6.10.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 regenerator-runtime: 0.13.7 stable: 0.1.8 store2: 2.12.0 @@ -6333,13 +6310,13 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/client-api/6.3.0_f991c289939c8299bed5e4a6a5a79a62: + /@storybook/client-api/6.3.0: resolution: {integrity: sha512-5HLtYPBOHif9AdzwLCrVbMQdOJ2dne9zv7oTo6Yl0wvLhbr6V/VypoXE0CgFF3hAI2iUquG5z00KlrE8UErC5Q==} peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/addons': 6.3.0 '@storybook/channel-postmessage': 6.3.0 '@storybook/channels': 6.3.0 '@storybook/client-logger': 6.3.0 @@ -6352,8 +6329,6 @@ packages: lodash: 4.17.21 memoizerific: 1.11.3 qs: 6.10.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 regenerator-runtime: 0.13.7 stable: 0.1.8 store2: 2.12.0 @@ -6381,7 +6356,7 @@ packages: global: 4.4.0 dev: true - /@storybook/components/6.2.9_1f407347b6533184bf697218ead413cc: + /@storybook/components/6.2.9: resolution: {integrity: sha512-hnV1MI2aB2g1sJ7NJphpxi7TwrMZQ/tpCJeHnkjmzyC6ez1MXqcBXGrEEdSXzRfAxjQTOEpu6H1mnns0xMP0Ag==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -6390,7 +6365,7 @@ packages: '@popperjs/core': 2.9.2 '@storybook/client-logger': 6.2.9 '@storybook/csf': 0.0.1 - '@storybook/theming': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/theming': 6.2.9 '@types/color-convert': 2.0.0 '@types/overlayscrollbars': 1.12.0 '@types/react-syntax-highlighter': 11.0.5 @@ -6399,17 +6374,15 @@ packages: fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 - markdown-to-jsx: 7.1.2_react@18.0.0-alpha-aecb3b6d1 + markdown-to-jsx: 7.1.2 memoizerific: 1.11.3 overlayscrollbars: 1.13.1 polished: 4.1.1 prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 - react-colorful: 5.1.2_f991c289939c8299bed5e4a6a5a79a62 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 - react-popper-tooltip: 3.1.1_f991c289939c8299bed5e4a6a5a79a62 - react-syntax-highlighter: 13.5.3_react@18.0.0-alpha-aecb3b6d1 - react-textarea-autosize: 8.3.2_5ec7ab1ee537e9220fe02de547882794 + react-colorful: 5.1.2 + react-popper-tooltip: 3.1.1 + react-syntax-highlighter: 13.5.3 + react-textarea-autosize: 8.3.2 regenerator-runtime: 0.13.7 ts-dedent: 2.1.1 util-deprecate: 1.0.2 @@ -6417,7 +6390,7 @@ packages: - '@types/react' dev: true - /@storybook/components/6.3.0_1f407347b6533184bf697218ead413cc: + /@storybook/components/6.3.0: resolution: {integrity: sha512-TDcazQAtNgE1E33jKKABx51XpvWyXMcJZFWA0d5wu8XrElrL1PuZqz7dPePoWKGMfTaPYWP6rRyDg4Svv36j+A==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -6426,7 +6399,7 @@ packages: '@popperjs/core': 2.9.2 '@storybook/client-logger': 6.3.0 '@storybook/csf': 0.0.1 - '@storybook/theming': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/theming': 6.3.0 '@types/color-convert': 2.0.0 '@types/overlayscrollbars': 1.12.0 '@types/react-syntax-highlighter': 11.0.5 @@ -6435,17 +6408,15 @@ packages: fast-deep-equal: 3.1.3 global: 4.4.0 lodash: 4.17.21 - markdown-to-jsx: 7.1.3_react@18.0.0-alpha-aecb3b6d1 + markdown-to-jsx: 7.1.3 memoizerific: 1.11.3 overlayscrollbars: 1.13.1 polished: 4.1.1 prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 - react-colorful: 5.1.2_f991c289939c8299bed5e4a6a5a79a62 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 - react-popper-tooltip: 3.1.1_f991c289939c8299bed5e4a6a5a79a62 - react-syntax-highlighter: 13.5.3_react@18.0.0-alpha-aecb3b6d1 - react-textarea-autosize: 8.3.2_5ec7ab1ee537e9220fe02de547882794 + react-colorful: 5.1.2 + react-popper-tooltip: 3.1.1 + react-syntax-highlighter: 13.5.3 + react-textarea-autosize: 8.3.2 regenerator-runtime: 0.13.7 ts-dedent: 2.1.1 util-deprecate: 1.0.2 @@ -6453,7 +6424,7 @@ packages: - '@types/react' dev: true - /@storybook/core-client/6.2.9_53e6227e4f40c752abf927cd17ffc644: + /@storybook/core-client/6.2.9_webpack@4.46.0: resolution: {integrity: sha512-jW841J5lCe1Ub5ZMtzYPgCy/OUddFxxVYeHLZyuNxlH5RoiQQxbDpuFlzuZMYGuIzD6eZw+ANE4w5vW/y5oBfA==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -6464,23 +6435,20 @@ packages: typescript: optional: true dependencies: - '@storybook/addons': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/addons': 6.2.9 '@storybook/channel-postmessage': 6.2.9 - '@storybook/client-api': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/client-api': 6.2.9 '@storybook/client-logger': 6.2.9 '@storybook/core-events': 6.2.9 '@storybook/csf': 0.0.1 - '@storybook/ui': 6.2.9_1f407347b6533184bf697218ead413cc + '@storybook/ui': 6.2.9 ansi-to-html: 0.6.14 core-js: 3.11.0 global: 4.4.0 lodash: 4.17.21 qs: 6.10.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 regenerator-runtime: 0.13.7 ts-dedent: 2.1.1 - typescript: 4.3.2 unfetch: 4.2.0 util-deprecate: 1.0.2 webpack: 4.46.0 @@ -6488,7 +6456,7 @@ packages: - '@types/react' dev: true - /@storybook/core-client/6.3.0_53e6227e4f40c752abf927cd17ffc644: + /@storybook/core-client/6.3.0: resolution: {integrity: sha512-S2MZmHGjkZdGYgkWNXzn3Z/AS2NeiYVyO503mF7d+4zfgAoasKBkc7Y/1Ry3RuaGRwOq5bNQtJUZsF0kX1a8iQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -6499,32 +6467,28 @@ packages: typescript: optional: true dependencies: - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/addons': 6.3.0 '@storybook/channel-postmessage': 6.3.0 - '@storybook/client-api': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/client-api': 6.3.0 '@storybook/client-logger': 6.3.0 '@storybook/core-events': 6.3.0 '@storybook/csf': 0.0.1 - '@storybook/ui': 6.3.0_1f407347b6533184bf697218ead413cc + '@storybook/ui': 6.3.0 airbnb-js-shims: 2.2.1 ansi-to-html: 0.6.14 core-js: 3.11.0 global: 4.4.0 lodash: 4.17.21 qs: 6.10.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 regenerator-runtime: 0.13.7 ts-dedent: 2.1.1 - typescript: 4.3.2 unfetch: 4.2.0 util-deprecate: 1.0.2 - webpack: 4.46.0 transitivePeerDependencies: - '@types/react' dev: true - /@storybook/core-client/6.3.0_7baed572bf2f4a171e7994a9ff64c932: + /@storybook/core-client/6.3.0_webpack@4.46.0: resolution: {integrity: sha512-S2MZmHGjkZdGYgkWNXzn3Z/AS2NeiYVyO503mF7d+4zfgAoasKBkc7Y/1Ry3RuaGRwOq5bNQtJUZsF0kX1a8iQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -6535,31 +6499,29 @@ packages: typescript: optional: true dependencies: - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/addons': 6.3.0 '@storybook/channel-postmessage': 6.3.0 - '@storybook/client-api': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/client-api': 6.3.0 '@storybook/client-logger': 6.3.0 '@storybook/core-events': 6.3.0 '@storybook/csf': 0.0.1 - '@storybook/ui': 6.3.0_1f407347b6533184bf697218ead413cc + '@storybook/ui': 6.3.0 airbnb-js-shims: 2.2.1 ansi-to-html: 0.6.14 core-js: 3.11.0 global: 4.4.0 lodash: 4.17.21 qs: 6.10.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 regenerator-runtime: 0.13.7 ts-dedent: 2.1.1 - typescript: 4.3.2 unfetch: 4.2.0 util-deprecate: 1.0.2 + webpack: 4.46.0 transitivePeerDependencies: - '@types/react' dev: true - /@storybook/core-common/6.2.9_0a9381bdf91aef92a8ad157f4a8c25c2: + /@storybook/core-common/6.2.9: resolution: {integrity: sha512-ve0Qb4EMit8jGibfZBprmaU2i4LtpB4vSMIzD9nB1YeBmw2cGhHubtmayZ0TwcV3fPQhtYH9wwRWuWyzzHyQyw==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -6613,11 +6575,8 @@ packages: micromatch: 4.0.4 pkg-dir: 5.0.0 pretty-hrtime: 1.0.3 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 resolve-from: 5.0.0 ts-dedent: 2.1.1 - typescript: 4.3.2 util-deprecate: 1.0.2 webpack: 4.46.0 transitivePeerDependencies: @@ -6626,7 +6585,7 @@ packages: - webpack-command dev: true - /@storybook/core-common/6.3.0_0a9381bdf91aef92a8ad157f4a8c25c2: + /@storybook/core-common/6.3.0: resolution: {integrity: sha512-AYoN1g8g4FI2K2UcGfLAm7EUPgesiClLT/zqy2q6dWQrIUayWzJqI+gqDyYukv5s+KHRanGBZNCTBww/VhcPlg==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -6680,11 +6639,8 @@ packages: micromatch: 4.0.4 pkg-dir: 5.0.0 pretty-hrtime: 1.0.3 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 resolve-from: 5.0.0 ts-dedent: 2.1.1 - typescript: 4.3.2 util-deprecate: 1.0.2 webpack: 4.46.0 transitivePeerDependencies: @@ -6711,7 +6667,7 @@ packages: core-js: 3.11.0 dev: true - /@storybook/core-server/6.2.9_7baed572bf2f4a171e7994a9ff64c932: + /@storybook/core-server/6.2.9: resolution: {integrity: sha512-DzihO73pj1Ro0Y4tq9hjw2mLMUYeSRPrx7CndCOBxcTHCKQ8Kd7Dee3wJ49t5/19V7TW1+4lYR59GAy73FeOAQ==} peerDependencies: '@storybook/builder-webpack5': 6.2.9 @@ -6727,14 +6683,14 @@ packages: '@babel/core': 7.13.16 '@babel/plugin-transform-template-literals': 7.13.0_@babel+core@7.13.16 '@babel/preset-react': 7.13.13_@babel+core@7.13.16 - '@storybook/addons': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/builder-webpack4': 6.2.9_7baed572bf2f4a171e7994a9ff64c932 - '@storybook/core-client': 6.2.9_53e6227e4f40c752abf927cd17ffc644 - '@storybook/core-common': 6.2.9_0a9381bdf91aef92a8ad157f4a8c25c2 + '@storybook/addons': 6.2.9 + '@storybook/builder-webpack4': 6.2.9 + '@storybook/core-client': 6.2.9_webpack@4.46.0 + '@storybook/core-common': 6.2.9 '@storybook/node-logger': 6.2.9 '@storybook/semver': 7.3.2 - '@storybook/theming': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/ui': 6.2.9_1f407347b6533184bf697218ead413cc + '@storybook/theming': 6.2.9 + '@storybook/ui': 6.2.9 '@types/node': 14.14.41 '@types/node-fetch': 2.5.10 '@types/pretty-hrtime': 1.0.0 @@ -6761,11 +6717,9 @@ packages: html-webpack-plugin: 4.5.2_webpack@4.46.0 ip: 1.1.5 node-fetch: 2.6.1 - pnp-webpack-plugin: 1.6.4_typescript@4.3.2 + pnp-webpack-plugin: 1.6.4 pretty-hrtime: 1.0.3 prompts: 2.4.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 read-pkg-up: 7.0.1 regenerator-runtime: 0.13.7 resolve-from: 5.0.0 @@ -6774,7 +6728,6 @@ packages: telejson: 5.1.1 terser-webpack-plugin: 3.1.0_webpack@4.46.0 ts-dedent: 2.1.1 - typescript: 4.3.2 url-loader: 4.1.1_file-loader@6.2.0+webpack@4.46.0 util-deprecate: 1.0.2 webpack: 4.46.0 @@ -6787,7 +6740,7 @@ packages: - webpack-command dev: true - /@storybook/core-server/6.3.0_47956781722f535ef7d04bde54cd9359: + /@storybook/core-server/6.3.0_@babel+core@7.14.3: resolution: {integrity: sha512-6Lckos2bleYb0Qg0JXhLSyqASKMquueefIjde5ySelyJzZLyW8ZYt+sfKu7+rdi/RqOvUCyfLcPHAxJSub2bRg==} peerDependencies: '@storybook/builder-webpack5': 6.3.0 @@ -6803,11 +6756,11 @@ packages: typescript: optional: true dependencies: - '@storybook/builder-webpack4': 6.3.0_7baed572bf2f4a171e7994a9ff64c932 - '@storybook/core-client': 6.3.0_53e6227e4f40c752abf927cd17ffc644 - '@storybook/core-common': 6.3.0_0a9381bdf91aef92a8ad157f4a8c25c2 + '@storybook/builder-webpack4': 6.3.0 + '@storybook/core-client': 6.3.0_webpack@4.46.0 + '@storybook/core-common': 6.3.0 '@storybook/csf-tools': 6.3.0_@babel+core@7.14.3 - '@storybook/manager-webpack4': 6.3.0_7baed572bf2f4a171e7994a9ff64c932 + '@storybook/manager-webpack4': 6.3.0 '@storybook/node-logger': 6.3.0 '@storybook/semver': 7.3.2 '@types/node': 14.14.41 @@ -6831,12 +6784,9 @@ packages: node-fetch: 2.6.1 pretty-hrtime: 1.0.3 prompts: 2.4.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 regenerator-runtime: 0.13.7 serve-favicon: 2.5.0 ts-dedent: 2.1.1 - typescript: 4.3.2 util-deprecate: 1.0.2 webpack: 4.46.0 transitivePeerDependencies: @@ -6847,7 +6797,7 @@ packages: - webpack-command dev: true - /@storybook/core/6.2.9_53e6227e4f40c752abf927cd17ffc644: + /@storybook/core/6.2.9_webpack@4.46.0: resolution: {integrity: sha512-pzbyjWvj0t8m0kR2pC9GQne4sZn7Y/zfcbm6/31CL+yhzOQjfJEj3n4ZFUlxikXqQJPg1aWfypfyaeaLL0QyuA==} peerDependencies: '@storybook/builder-webpack5': 6.2.9 @@ -6860,11 +6810,8 @@ packages: typescript: optional: true dependencies: - '@storybook/core-client': 6.2.9_53e6227e4f40c752abf927cd17ffc644 - '@storybook/core-server': 6.2.9_7baed572bf2f4a171e7994a9ff64c932 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 - typescript: 4.3.2 + '@storybook/core-client': 6.2.9_webpack@4.46.0 + '@storybook/core-server': 6.2.9 transitivePeerDependencies: - '@types/react' - supports-color @@ -6873,7 +6820,7 @@ packages: - webpack-command dev: true - /@storybook/core/6.3.0_1a54c753cfbc7eef09ea62084213037e: + /@storybook/core/6.3.0_105470dfa535e5f605a4a54ef7d81e87: resolution: {integrity: sha512-8sEhlzD0f3ewnnXutt+aBTaVJ1EuW6yR8pSSLVSSwdBRQE2UVy1YOA+0kAspq+lNrF1IrvX6WvPqJq/ZmPWcOw==} peerDependencies: '@storybook/builder-webpack5': 6.3.0 @@ -6886,11 +6833,8 @@ packages: typescript: optional: true dependencies: - '@storybook/core-client': 6.3.0_53e6227e4f40c752abf927cd17ffc644 - '@storybook/core-server': 6.3.0_47956781722f535ef7d04bde54cd9359 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 - typescript: 4.3.2 + '@storybook/core-client': 6.3.0_webpack@4.46.0 + '@storybook/core-server': 6.3.0_@babel+core@7.14.3 transitivePeerDependencies: - '@babel/core' - '@storybook/manager-webpack5' @@ -6901,7 +6845,7 @@ packages: - webpack-command dev: true - /@storybook/core/6.3.0_47956781722f535ef7d04bde54cd9359: + /@storybook/core/6.3.0_@babel+core@7.14.3: resolution: {integrity: sha512-8sEhlzD0f3ewnnXutt+aBTaVJ1EuW6yR8pSSLVSSwdBRQE2UVy1YOA+0kAspq+lNrF1IrvX6WvPqJq/ZmPWcOw==} peerDependencies: '@storybook/builder-webpack5': 6.3.0 @@ -6914,11 +6858,8 @@ packages: typescript: optional: true dependencies: - '@storybook/core-client': 6.3.0_7baed572bf2f4a171e7994a9ff64c932 - '@storybook/core-server': 6.3.0_47956781722f535ef7d04bde54cd9359 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 - typescript: 4.3.2 + '@storybook/core-client': 6.3.0 + '@storybook/core-server': 6.3.0_@babel+core@7.14.3 transitivePeerDependencies: - '@babel/core' - '@storybook/manager-webpack5' @@ -6957,7 +6898,7 @@ packages: lodash: 4.17.21 dev: true - /@storybook/manager-webpack4/6.3.0_7baed572bf2f4a171e7994a9ff64c932: + /@storybook/manager-webpack4/6.3.0: resolution: {integrity: sha512-M4HjxKQeNaMTg7PlxVp06jmdpVHu1H4cdgXbHZcD977nJ6R7bpZ4YTlTez3TjshJLoze75FRyubOlNu0l5CdKQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -6970,12 +6911,12 @@ packages: '@babel/core': 7.14.3 '@babel/plugin-transform-template-literals': 7.13.0_@babel+core@7.14.3 '@babel/preset-react': 7.13.13_@babel+core@7.14.3 - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/core-client': 6.3.0_53e6227e4f40c752abf927cd17ffc644 - '@storybook/core-common': 6.3.0_0a9381bdf91aef92a8ad157f4a8c25c2 + '@storybook/addons': 6.3.0 + '@storybook/core-client': 6.3.0_webpack@4.46.0 + '@storybook/core-common': 6.3.0 '@storybook/node-logger': 6.3.0 - '@storybook/theming': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/ui': 6.3.0_1f407347b6533184bf697218ead413cc + '@storybook/theming': 6.3.0 + '@storybook/ui': 6.3.0 '@types/node': 14.14.41 '@types/webpack': 4.41.27 babel-loader: 8.2.2_105470dfa535e5f605a4a54ef7d81e87 @@ -6991,9 +6932,7 @@ packages: fs-extra: 9.1.0 html-webpack-plugin: 4.5.2_webpack@4.46.0 node-fetch: 2.6.1 - pnp-webpack-plugin: 1.6.4_typescript@4.3.2 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 + pnp-webpack-plugin: 1.6.4 read-pkg-up: 7.0.1 regenerator-runtime: 0.13.7 resolve-from: 5.0.0 @@ -7001,7 +6940,6 @@ packages: telejson: 5.3.3 terser-webpack-plugin: 4.2.3_webpack@4.46.0 ts-dedent: 2.1.1 - typescript: 4.3.2 url-loader: 4.1.1_file-loader@6.2.0+webpack@4.46.0 util-deprecate: 1.0.2 webpack: 4.46.0 @@ -7040,7 +6978,7 @@ packages: core-js: 3.11.0 dev: true - /@storybook/react-docgen-typescript-plugin/1.0.2-canary.3c70e01.0_typescript@4.3.2+webpack@4.46.0: + /@storybook/react-docgen-typescript-plugin/1.0.2-canary.3c70e01.0_webpack@4.46.0: resolution: {integrity: sha512-go1LO+iM6qLGhgqvEoEpw339/kf2YBX86aG2JewWwlHCO0YyyYdlsdZd3KkB5MVtudyK7mtrcNDq0k/EIaB2JA==} peerDependencies: typescript: '>= 3.x' @@ -7051,15 +6989,14 @@ packages: find-cache-dir: 3.3.1 flat-cache: 3.0.4 micromatch: 4.0.4 - react-docgen-typescript: 2.0.0_typescript@4.3.2 + react-docgen-typescript: 2.0.0 tslib: 2.2.0 - typescript: 4.3.2 webpack: 4.46.0 transitivePeerDependencies: - supports-color dev: true - /@storybook/react/6.2.9_7baed572bf2f4a171e7994a9ff64c932: + /@storybook/react/6.2.9: resolution: {integrity: sha512-glvw+o/Vek2oapYIXCYDK6gm3cuSnx0XdOpiJVcXk3KLb8JfLbdzGYYp6dcWUbyOBqGcGFRpXIgMmkcwgn+fvQ==} engines: {node: '>=10.13.0'} hasBin: true @@ -7077,9 +7014,9 @@ packages: '@babel/preset-flow': 7.13.13 '@babel/preset-react': 7.13.13 '@pmmmwh/react-refresh-webpack-plugin': 0.4.3_133f2312fd2dfba9fc3b3697533854a6 - '@storybook/addons': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/core': 6.2.9_53e6227e4f40c752abf927cd17ffc644 - '@storybook/core-common': 6.2.9_0a9381bdf91aef92a8ad157f4a8c25c2 + '@storybook/addons': 6.2.9 + '@storybook/core': 6.2.9_webpack@4.46.0 + '@storybook/core-common': 6.2.9 '@storybook/node-logger': 6.2.9 '@storybook/semver': 7.3.2 '@types/webpack-env': 1.16.0 @@ -7090,15 +7027,12 @@ packages: global: 4.4.0 lodash: 4.17.21 prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 react-dev-utils: 11.0.4 - react-docgen-typescript-plugin: 0.6.3_typescript@4.3.2 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 + react-docgen-typescript-plugin: 0.6.3 react-refresh: 0.8.3 read-pkg-up: 7.0.1 regenerator-runtime: 0.13.7 ts-dedent: 2.1.1 - typescript: 4.3.2 webpack: 4.46.0 transitivePeerDependencies: - '@storybook/builder-webpack5' @@ -7114,7 +7048,7 @@ packages: - webpack-plugin-serve dev: true - /@storybook/react/6.3.0_47956781722f535ef7d04bde54cd9359: + /@storybook/react/6.3.0_@babel+core@7.14.3: resolution: {integrity: sha512-GxK88Si9WQa16uUsUBhe6kRhSEZUrR/1ljP6QvLY+C5MyYJZ89DZPAbWnVo47SJCXhAlvJW83nSTSxnobn8RWA==} engines: {node: '>=10.13.0'} hasBin: true @@ -7133,11 +7067,11 @@ packages: '@babel/preset-flow': 7.13.13_@babel+core@7.14.3 '@babel/preset-react': 7.13.13_@babel+core@7.14.3 '@pmmmwh/react-refresh-webpack-plugin': 0.4.3_133f2312fd2dfba9fc3b3697533854a6 - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/core': 6.3.0_1a54c753cfbc7eef09ea62084213037e - '@storybook/core-common': 6.3.0_0a9381bdf91aef92a8ad157f4a8c25c2 + '@storybook/addons': 6.3.0 + '@storybook/core': 6.3.0_105470dfa535e5f605a4a54ef7d81e87 + '@storybook/core-common': 6.3.0 '@storybook/node-logger': 6.3.0 - '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.3c70e01.0_typescript@4.3.2+webpack@4.46.0 + '@storybook/react-docgen-typescript-plugin': 1.0.2-canary.3c70e01.0_webpack@4.46.0 '@storybook/semver': 7.3.2 '@types/webpack-env': 1.16.0 babel-plugin-add-react-displayname: 0.0.5 @@ -7147,14 +7081,11 @@ packages: global: 4.4.0 lodash: 4.17.21 prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 react-dev-utils: 11.0.4 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 react-refresh: 0.8.3 read-pkg-up: 7.0.1 regenerator-runtime: 0.13.7 ts-dedent: 2.1.1 - typescript: 4.3.2 webpack: 4.46.0 transitivePeerDependencies: - '@storybook/builder-webpack5' @@ -7171,13 +7102,13 @@ packages: - webpack-plugin-serve dev: true - /@storybook/router/5.3.18_f991c289939c8299bed5e4a6a5a79a62: + /@storybook/router/5.3.18_react@18.0.0-alpha-aecb3b6d1: resolution: {integrity: sha512-6B2U2C75KTSVaCuYYgcubeJGcCSnwsXuEf50hEd5mGqWgHZfojCtGvB7Ko4X+0h8rEC+eNA4p7YBOhlUv9WNrQ==} peerDependencies: react: '*' react-dom: '*' dependencies: - '@reach/router': 1.3.4_f991c289939c8299bed5e4a6a5a79a62 + '@reach/router': 1.3.4_react@18.0.0-alpha-aecb3b6d1 '@storybook/csf': 0.0.1 '@types/reach__router': 1.3.7 core-js: 3.10.0 @@ -7186,17 +7117,16 @@ packages: memoizerific: 1.11.3 qs: 6.10.1 react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 util-deprecate: 1.0.2 dev: true - /@storybook/router/6.2.9_f991c289939c8299bed5e4a6a5a79a62: + /@storybook/router/6.2.9: resolution: {integrity: sha512-7Bn1OFoItCl8whXRT8N1qp1Lky7kzXJ3aslWp5E8HcM8rxh4OYXfbaeiyJEJxBTGC5zxgY+tAEXHFjsAviFROg==} peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: - '@reach/router': 1.3.4_f991c289939c8299bed5e4a6a5a79a62 + '@reach/router': 1.3.4 '@storybook/client-logger': 6.2.9 '@types/reach__router': 1.3.7 core-js: 3.11.0 @@ -7205,18 +7135,16 @@ packages: lodash: 4.17.21 memoizerific: 1.11.3 qs: 6.10.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 ts-dedent: 2.1.1 dev: true - /@storybook/router/6.3.0_f991c289939c8299bed5e4a6a5a79a62: + /@storybook/router/6.3.0: resolution: {integrity: sha512-RJcRVI6IqffLOU6k9GrlB3cXLLK5TRmFSIjwW3lEHVhj313e56uLRYTylT11aBf8bPEQ+MeQVe2sqQUBG3Ugng==} peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: - '@reach/router': 1.3.4_f991c289939c8299bed5e4a6a5a79a62 + '@reach/router': 1.3.4 '@storybook/client-logger': 6.3.0 '@types/reach__router': 1.3.7 core-js: 3.11.0 @@ -7225,8 +7153,6 @@ packages: lodash: 4.17.21 memoizerific: 1.11.3 qs: 6.10.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 ts-dedent: 2.1.1 dev: true @@ -7239,13 +7165,13 @@ packages: find-up: 4.1.0 dev: true - /@storybook/source-loader/6.3.0_f991c289939c8299bed5e4a6a5a79a62: + /@storybook/source-loader/6.3.0: resolution: {integrity: sha512-5LpqY5uu35Fg01D7Zu0xAT7ow6tcuHz+fkIxsGAJhzWovbV5NYl/BP8WSPv7TH+WjYve+RI2Xp6a9JFrgi9gpQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/addons': 6.3.0 '@storybook/client-logger': 6.3.0 '@storybook/csf': 0.0.1 core-js: 3.11.0 @@ -7254,12 +7180,10 @@ packages: loader-utils: 2.0.0 lodash: 4.17.21 prettier: 2.2.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 regenerator-runtime: 0.13.7 dev: true - /@storybook/theming/5.3.18_f991c289939c8299bed5e4a6a5a79a62: + /@storybook/theming/5.3.18_react@18.0.0-alpha-aecb3b6d1: resolution: {integrity: sha512-lfFTeLoYwLMKg96N3gn0umghMdAHgJBGuk2OM8Ll84yWtdl9RGnzfiI1Fl7Cr5k95dCF7drLJlJCao1VxUkFSA==} peerDependencies: react: '*' @@ -7276,89 +7200,82 @@ packages: polished: 3.7.1 prop-types: 15.7.2 react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 resolve-from: 5.0.0 ts-dedent: 1.2.0 dev: true - /@storybook/theming/6.2.9_f991c289939c8299bed5e4a6a5a79a62: + /@storybook/theming/6.2.9: resolution: {integrity: sha512-183oJW7AD7Fhqg5NT4ct3GJntwteAb9jZnQ6yhf9JSdY+fk8OhxRbPf7ov0au2gYACcGrWDd9K5pYQsvWlP5gA==} peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: - '@emotion/core': 10.1.1_react@18.0.0-alpha-aecb3b6d1 + '@emotion/core': 10.1.1 '@emotion/is-prop-valid': 0.8.8 - '@emotion/styled': 10.0.27_0969515b2e564c6f8da5ffe0dd24efb6 + '@emotion/styled': 10.0.27_@emotion+core@10.1.1 '@storybook/client-logger': 6.2.9 core-js: 3.11.0 deep-object-diff: 1.1.0 - emotion-theming: 10.0.27_0969515b2e564c6f8da5ffe0dd24efb6 + emotion-theming: 10.0.27_@emotion+core@10.1.1 global: 4.4.0 memoizerific: 1.11.3 polished: 4.1.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 resolve-from: 5.0.0 ts-dedent: 2.1.1 dev: true - /@storybook/theming/6.3.0_f991c289939c8299bed5e4a6a5a79a62: + /@storybook/theming/6.3.0: resolution: {integrity: sha512-Mtnq8qFv/TTtnl1sB6DGBCg/kJq7sR2e2uh/Uy2sHyksnhVITVJxEIFHSBo2L+IE6y0S2Oh6F9WdddWAO4Ao2g==} peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: - '@emotion/core': 10.1.1_react@18.0.0-alpha-aecb3b6d1 + '@emotion/core': 10.1.1 '@emotion/is-prop-valid': 0.8.8 - '@emotion/styled': 10.0.27_0969515b2e564c6f8da5ffe0dd24efb6 + '@emotion/styled': 10.0.27_@emotion+core@10.1.1 '@storybook/client-logger': 6.3.0 core-js: 3.11.0 deep-object-diff: 1.1.0 - emotion-theming: 10.0.27_0969515b2e564c6f8da5ffe0dd24efb6 + emotion-theming: 10.0.27_@emotion+core@10.1.1 global: 4.4.0 memoizerific: 1.11.3 polished: 4.1.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 resolve-from: 5.0.0 ts-dedent: 2.1.1 dev: true - /@storybook/ui/6.2.9_1f407347b6533184bf697218ead413cc: + /@storybook/ui/6.2.9: resolution: {integrity: sha512-jq2xmw3reIqik/6ibUSbNKGR+Xvr9wkAEwexiOl+5WQ5BeYJpw4dmDmsFQf+SQuWaSEUUPolbzkakRQM778Kdg==} peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: - '@emotion/core': 10.1.1_react@18.0.0-alpha-aecb3b6d1 - '@storybook/addons': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/api': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 + '@emotion/core': 10.1.1 + '@storybook/addons': 6.2.9 + '@storybook/api': 6.2.9 '@storybook/channels': 6.2.9 '@storybook/client-logger': 6.2.9 - '@storybook/components': 6.2.9_1f407347b6533184bf697218ead413cc + '@storybook/components': 6.2.9 '@storybook/core-events': 6.2.9 - '@storybook/router': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/router': 6.2.9 '@storybook/semver': 7.3.2 - '@storybook/theming': 6.2.9_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/theming': 6.2.9 '@types/markdown-to-jsx': 6.11.3 copy-to-clipboard: 3.3.1 core-js: 3.11.0 core-js-pure: 3.11.0 - downshift: 6.1.3_react@18.0.0-alpha-aecb3b6d1 - emotion-theming: 10.0.27_0969515b2e564c6f8da5ffe0dd24efb6 + downshift: 6.1.3 + emotion-theming: 10.0.27_@emotion+core@10.1.1 fuse.js: 3.6.1 global: 4.4.0 lodash: 4.17.21 - markdown-to-jsx: 6.11.4_react@18.0.0-alpha-aecb3b6d1 + markdown-to-jsx: 6.11.4 memoizerific: 1.11.3 polished: 4.1.1 qs: 6.10.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 react-draggable: 4.4.3 - react-helmet-async: 1.0.9_f991c289939c8299bed5e4a6a5a79a62 - react-sizeme: 3.0.1_f991c289939c8299bed5e4a6a5a79a62 + react-helmet-async: 1.0.9 + react-sizeme: 3.0.1 regenerator-runtime: 0.13.7 resolve-from: 5.0.0 store2: 2.12.0 @@ -7366,40 +7283,38 @@ packages: - '@types/react' dev: true - /@storybook/ui/6.3.0_1f407347b6533184bf697218ead413cc: + /@storybook/ui/6.3.0: resolution: {integrity: sha512-1f2+IB+WRrBSht538jNFSUDUxA8PpEOnDkJsE9PyOJEvskV/8POuCTjbpcvdBYFQ9hSq1oi3535mdbNiTivYTg==} peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: - '@emotion/core': 10.1.1_react@18.0.0-alpha-aecb3b6d1 - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/api': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@emotion/core': 10.1.1 + '@storybook/addons': 6.3.0 + '@storybook/api': 6.3.0 '@storybook/channels': 6.3.0 '@storybook/client-logger': 6.3.0 - '@storybook/components': 6.3.0_1f407347b6533184bf697218ead413cc + '@storybook/components': 6.3.0 '@storybook/core-events': 6.3.0 - '@storybook/router': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/router': 6.3.0 '@storybook/semver': 7.3.2 - '@storybook/theming': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 + '@storybook/theming': 6.3.0 '@types/markdown-to-jsx': 6.11.3 copy-to-clipboard: 3.3.1 core-js: 3.11.0 core-js-pure: 3.11.0 - downshift: 6.1.3_react@18.0.0-alpha-aecb3b6d1 - emotion-theming: 10.0.27_0969515b2e564c6f8da5ffe0dd24efb6 + downshift: 6.1.3 + emotion-theming: 10.0.27_@emotion+core@10.1.1 fuse.js: 3.6.1 global: 4.4.0 lodash: 4.17.21 - markdown-to-jsx: 6.11.4_react@18.0.0-alpha-aecb3b6d1 + markdown-to-jsx: 6.11.4 memoizerific: 1.11.3 polished: 4.1.1 qs: 6.10.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 react-draggable: 4.4.3 - react-helmet-async: 1.0.9_f991c289939c8299bed5e4a6a5a79a62 - react-sizeme: 3.0.1_f991c289939c8299bed5e4a6a5a79a62 + react-helmet-async: 1.0.9 + react-sizeme: 3.0.1 regenerator-runtime: 0.13.7 resolve-from: 5.0.0 store2: 2.12.0 @@ -7491,7 +7406,7 @@ packages: defer-to-connect: 1.1.3 dev: false - /@testing-library/react-hooks/7.0.0_1959de3a9153879cff3acd96b46ed70f: + /@testing-library/react-hooks/7.0.0_react-test-renderer@17.0.2: resolution: {integrity: sha512-WFBGH8DWdIGGBHt6PBtQPe2v4Kbj9vQ1sQ9qLBTmwn1PNggngint4MTE/IiWCYhPbyTW3oc/7X62DObMn/AjQQ==} engines: {node: '>=12'} peerDependencies: @@ -7508,10 +7423,8 @@ packages: '@types/react': 17.0.3 '@types/react-dom': 17.0.3 '@types/react-test-renderer': 17.0.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 - react-error-boundary: 3.1.1_react@18.0.0-alpha-aecb3b6d1 - react-test-renderer: 17.0.2_react@18.0.0-alpha-aecb3b6d1 + react-error-boundary: 3.1.1 + react-test-renderer: 17.0.2 dev: true /@tootallnate/once/1.1.2: @@ -7541,7 +7454,7 @@ packages: typechain: ^5.0.0 web3: ^1.0.0 dependencies: - typechain: 5.0.0_typescript@4.3.2 + typechain: 5.0.0 dev: false /@types/anymatch/1.3.1: @@ -8483,7 +8396,7 @@ packages: '@types/yargs-parser': 20.2.0 dev: true - /@typescript-eslint/eslint-plugin/4.25.0_ec7770e83475322b368bff30b543badb: + /@typescript-eslint/eslint-plugin/4.25.0_@typescript-eslint+parser@4.25.0: resolution: {integrity: sha512-Qfs3dWkTMKkKwt78xp2O/KZQB8MPS1UQ5D3YW2s6LQWBE1074BE+Rym+b1pXZIX3M3fSvPUDaCvZLKV2ylVYYQ==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -8494,22 +8407,20 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/experimental-utils': 4.25.0_eslint@7.27.0+typescript@4.3.2 - '@typescript-eslint/parser': 4.25.0_eslint@7.27.0+typescript@4.3.2 + '@typescript-eslint/experimental-utils': 4.25.0 + '@typescript-eslint/parser': 4.25.0 '@typescript-eslint/scope-manager': 4.25.0 debug: 4.3.1 - eslint: 7.27.0 functional-red-black-tree: 1.0.1 lodash: 4.17.21 regexpp: 3.1.0 semver: 7.3.5 - tsutils: 3.21.0_typescript@4.3.2 - typescript: 4.3.2 + tsutils: 3.21.0 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils/4.25.0_eslint@7.27.0+typescript@4.3.2: + /@typescript-eslint/experimental-utils/4.25.0: resolution: {integrity: sha512-f0doRE76vq7NEEU0tw+ajv6CrmPelw5wLoaghEHkA2dNLFb3T/zJQqGPQ0OYt5XlZaS13MtnN+GTPCuUVg338w==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -8518,8 +8429,7 @@ packages: '@types/json-schema': 7.0.7 '@typescript-eslint/scope-manager': 4.25.0 '@typescript-eslint/types': 4.25.0 - '@typescript-eslint/typescript-estree': 4.25.0_typescript@4.3.2 - eslint: 7.27.0 + '@typescript-eslint/typescript-estree': 4.25.0 eslint-scope: 5.1.1 eslint-utils: 2.1.0 transitivePeerDependencies: @@ -8527,7 +8437,7 @@ packages: - typescript dev: true - /@typescript-eslint/parser/4.25.0_eslint@7.27.0+typescript@4.3.2: + /@typescript-eslint/parser/4.25.0: resolution: {integrity: sha512-OZFa1SKyEJpAhDx8FcbWyX+vLwh7OEtzoo2iQaeWwxucyfbi0mT4DijbOSsTgPKzGHr6GrF2V5p/CEpUH/VBxg==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -8539,10 +8449,8 @@ packages: dependencies: '@typescript-eslint/scope-manager': 4.25.0 '@typescript-eslint/types': 4.25.0 - '@typescript-eslint/typescript-estree': 4.25.0_typescript@4.3.2 + '@typescript-eslint/typescript-estree': 4.25.0 debug: 4.3.1 - eslint: 7.27.0 - typescript: 4.3.2 transitivePeerDependencies: - supports-color dev: true @@ -8560,7 +8468,7 @@ packages: engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dev: true - /@typescript-eslint/typescript-estree/4.25.0_typescript@4.3.2: + /@typescript-eslint/typescript-estree/4.25.0: resolution: {integrity: sha512-1B8U07TGNAFMxZbSpF6jqiDs1cVGO0izVkf18Q/SPcUAc9LhHxzvSowXDTvkHMWUVuPpagupaW63gB6ahTXVlg==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -8575,8 +8483,7 @@ packages: globby: 11.0.3 is-glob: 4.0.1 semver: 7.3.5 - tsutils: 3.21.0_typescript@4.3.2 - typescript: 4.3.2 + tsutils: 3.21.0 transitivePeerDependencies: - supports-color dev: true @@ -9149,7 +9056,7 @@ packages: symbol.prototype.description: 1.0.4 dev: true - /airbnb-prop-types/2.16.0_react@18.0.0-alpha-aecb3b6d1: + /airbnb-prop-types/2.16.0: resolution: {integrity: sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==} peerDependencies: react: ^0.14 || ^15.0.0 || ^16.0.0-alpha @@ -9162,7 +9069,6 @@ packages: object.entries: 1.1.3 prop-types: 15.7.2 prop-types-exact: 1.2.0 - react: 18.0.0-alpha-aecb3b6d1 react-is: 16.13.1 dev: true @@ -11959,6 +11865,17 @@ packages: warning: 4.0.3 dev: true + /create-react-context/0.3.0_prop-types@15.7.2: + resolution: {integrity: sha512-dNldIoSuNSvlTJ7slIKC/ZFGKexBMBrrcc+TTe1NdmROnaASuLPvqpwj9v4XS4uXZ8+YPu0sNmShX2rXI5LNsw==} + peerDependencies: + prop-types: ^15.0.0 + react: ^0.14.0 || ^15.0.0 || ^16.0.0 + dependencies: + gud: 1.0.0 + prop-types: 15.7.2 + warning: 4.0.3 + dev: true + /create-require/1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} dev: true @@ -12888,7 +12805,7 @@ packages: minimatch: 3.0.4 dev: false - /downshift/6.1.3_react@18.0.0-alpha-aecb3b6d1: + /downshift/6.1.3: resolution: {integrity: sha512-RA1MuaNcTbt0j+sVLhSs8R2oZbBXYAtdQP/V+uHhT3DoDteZzJPjlC+LQVm9T07Wpvo84QXaZtUCePLDTDwGXg==} peerDependencies: react: '>=16.12.0' @@ -12896,7 +12813,6 @@ packages: '@babel/runtime': 7.13.17 compute-scroll-into-view: 1.0.17 prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 react-is: 17.0.2 dev: true @@ -13024,30 +12940,29 @@ packages: resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} engines: {node: '>= 4'} - /emotion-theming/10.0.27_0969515b2e564c6f8da5ffe0dd24efb6: + /emotion-theming/10.0.27_868fdfab3e8c9138cf50b7ab83aa28b0: resolution: {integrity: sha512-MlF1yu/gYh8u+sLUqA0YuA9JX0P4Hb69WlKc/9OLo+WCXuX6sy/KoIa+qJimgmr2dWqnypYKYPX37esjDBbhdw==} peerDependencies: '@emotion/core': ^10.0.27 react: '>=16.3.0' dependencies: '@babel/runtime': 7.14.0 - '@emotion/core': 10.1.1_react@18.0.0-alpha-aecb3b6d1 + '@emotion/core': 10.0.28_react@18.0.0-alpha-aecb3b6d1 '@emotion/weak-memoize': 0.2.5 hoist-non-react-statics: 3.3.2 react: 18.0.0-alpha-aecb3b6d1 dev: true - /emotion-theming/10.0.27_868fdfab3e8c9138cf50b7ab83aa28b0: + /emotion-theming/10.0.27_@emotion+core@10.1.1: resolution: {integrity: sha512-MlF1yu/gYh8u+sLUqA0YuA9JX0P4Hb69WlKc/9OLo+WCXuX6sy/KoIa+qJimgmr2dWqnypYKYPX37esjDBbhdw==} peerDependencies: '@emotion/core': ^10.0.27 react: '>=16.3.0' dependencies: '@babel/runtime': 7.14.0 - '@emotion/core': 10.0.28_react@18.0.0-alpha-aecb3b6d1 + '@emotion/core': 10.1.1 '@emotion/weak-memoize': 0.2.5 hoist-non-react-statics: 3.3.2 - react: 18.0.0-alpha-aecb3b6d1 dev: true /enc-utils/3.0.0: @@ -13175,7 +13090,7 @@ packages: hasBin: true dev: true - /enzyme-adapter-react-16/1.15.6_f15f970d9b179e8975516dda0497bdea: + /enzyme-adapter-react-16/1.15.6_enzyme@3.11.0: resolution: {integrity: sha512-yFlVJCXh8T+mcQo8M6my9sPgeGzj85HSHi6Apgf1Cvq/7EL/J9+1JoJmJsRxZgyTvPMAqOEpRSu/Ii/ZpyOk0g==} peerDependencies: enzyme: ^3.0.0 @@ -13183,31 +13098,28 @@ packages: react-dom: ^16.0.0-0 dependencies: enzyme: 3.11.0 - enzyme-adapter-utils: 1.14.0_react@18.0.0-alpha-aecb3b6d1 + enzyme-adapter-utils: 1.14.0 enzyme-shallow-equal: 1.0.4 has: 1.0.3 object.assign: 4.1.2 object.values: 1.1.3 prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 react-is: 16.13.1 - react-test-renderer: 16.14.0_react@18.0.0-alpha-aecb3b6d1 + react-test-renderer: 16.14.0 semver: 5.7.1 dev: true - /enzyme-adapter-utils/1.14.0_react@18.0.0-alpha-aecb3b6d1: + /enzyme-adapter-utils/1.14.0: resolution: {integrity: sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg==} peerDependencies: react: 0.13.x || 0.14.x || ^15.0.0-0 || ^16.0.0-0 dependencies: - airbnb-prop-types: 2.16.0_react@18.0.0-alpha-aecb3b6d1 + airbnb-prop-types: 2.16.0 function.prototype.name: 1.1.4 has: 1.0.3 object.assign: 4.1.2 object.fromentries: 2.0.4 prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 semver: 5.7.1 dev: true @@ -16757,7 +16669,7 @@ packages: throat: 6.0.1 dev: true - /jest-circus/27.0.1_ts-node@10.0.0: + /jest-circus/27.0.1: resolution: {integrity: sha512-Tz3ytmrsgxWlTwSyPYb8StF9J2IMjLlbBMKAjhL2UU9/0ZpYb2JiEGjXaAhnGauQRbbpyFbSH3yj5HIbdurmwQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -16773,7 +16685,7 @@ packages: jest-each: 27.0.1 jest-matcher-utils: 27.0.1 jest-message-util: 27.0.1 - jest-runner: 27.0.1_ts-node@10.0.0 + jest-runner: 27.0.1 jest-runtime: 27.0.1 jest-snapshot: 27.0.1 jest-util: 27.0.1 @@ -16788,7 +16700,7 @@ packages: - utf-8-validate dev: true - /jest-cli/27.0.1_ts-node@10.0.0: + /jest-cli/27.0.1: resolution: {integrity: sha512-plDsQQwpkKK1SZ5L5xqMa7v/sTwB5LTIeSJqb+cV+4EMlThdUQfg8jwMfHX8jHuUc9TPGLcdoZeBuZcGGn3Rlg==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -16798,14 +16710,14 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 27.0.1_ts-node@10.0.0 + '@jest/core': 27.0.1 '@jest/test-result': 27.0.1 '@jest/types': 27.0.1 chalk: 4.1.1 exit: 0.1.2 graceful-fs: 4.2.6 import-local: 3.0.2 - jest-config: 27.0.1_ts-node@10.0.0 + jest-config: 27.0.1 jest-util: 27.0.1 jest-validate: 27.0.1 prompts: 2.4.1 @@ -16818,7 +16730,7 @@ packages: - utf-8-validate dev: true - /jest-config/27.0.1_ts-node@10.0.0: + /jest-config/27.0.1: resolution: {integrity: sha512-V8O6+CZjGF0OMq4kxVR29ztV/LQqlAAcJLw7a94RndfRXkha4U84n50yZCXiPWtAHHTmb3g1y52US6rGPxA+3w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} peerDependencies: @@ -16828,7 +16740,7 @@ packages: optional: true dependencies: '@babel/core': 7.14.3 - '@jest/test-sequencer': 27.0.1_ts-node@10.0.0 + '@jest/test-sequencer': 27.0.1 '@jest/types': 27.0.1 babel-jest: 27.0.1_@babel+core@7.14.3 chalk: 4.1.1 @@ -16836,7 +16748,7 @@ packages: glob: 7.1.7 graceful-fs: 4.2.6 is-ci: 3.0.0 - jest-circus: 27.0.1_ts-node@10.0.0 + jest-circus: 27.0.1 jest-environment-jsdom: 27.0.1 jest-environment-node: 27.0.1 jest-get-type: 27.0.1 @@ -16847,7 +16759,6 @@ packages: jest-validate: 27.0.1 micromatch: 4.0.4 pretty-format: 27.0.1 - ts-node: 10.0.0_typescript@4.3.2 transitivePeerDependencies: - bufferutil - canvas @@ -17240,7 +17151,7 @@ packages: slash: 3.0.0 dev: true - /jest-runner/27.0.1_ts-node@10.0.0: + /jest-runner/27.0.1: resolution: {integrity: sha512-DUNizlD2D7J80G3VOrwfbtb7KYxiftMng82HNcKwTW0W3AwwNuBeq+1exoCnLO7Mxh7NP+k/1XQBlzLpjr/CnA==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: @@ -17254,7 +17165,7 @@ packages: emittery: 0.8.1 exit: 0.1.2 graceful-fs: 4.2.6 - jest-config: 27.0.1_ts-node@10.0.0 + jest-config: 27.0.1 jest-docblock: 27.0.1 jest-haste-map: 27.0.1 jest-leak-detector: 27.0.1 @@ -17457,7 +17368,7 @@ packages: supports-color: 8.1.1 dev: true - /jest/27.0.1_ts-node@10.0.0: + /jest/27.0.1: resolution: {integrity: sha512-lFEoUdXjbGAIxk/gZhcv98xOaH1hjqG5R/PQHs5GBfIK5iL3tnXCjHQf4HQLVZZ2rcXML3oeVg9+XrRZbooBdQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -17467,9 +17378,9 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 27.0.1_ts-node@10.0.0 + '@jest/core': 27.0.1 import-local: 3.0.2 - jest-cli: 27.0.1_ts-node@10.0.0 + jest-cli: 27.0.1 transitivePeerDependencies: - bufferutil - canvas @@ -18523,33 +18434,28 @@ packages: resolution: {integrity: sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==} dev: true - /markdown-to-jsx/6.11.4_react@18.0.0-alpha-aecb3b6d1: + /markdown-to-jsx/6.11.4: resolution: {integrity: sha512-3lRCD5Sh+tfA52iGgfs/XZiw33f7fFX9Bn55aNnVNUd2GzLDkOWyKYYD8Yju2B1Vn+feiEdgJs8T6Tg0xNokPw==} engines: {node: '>= 4'} peerDependencies: react: '>= 0.14.0' dependencies: prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 unquote: 1.1.1 dev: true - /markdown-to-jsx/7.1.2_react@18.0.0-alpha-aecb3b6d1: + /markdown-to-jsx/7.1.2: resolution: {integrity: sha512-O8DMCl32V34RrD+ZHxcAPc2+kYytuDIoQYjY36RVdsLK7uHjgNVvFec4yv0X6LgB4YEZgSvK5QtFi5YVqEpoMA==} engines: {node: '>= 4'} peerDependencies: react: '>= 0.14.0' - dependencies: - react: 18.0.0-alpha-aecb3b6d1 dev: true - /markdown-to-jsx/7.1.3_react@18.0.0-alpha-aecb3b6d1: + /markdown-to-jsx/7.1.3: resolution: {integrity: sha512-jtQ6VyT7rMT5tPV0g2EJakEnXLiPksnvlYtwQsVVZ611JsWGN8bQ1tVSDX4s6JllfEH6wmsYxNjTUAMrPmNA8w==} engines: {node: '>= 10'} peerDependencies: react: '>= 0.14.0' - dependencies: - react: 18.0.0-alpha-aecb3b6d1 dev: true /marky/1.2.1: @@ -18856,7 +18762,7 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - /mini-create-react-context/0.4.1_d2630f1b5c5d613d08a8af07021f9fe5: + /mini-create-react-context/0.4.1_prop-types@15.7.2: resolution: {integrity: sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==} peerDependencies: prop-types: ^15.0.0 @@ -18864,7 +18770,6 @@ packages: dependencies: '@babel/runtime': 7.14.0 prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 tiny-warning: 1.0.3 dev: false @@ -19172,7 +19077,7 @@ packages: /nan/2.14.2: resolution: {integrity: sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==} - /nano-css/5.3.1_f991c289939c8299bed5e4a6a5a79a62: + /nano-css/5.3.1: resolution: {integrity: sha512-ENPIyNzANQRyYVvb62ajDd7PAyIgS2LIUnT9ewih4yrXSZX4hKoUwssy8WjUH++kEOA5wUTMgNnV7ko5n34kUA==} peerDependencies: react: '*' @@ -19182,8 +19087,6 @@ packages: csstype: 3.0.8 fastest-stable-stringify: 2.0.2 inline-style-prefixer: 6.0.0 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 rtl-css-js: 1.14.1 sourcemap-codec: 1.4.8 stacktrace-js: 2.0.2 @@ -19404,6 +19307,17 @@ packages: engines: {node: '>=8'} dev: false + /notistack/1.0.9: + resolution: {integrity: sha512-Dal2HtTpWrdYCZ3t0HhJt47NJZwVSPee36WzORRbqUkFR0k9pxFszxBuPSWshBLwF6Av8s86XPP+ED5zRz0CGw==} + peerDependencies: + '@material-ui/core': ^4.0.0 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + clsx: 1.1.1 + hoist-non-react-statics: 3.3.2 + dev: false + /notistack/1.0.9_132ff92e0fd7328580f6380de259b809: resolution: {integrity: sha512-Dal2HtTpWrdYCZ3t0HhJt47NJZwVSPee36WzORRbqUkFR0k9pxFszxBuPSWshBLwF6Av8s86XPP+ED5zRz0CGw==} peerDependencies: @@ -20345,11 +20259,11 @@ packages: engines: {node: '>=4.0.0'} dev: false - /pnp-webpack-plugin/1.6.4_typescript@4.3.2: + /pnp-webpack-plugin/1.6.4: resolution: {integrity: sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==} engines: {node: '>=6'} dependencies: - ts-pnp: 1.2.0_typescript@4.3.2 + ts-pnp: 1.2.0 transitivePeerDependencies: - typescript dev: true @@ -20897,14 +20811,11 @@ packages: webpack: 4.46.0 dev: true - /react-colorful/5.1.2_f991c289939c8299bed5e4a6a5a79a62: + /react-colorful/5.1.2: resolution: {integrity: sha512-FRt9jz6xjiPqQ6bIAQ26kd0oJhHbGBwsA4BDz/F8FDCFuQJDiEl0wVUARNiqRyvQjwfKuhM42P/bMYI0l92hRw==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' - dependencies: - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 dev: true /react-dev-utils/11.0.4: @@ -20947,7 +20858,7 @@ packages: - utf-8-validate dev: true - /react-docgen-typescript-plugin/0.6.3_typescript@4.3.2: + /react-docgen-typescript-plugin/0.6.3: resolution: {integrity: sha512-av1S/fmWBNFGgNa4qtkidFjjOz23eEi6EdCtwSWo9WNhGzUMyMygbD/DosMWoeFlZpk9R3MXPkRE7PDH6j5GMQ==} peerDependencies: typescript: '>= 3.x' @@ -20955,27 +20866,22 @@ packages: debug: 4.3.1 endent: 2.0.1 micromatch: 4.0.4 - react-docgen-typescript: 1.22.0_typescript@4.3.2 + react-docgen-typescript: 1.22.0 tslib: 2.2.0 - typescript: 4.3.2 transitivePeerDependencies: - supports-color dev: true - /react-docgen-typescript/1.22.0_typescript@4.3.2: + /react-docgen-typescript/1.22.0: resolution: {integrity: sha512-MPLbF8vzRwAG3GcjdL+OHQlhgtWsLTXs+7uJiHfEeT3Ur7IsZaNYqRTLQ9sj2nB6M6jylcPCeCmH7qbszJmecg==} peerDependencies: typescript: '>= 3.x' - dependencies: - typescript: 4.3.2 dev: true - /react-docgen-typescript/2.0.0_typescript@4.3.2: + /react-docgen-typescript/2.0.0: resolution: {integrity: sha512-lPf+KJKAo6a9klKyK4y8WwgaX+6t5/HkVjHOpJDMbmaXfXcV7zP0QgWtnEOc3ccEUXKvlHMGUMIS9f6Zgo1BSw==} peerDependencies: typescript: '>= 4.3.x' - dependencies: - typescript: 4.3.2 dev: true /react-docgen/5.3.1: @@ -21012,7 +20918,7 @@ packages: classnames: 2.2.6 prop-types: 15.7.2 - /react-element-to-jsx-string/14.3.2_f991c289939c8299bed5e4a6a5a79a62: + /react-element-to-jsx-string/14.3.2: resolution: {integrity: sha512-WZbvG72cjLXAxV7VOuSzuHEaI3RHj10DZu8EcKQpkKcAj7+qAkG5XUeSdX5FXrA0vPrlx0QsnAzZEBJwzV0e+w==} peerDependencies: react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 @@ -21020,18 +20926,15 @@ packages: dependencies: '@base2/pretty-print-object': 1.0.0 is-plain-object: 3.0.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 dev: true - /react-error-boundary/3.1.1_react@18.0.0-alpha-aecb3b6d1: + /react-error-boundary/3.1.1: resolution: {integrity: sha512-W3xCd9zXnanqrTUeViceufD3mIW8Ut29BUD+S2f0eO2XCOU8b6UrJfY46RDGe5lxCJzfe4j0yvIfh0RbTZhKJw==} engines: {node: '>=10', npm: '>=6'} peerDependencies: react: '>=16.13.1' dependencies: '@babel/runtime': 7.13.17 - react: 18.0.0-alpha-aecb3b6d1 dev: true /react-error-overlay/6.0.9: @@ -21042,16 +20945,15 @@ packages: resolution: {integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==} dev: true - /react-feather/2.0.9_react@18.0.0-alpha-aecb3b6d1: + /react-feather/2.0.9: resolution: {integrity: sha512-yMfCGRkZdXwIs23Zw/zIWCJO3m3tlaUvtHiXlW+3FH7cIT6fiK1iJ7RJWugXq7Fso8ZaQyUm92/GOOHXvkiVUw==} peerDependencies: react: ^16.8.6 || ^17 dependencies: prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 dev: false - /react-helmet-async/1.0.9_f991c289939c8299bed5e4a6a5a79a62: + /react-helmet-async/1.0.9: resolution: {integrity: sha512-N+iUlo9WR3/u9qGMmP4jiYfaD6pe9IvDTapZLFJz2D3xlTlCM1Bzy4Ab3g72Nbajo/0ZyW+W9hdz8Hbe4l97pQ==} peerDependencies: react: ^16.6.0 || ^17.0.0 @@ -21060,13 +20962,11 @@ packages: '@babel/runtime': 7.13.17 invariant: 2.2.4 prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 react-fast-compare: 3.2.0 shallowequal: 1.1.0 dev: true - /react-highlight-words/0.17.0_react@18.0.0-alpha-aecb3b6d1: + /react-highlight-words/0.17.0: resolution: {integrity: sha512-uX1Qh5IGjnLuJT0Zok234QDwRC8h4hcVMnB99Cb7aquB1NlPPDiWKm0XpSZOTdSactvnClCk8LOmVlP+75dgHA==} peerDependencies: react: ^0.14.0 || ^15.0.0 || ^16.0.0-0 || ^17.0.0-0 @@ -21074,7 +20974,6 @@ packages: highlight-words-core: 1.2.2 memoize-one: 4.0.3 prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 dev: false /react-i18next/11.9.0_791d1630e18517ab8fc416422120449b: @@ -21089,7 +20988,7 @@ packages: react: 18.0.0-alpha-aecb3b6d1 dev: false - /react-inspector/5.1.1_react@18.0.0-alpha-aecb3b6d1: + /react-inspector/5.1.1: resolution: {integrity: sha512-GURDaYzoLbW8pMGXwYPDBIv6nqei4kK7LPRZ9q9HCZF54wqXz/dnylBp/kfE9XmekBhHvLDdcYeyIwSrvtOiWg==} peerDependencies: react: ^16.8.4 || ^17.0.0 @@ -21097,7 +20996,6 @@ packages: '@babel/runtime': 7.14.0 is-dom: 1.1.0 prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 dev: true /react-is/16.13.1: @@ -21110,18 +21008,15 @@ packages: resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} dev: true - /react-middle-ellipsis/1.2.1_f991c289939c8299bed5e4a6a5a79a62: + /react-middle-ellipsis/1.2.1: resolution: {integrity: sha512-BUQWVXIWwkY7qBqZx0qyeCnPIh188t0lLS0ftfBsU41HB6k769HyBwE23eP+qNXr4vEnmKTEmlicrypVdWYs0w==} engines: {node: '>=8', npm: '>=5'} peerDependencies: react: ^17.0.0 react-dom: ^17.0.0 - dependencies: - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 dev: false - /react-popper-tooltip/3.1.1_f991c289939c8299bed5e4a6a5a79a62: + /react-popper-tooltip/3.1.1: resolution: {integrity: sha512-EnERAnnKRptQBJyaee5GJScWNUKQPDD2ywvzZyUjst/wj5U64C8/CnSYLNEmP2hG0IJ3ZhtDxE8oDN+KOyavXQ==} peerDependencies: react: ^16.6.0 || ^17.0.0 @@ -21129,31 +21024,27 @@ packages: dependencies: '@babel/runtime': 7.14.0 '@popperjs/core': 2.9.2 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 - react-popper: 2.2.5_a60ee8f7a0810f3be1186b900eece7e1 + react-popper: 2.2.5_@popperjs+core@2.9.2 dev: true - /react-popper/2.2.5_a60ee8f7a0810f3be1186b900eece7e1: + /react-popper/2.2.5_@popperjs+core@2.9.2: resolution: {integrity: sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw==} peerDependencies: '@popperjs/core': ^2.0.0 react: ^16.8.0 || ^17 dependencies: '@popperjs/core': 2.9.2 - react: 18.0.0-alpha-aecb3b6d1 react-fast-compare: 3.2.0 warning: 4.0.3 dev: true - /react-refresh-typescript/2.0.1_5fd9bdb32789d99f678b3c3315477f9a: + /react-refresh-typescript/2.0.1_react-refresh@0.10.0: resolution: {integrity: sha512-hzn1GakEKnO5JmQ1/Av6kUFOq+2B62y0wvQndjeaRn/bDC+gEAYOYYO4T83iqr817fIbyttIicZiqpZUFum63A==} peerDependencies: react-refresh: 0.10.x typescript: ^4 dependencies: react-refresh: 0.10.0 - typescript: 4.3.2 dev: true /react-refresh/0.10.0: @@ -21171,7 +21062,7 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-router-dom/5.2.0_react@18.0.0-alpha-aecb3b6d1: + /react-router-dom/5.2.0: resolution: {integrity: sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==} peerDependencies: react: '>=15' @@ -21180,13 +21071,12 @@ packages: history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 - react-router: 5.2.0_react@18.0.0-alpha-aecb3b6d1 + react-router: 5.2.0 tiny-invariant: 1.1.0 tiny-warning: 1.0.3 dev: false - /react-router-dom/6.0.0-beta.0_66263521e705c985f663eeac15167a50: + /react-router-dom/6.0.0-beta.0_history@5.0.0: resolution: {integrity: sha512-36yNNGMT8RB9FRPL9nKJi6HKDkgOakU+o/2hHpSzR6e37gN70MpOU6QQlmif4oAWWBwjyGc3ZNOMFCsFuHUY5w==} peerDependencies: history: '>=5' @@ -21195,12 +21085,10 @@ packages: dependencies: history: 5.0.0 prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 - react-router: 6.0.0-beta.0_dd3df4049b9a65e1e2d003c7940c4871 + react-router: 6.0.0-beta.0_history@5.0.0 dev: false - /react-router/5.2.0_react@18.0.0-alpha-aecb3b6d1: + /react-router/5.2.0: resolution: {integrity: sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==} peerDependencies: react: '>=15' @@ -21209,16 +21097,15 @@ packages: history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 - mini-create-react-context: 0.4.1_d2630f1b5c5d613d08a8af07021f9fe5 + mini-create-react-context: 0.4.1_prop-types@15.7.2 path-to-regexp: 1.8.0 prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 react-is: 16.13.1 tiny-invariant: 1.1.0 tiny-warning: 1.0.3 dev: false - /react-router/6.0.0-beta.0_dd3df4049b9a65e1e2d003c7940c4871: + /react-router/6.0.0-beta.0_history@5.0.0: resolution: {integrity: sha512-VgMdfpVcmFQki/LZuLh8E/MNACekDetz4xqft+a6fBZvvJnVqKbLqebF7hyoawGrV1HcO5tVaUang2Og4W2j1Q==} peerDependencies: history: '>=5' @@ -21226,20 +21113,18 @@ packages: dependencies: history: 5.0.0 prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 dev: false - /react-shallow-renderer/16.14.1_react@18.0.0-alpha-aecb3b6d1: + /react-shallow-renderer/16.14.1: resolution: {integrity: sha512-rkIMcQi01/+kxiTE9D3fdS959U1g7gs+/rborw++42m1O9FAQiNI/UNRZExVUoAOprn4umcXf+pFRou8i4zuBg==} peerDependencies: react: ^16.0.0 || ^17.0.0 dependencies: object-assign: 4.1.1 - react: 18.0.0-alpha-aecb3b6d1 react-is: 17.0.2 dev: true - /react-sizeme/3.0.1_f991c289939c8299bed5e4a6a5a79a62: + /react-sizeme/3.0.1: resolution: {integrity: sha512-9Hf1NLgSbny1bha77l9HwvwwxQUJxFUqi44Ih+y3evA+PezBpGdCGlnvye6avss2cIgs9PgdYgMnfuzJWn/RUw==} peerDependencies: react: ^0.14.0 || ^15.0.0-0 || ^16.0.0 || ^17.0.0 @@ -21247,13 +21132,11 @@ packages: dependencies: element-resize-detector: 1.2.2 invariant: 2.2.4 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 shallowequal: 1.1.0 throttle-debounce: 3.0.1 dev: true - /react-syntax-highlighter/13.5.3_react@18.0.0-alpha-aecb3b6d1: + /react-syntax-highlighter/13.5.3: resolution: {integrity: sha512-crPaF+QGPeHNIblxxCdf2Lg936NAHKhNhuMzRL3F9ct6aYXL3NcZtCL0Rms9+qVo6Y1EQLdXGypBNSbPL/r+qg==} peerDependencies: react: '>= 0.14.0' @@ -21262,44 +21145,40 @@ packages: highlight.js: 10.7.2 lowlight: 1.20.0 prismjs: 1.23.0 - react: 18.0.0-alpha-aecb3b6d1 refractor: 3.3.1 dev: true - /react-test-renderer/16.14.0_react@18.0.0-alpha-aecb3b6d1: + /react-test-renderer/16.14.0: resolution: {integrity: sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg==} peerDependencies: react: ^16.14.0 dependencies: object-assign: 4.1.1 prop-types: 15.7.2 - react: 18.0.0-alpha-aecb3b6d1 react-is: 16.13.1 scheduler: 0.19.1 dev: true - /react-test-renderer/17.0.2_react@18.0.0-alpha-aecb3b6d1: + /react-test-renderer/17.0.2: resolution: {integrity: sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==} peerDependencies: react: 17.0.2 dependencies: object-assign: 4.1.1 - react: 18.0.0-alpha-aecb3b6d1 react-is: 17.0.2 - react-shallow-renderer: 16.14.1_react@18.0.0-alpha-aecb3b6d1 + react-shallow-renderer: 16.14.1 scheduler: 0.20.2 dev: true - /react-textarea-autosize/8.3.2_5ec7ab1ee537e9220fe02de547882794: + /react-textarea-autosize/8.3.2: resolution: {integrity: sha512-JrMWVgQSaExQByP3ggI1eA8zF4mF0+ddVuX7acUeK2V7bmrpjVOY72vmLz2IXFJSAXoY3D80nEzrn0GWajWK3Q==} engines: {node: '>=10'} peerDependencies: react: ^16.8.0 || ^17.0.0 dependencies: '@babel/runtime': 7.14.0 - react: 18.0.0-alpha-aecb3b6d1 - use-composed-ref: 1.1.0_react@18.0.0-alpha-aecb3b6d1 - use-latest: 1.2.0_5ec7ab1ee537e9220fe02de547882794 + use-composed-ref: 1.1.0 + use-latest: 1.2.0 transitivePeerDependencies: - '@types/react' dev: true @@ -21318,17 +21197,16 @@ packages: react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 dev: false - /react-universal-interface/0.6.2_f81ffae3c0d6edaa9e731142af3ae719: + /react-universal-interface/0.6.2_tslib@2.2.0: resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} peerDependencies: react: '*' tslib: '*' dependencies: - react: 18.0.0-alpha-aecb3b6d1 tslib: 2.2.0 dev: false - /react-use/17.2.4_f991c289939c8299bed5e4a6a5a79a62: + /react-use/17.2.4: resolution: {integrity: sha512-vQGpsAM0F5UIlshw5UI8ULGPS4yn5rm7/qvn3T1Gnkrz7YRMEEMh+ynKcmRloOyiIeLvKWiQjMiwRGtdbgs5qQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 @@ -21340,10 +21218,8 @@ packages: fast-deep-equal: 3.1.3 fast-shallow-equal: 1.0.0 js-cookie: 2.2.1 - nano-css: 5.3.1_f991c289939c8299bed5e4a6a5a79a62 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 - react-universal-interface: 0.6.2_f81ffae3c0d6edaa9e731142af3ae719 + nano-css: 5.3.1 + react-universal-interface: 0.6.2_tslib@2.2.0 resize-observer-polyfill: 1.5.1 screenfull: 5.1.0 set-harmonic-interval: 1.0.1 @@ -21352,18 +21228,15 @@ packages: tslib: 2.2.0 dev: false - /react-virtualized-auto-sizer/1.0.5_f991c289939c8299bed5e4a6a5a79a62: + /react-virtualized-auto-sizer/1.0.5: resolution: {integrity: sha512-kivjYVWX15TX2IUrm8F1jaCEX8EXrpy3DD+u41WGqJ1ZqbljWpiwscV+VxOM1l7sSIM1jwi2LADjhhAJkJ9dxA==} engines: {node: '>8.0.0'} peerDependencies: react: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 react-dom: ^15.3.0 || ^16.0.0-alpha || ^17.0.0 - dependencies: - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 dev: false - /react-window/1.8.6_f991c289939c8299bed5e4a6a5a79a62: + /react-window/1.8.6: resolution: {integrity: sha512-8VwEEYyjz6DCnGBsd+MgkD0KJ2/OXFULyDtorIiTz+QzwoP94tBoA7CnbtyXMm+cCeAUER5KJcPtWl9cpKbOBg==} engines: {node: '>8.0.0'} peerDependencies: @@ -21372,8 +21245,6 @@ packages: dependencies: '@babel/runtime': 7.13.10 memoize-one: 5.1.1 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 dev: false /react/18.0.0-alpha-aecb3b6d1: @@ -22895,12 +22766,12 @@ packages: resolution: {integrity: sha512-7t+/wpKLanLzSnQPX8WAcuLCCeuSHoWdQuh9SB3xD0kNOM38DNf+0Oa+wmvxmYueRzkmh6IcdKFtvTa+ecgPDw==} dev: true - /storybook-addon-matrix/1.6.0_react-dom@18.0.0-alpha-aecb3b6d1: + /storybook-addon-matrix/1.6.0: resolution: {integrity: sha512-2Fc2E3B2oqjWUMil4q5K13wjeH6uK+Ae7Y7647VNu8+qBEcXokAcL6RTc69+63fnXQeLA6ZhZYUjWmhE4NLxhg==} dependencies: '@emotion/core': 10.0.28_react@18.0.0-alpha-aecb3b6d1 '@emotion/styled': 10.0.27_868fdfab3e8c9138cf50b7ab83aa28b0 - '@storybook/addons': 5.3.18_react-dom@18.0.0-alpha-aecb3b6d1 + '@storybook/addons': 5.3.18 '@types/js-combinatorics': 0.5.31 '@types/styled-system': 5.1.9 js-combinatorics: 0.5.5 @@ -22911,18 +22782,16 @@ packages: - regenerator-runtime dev: true - /storybook-addon-outline/1.3.4_1f407347b6533184bf697218ead413cc: + /storybook-addon-outline/1.3.4: resolution: {integrity: sha512-UNFansfJq1j5Z+GdB8/eoSck9A27VPm5HPG4LBnPKwvAmvjccVgY9mcbcG/ezF83RlrtCOKkfQ1NgOqz2NlGGg==} peerDependencies: react: ^16.8.0 || ^17.0.0 react-dom: ^16.8.0 || ^17.0.0 dependencies: - '@storybook/addons': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/api': 6.3.0_f991c289939c8299bed5e4a6a5a79a62 - '@storybook/components': 6.3.0_1f407347b6533184bf697218ead413cc + '@storybook/addons': 6.3.0 + '@storybook/api': 6.3.0 + '@storybook/components': 6.3.0 '@storybook/core-events': 6.3.0 - react: 18.0.0-alpha-aecb3b6d1 - react-dom: 18.0.0-alpha-aecb3b6d1_react@18.0.0-alpha-aecb3b6d1 ts-dedent: 2.1.1 transitivePeerDependencies: - '@types/react' @@ -23818,15 +23687,13 @@ packages: resolution: {integrity: sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w==} dev: true - /ts-essentials/7.0.1_typescript@4.3.2: + /ts-essentials/7.0.1: resolution: {integrity: sha512-8lwh3QJtIc1UWhkQtr9XuksXu3O0YQdEE5g79guDfhCaU1FWTDIEDZ1ZSx4HTHUmlJZ8L812j3BZQ4a0aOUkSA==} peerDependencies: typescript: '>=3.7.0' - dependencies: - typescript: 4.3.2 dev: false - /ts-jest/27.0.1_jest@27.0.1+typescript@4.3.2: + /ts-jest/27.0.1_jest@27.0.1: resolution: {integrity: sha512-03qAt77QjhxyM5Bt2KrrT1WbdumiwLz989sD3IUznSp3GIFQrx76kQqSMLF7ynnxrF3/1ipzABnHxMlU8PD4Vw==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} hasBin: true @@ -23837,18 +23704,17 @@ packages: bs-logger: 0.2.6 buffer-from: 1.1.1 fast-json-stable-stringify: 2.1.0 - jest: 27.0.1_ts-node@10.0.0 + jest: 27.0.1 jest-util: 27.0.1 json5: 2.2.0 lodash: 4.17.21 make-error: 1.3.6 mkdirp: 1.0.4 semver: 7.3.5 - typescript: 4.3.2 yargs-parser: 20.2.7 dev: true - /ts-loader/9.2.2_typescript@4.3.2+webpack@5.37.1: + /ts-loader/9.2.2_webpack@5.37.1: resolution: {integrity: sha512-hNIhGTQHtNKjOzR2ZtQ2OSVbXPykOae+zostf1IlHCf61Mt41GMJurKNqrYUbzHgpmj6UWRu8eBfb7q0XliV0g==} engines: {node: '>=12.0.0'} peerDependencies: @@ -23859,10 +23725,36 @@ packages: enhanced-resolve: 5.8.0 micromatch: 4.0.4 semver: 7.3.5 - typescript: 4.3.2 webpack: 5.37.1_webpack-cli@4.7.0 dev: true + /ts-node/10.0.0: + resolution: {integrity: sha512-ROWeOIUvfFbPZkoDis0L/55Fk+6gFQNZwwKPLinacRl6tsxstTF1DbAcLKkovwnpKMVvOMHP1TIbnwXwtLg1gg==} + engines: {node: '>=12.0.0'} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.45' + '@swc/wasm': '>=1.2.45' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@tsconfig/node10': 1.0.7 + '@tsconfig/node12': 1.0.7 + '@tsconfig/node14': 1.0.0 + '@tsconfig/node16': 1.0.1 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + source-map-support: 0.5.19 + yn: 3.1.1 + dev: true + /ts-node/10.0.0_typescript@4.3.2: resolution: {integrity: sha512-ROWeOIUvfFbPZkoDis0L/55Fk+6gFQNZwwKPLinacRl6tsxstTF1DbAcLKkovwnpKMVvOMHP1TIbnwXwtLg1gg==} engines: {node: '>=12.0.0'} @@ -23906,7 +23798,7 @@ packages: yn: 2.0.0 dev: false - /ts-pnp/1.2.0_typescript@4.3.2: + /ts-pnp/1.2.0: resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==} engines: {node: '>=6'} peerDependencies: @@ -23914,8 +23806,6 @@ packages: peerDependenciesMeta: typescript: optional: true - dependencies: - typescript: 4.3.2 dev: true /ts-results/3.3.0: @@ -23993,14 +23883,13 @@ packages: typescript: 2.9.2 dev: false - /tsutils/3.21.0_typescript@4.3.2: + /tsutils/3.21.0: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.3.2 dev: true /tty-browserify/0.0.0: @@ -24039,7 +23928,7 @@ packages: prelude-ls: 1.2.1 dev: true - /type-coverage-core/2.17.5_typescript@4.3.2: + /type-coverage-core/2.17.5: resolution: {integrity: sha512-FfkH2kIgQkkgC47V2WHJZWBbjYjMw2ZpQRdRGTcMBAnkijmRCp9I1LpOuI+Gv4MDtniRLnkAo8htGGt2iExFgA==} peerDependencies: typescript: 2 || 3 || 4 @@ -24048,16 +23937,15 @@ packages: minimatch: 3.0.4 normalize-path: 3.0.0 tslib: 2.2.0 - tsutils: 3.21.0_typescript@4.3.2 - typescript: 4.3.2 + tsutils: 3.21.0 dev: true - /type-coverage/2.17.5_typescript@4.3.2: + /type-coverage/2.17.5: resolution: {integrity: sha512-Lqmvt4RVf1A+KE7x5PSRU7lM53HfyqeYmAuueHgJnol4omlZ4EnydodMkEc015cQohdqvLLz1vQ5Qhspg1hfRw==} hasBin: true dependencies: minimist: 1.2.5 - type-coverage-core: 2.17.5_typescript@4.3.2 + type-coverage-core: 2.17.5 transitivePeerDependencies: - typescript dev: true @@ -24107,7 +23995,7 @@ packages: /type/2.5.0: resolution: {integrity: sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==} - /typechain/5.0.0_typescript@4.3.2: + /typechain/5.0.0: resolution: {integrity: sha512-Ko2/8co0FUmPUkaXPcb8PC3ncWa5P72nvkiNMgcomd4OAInltJlITF0kcW2cZmI2sFkvmaHV5TZmCnOHgo+i5Q==} hasBin: true dependencies: @@ -24119,7 +24007,7 @@ packages: js-sha3: 0.8.0 lodash: 4.17.21 prettier: 2.3.0 - ts-essentials: 7.0.1_typescript@4.3.2 + ts-essentials: 7.0.1 transitivePeerDependencies: - supports-color - typescript @@ -24529,16 +24417,15 @@ packages: punycode: 1.3.2 querystring: 0.2.0 - /use-composed-ref/1.1.0_react@18.0.0-alpha-aecb3b6d1: + /use-composed-ref/1.1.0: resolution: {integrity: sha512-my1lNHGWsSDAhhVAT4MKs6IjBUtG6ZG11uUqexPH9PptiIZDQOzaF4f5tEbJ2+7qvNbtXNBbU3SfmN+fXlWDhg==} peerDependencies: react: ^16.8.0 || ^17.0.0 dependencies: - react: 18.0.0-alpha-aecb3b6d1 ts-essentials: 2.0.12 dev: true - /use-isomorphic-layout-effect/1.1.1_5ec7ab1ee537e9220fe02de547882794: + /use-isomorphic-layout-effect/1.1.1: resolution: {integrity: sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==} peerDependencies: '@types/react': '*' @@ -24546,12 +24433,9 @@ packages: peerDependenciesMeta: '@types/react': optional: true - dependencies: - '@types/react': 17.0.11 - react: 18.0.0-alpha-aecb3b6d1 dev: true - /use-latest/1.2.0_5ec7ab1ee537e9220fe02de547882794: + /use-latest/1.2.0: resolution: {integrity: sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw==} peerDependencies: '@types/react': '*' @@ -24560,18 +24444,15 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 17.0.11 - react: 18.0.0-alpha-aecb3b6d1 - use-isomorphic-layout-effect: 1.1.1_5ec7ab1ee537e9220fe02de547882794 + use-isomorphic-layout-effect: 1.1.1 dev: true - /use-subscription/1.5.1_react@18.0.0-alpha-aecb3b6d1: + /use-subscription/1.5.1: resolution: {integrity: sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==} peerDependencies: react: ^16.8.0 || ^17.0.0 dependencies: object-assign: 4.1.1 - react: 18.0.0-alpha-aecb3b6d1 dev: false /use/3.1.1: @@ -26080,12 +25961,8 @@ packages: /y18n/3.2.2: resolution: {integrity: sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==} - /y18n/4.0.1: - resolution: {integrity: sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==} - /y18n/4.0.3: resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - dev: true /y18n/5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} @@ -26182,7 +26059,7 @@ packages: set-blocking: 2.0.0 string-width: 3.1.0 which-module: 2.0.0 - y18n: 4.0.1 + y18n: 4.0.3 yargs-parser: 13.1.2 /yargs/16.2.0: