diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 875cba2..7643778 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -23,5 +23,14 @@ module.exports = { 'warn', { allowConstantExport: true }, ], + // https://github.com/orgs/react-hook-form/discussions/8622#discussioncomment-4060570 + '@typescript-eslint/no-misused-promises': [ + 2, + { + checksVoidReturn: { + attributes: false, + }, + }, + ], }, } diff --git a/package.json b/package.json index 6280223..5e904d1 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "@mantine/core": "^6.0.19", "@mantine/form": "^6.0.19", "@mantine/hooks": "^6.0.19", + "@mantine/notifications": "^6.0.19", "@tabler/icons-react": "^2.30.0", "@types/react-beautiful-dnd": "^13.1.4", "react": "^18.2.0", diff --git a/src/App.tsx b/src/App.tsx index 67a89b1..7226daf 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -7,6 +7,7 @@ import { } from '@mantine/core' import { useLocalStorage, useHotkeys } from '@mantine/hooks' import AppShellExample from './components/AppShell' +import { Notifications } from '@mantine/notifications' import { AlephiumWalletProvider } from '@alephium/web3-react' import { loadNetworkIdFromLocalStorage } from './utils/utils' @@ -40,6 +41,7 @@ function App() { withNormalizeCSS theme={{ colorScheme }} > + diff --git a/src/components/AppShell.tsx b/src/components/AppShell.tsx index 74ad59d..15289c9 100644 --- a/src/components/AppShell.tsx +++ b/src/components/AppShell.tsx @@ -10,6 +10,7 @@ import ImportMultisig from './Multisig/ImportMultisig' import ShowMultiSig from './Multisig/ShowMultisig' import SignMultisigTx from './Multisig/SignMultisigTx' import BuildMultisigTx from './Multisig/BuildMultisigTx' +import NewToken from './Token/NewToken' function AppShellExample() { const theme = useMantineTheme() @@ -41,7 +42,7 @@ function AppShellExample() { } /> } /> } /> - } /> + } /> } /> } /> } /> diff --git a/src/components/Multisig/shared.ts b/src/components/Multisig/shared.ts index 3ab257d..7ea8a86 100644 --- a/src/components/Multisig/shared.ts +++ b/src/components/Multisig/shared.ts @@ -34,7 +34,12 @@ export const defaultNewMultisigTx = { multisig: '', signers: [] as string[], destinations: [ - { address: '', symbol: '', tokenId: '', tokenAmount: undefined as number | undefined }, + { + address: '', + symbol: '', + tokenId: '', + tokenAmount: undefined as number | undefined, + }, ], sweep: undefined as boolean | undefined, unsignedTx: undefined as string | undefined, diff --git a/src/components/NoWalletAlert.tsx b/src/components/NoWalletAlert.tsx new file mode 100644 index 0000000..09d6177 --- /dev/null +++ b/src/components/NoWalletAlert.tsx @@ -0,0 +1,13 @@ +import { Alert } from '@mantine/core' +import { IconInfoCircle } from '@tabler/icons-react' + +export const NoWalletAlert = () => ( + } + variant="light" + color="blue" + title="No wallet connected" + > + You must connect a wallet with funds to perform this operation. + +) diff --git a/src/components/Token/NewToken.tsx b/src/components/Token/NewToken.tsx index 7461fc7..5e34e9b 100644 --- a/src/components/Token/NewToken.tsx +++ b/src/components/Token/NewToken.tsx @@ -1,6 +1,7 @@ -import { useForm } from '@mantine/form' +import { useForm, isInRange, hasLength } from '@mantine/form' import { TextInput, + Text, Button, Group, Box, @@ -8,91 +9,138 @@ import { rem, Stack, NumberInput, + Space, + Title, + Paper, } from '@mantine/core' -import { useWallet, useBalance } from '@alephium/web3-react' +import { useWallet } from '@alephium/web3-react' +import { deployNewToken } from './shared' +import { useExplorerFE, useNetworkId } from '../../utils/utils' +import { IconExternalLink, IconCheck, IconX } from '@tabler/icons-react' +import { useState } from 'react' +import { notifications } from '@mantine/notifications' +import { NoWalletAlert } from '../NoWalletAlert' + +interface NewTokenSchema { + name: string + symbol: string + decimals: number + supply: number +} function NewToken() { - const wallet = useWallet() - const form = useForm({ + const [isSubmitting, setIsSubmitting] = useState(false) + const { signer } = useWallet() + const [networkId] = useNetworkId() + const explorerUrl = useExplorerFE() + const form = useForm({ initialValues: { name: '', symbol: '', decimals: 18, supply: 1000_000, }, - validate: { - name: (value) => - value.length < 3 ? 'Name must have at least 3 letters' : null, + name: hasLength({ min: 3 }, 'Name must have 3 or more characters'), symbol: (value) => /[A-Z]{3,6}/.test(value) ? null : 'Symbol must be 3-6 capital letters', - decimals: (value) => - value < 0 || value > 18 ? 'Decimals must be between 0 and 18' : null, - supply: (value) => - value < 0 || !Number.isInteger(value) - ? 'Supply must be positive integer' - : null, + decimals: isInRange( + { min: 0, max: 18 }, + 'Decimals must be between 0 and 18' + ), + supply: isInRange({ min: 1 }, 'Supply must be a positive integer'), }, }) - const { balance, updateBalanceForTx } = useBalance() - console.log(`==== `, balance, updateBalanceForTx) + const onSuccess = (txId: string) => { + const txUrl = `${explorerUrl}/transactions/${txId}` + + notifications.show({ + title: 'Tokens successfully issued!', + message: ( + + View your minting transaction in the explorer{' '} + + here . + + + ), + icon: , + color: 'teal', + }) + } + + const onError = (e: Error) => { + console.error(e) + notifications.show({ + title: 'Failed to issue tokens', + message: `Error: ${e.message}`, + icon: , + color: 'red', + }) + } - if (wallet === undefined || wallet.signer === undefined) { - return <> + const onSubmit = (values: NewTokenSchema) => { + setIsSubmitting(true) + deployNewToken(networkId, signer!, values) + .then(onSuccess) + .catch(onError) + .finally(() => setIsSubmitting(false)) } return (
- - - - - - - - - - - - - + + + + {!signer && } + Issue new tokens + + Newly created tokens will be owned by your currently connected + wallet account. + + +
+ + + + + + + + +
+
+
) } diff --git a/src/components/Token/shared.ts b/src/components/Token/shared.ts index ed50efa..69f413a 100644 --- a/src/components/Token/shared.ts +++ b/src/components/Token/shared.ts @@ -12,9 +12,8 @@ export async function deployNewToken( decimals, supply, }: { name: string; symbol: string; decimals: number; supply: number } -) { +): Promise { const deployments = loadDeployments(network) - console.log(await signer.getSelectedAccount()) const result = await DeployNewToken.execute(signer, { initialFields: { templateId: deployments.contracts.SimpleToken.contractInstance.contractId, @@ -26,4 +25,5 @@ export async function deployNewToken( attoAlphAmount: ONE_ALPH, }) console.log(result) + return result.txId } diff --git a/src/components/Wallet/WalletInfo.tsx b/src/components/Wallet/WalletInfo.tsx index d153242..9d9aec8 100644 --- a/src/components/Wallet/WalletInfo.tsx +++ b/src/components/Wallet/WalletInfo.tsx @@ -8,7 +8,14 @@ function WalletInfo() { const { account, connectionStatus } = useWallet() const { network, addressGroup, keyType } = useWalletConfig() - console.log(`WalletInfo:`, connectionStatus, network, addressGroup, keyType, account) + console.log( + `WalletInfo:`, + connectionStatus, + network, + addressGroup, + keyType, + account + ) if (connectionStatus === 'connecting' && !account) return null if (connectionStatus === 'disconnected') return diff --git a/src/utils/utils.ts b/src/utils/utils.ts index 6af880f..0564d0b 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -93,9 +93,13 @@ export function useExplorerFE(): string { : devnet_explorer_url } -export function useTokenList(): TokenInfo[] { +export function useTokenList(): TokenInfo[] { const [network] = useNetworkId() - return network === 'mainnet' ? mainnetTokensMetadata.tokens : network === 'testnet' ? testnetTokensMetadata.tokens : [] + return network === 'mainnet' + ? mainnetTokensMetadata.tokens + : network === 'testnet' + ? testnetTokensMetadata.tokens + : [] } export function getTokenMetadata(network: 'mainnet' | 'testnet'): TokenList { diff --git a/yarn.lock b/yarn.lock index d897917..3b0beff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -376,7 +376,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.10.2", "@babel/runtime@^7.13.10", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7": + version "7.23.8" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.8.tgz#8ee6fe1ac47add7122902f257b8ddf55c898f650" + integrity sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.3", "@babel/runtime@^7.9.2": version "7.22.6" resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz" integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== @@ -688,41 +695,41 @@ resolved "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz" integrity sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA== -"@floating-ui/core@^1.4.1": - version "1.4.1" - resolved "https://registry.npmjs.org/@floating-ui/core/-/core-1.4.1.tgz" - integrity sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ== +"@floating-ui/core@^1.5.3": + version "1.5.3" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.5.3.tgz#b6aa0827708d70971c8679a16cf680a515b8a52a" + integrity sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q== dependencies: - "@floating-ui/utils" "^0.1.1" + "@floating-ui/utils" "^0.2.0" "@floating-ui/dom@^1.2.1": - version "1.5.1" - resolved "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.1.tgz" - integrity sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw== + version "1.5.4" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.4.tgz#28df1e1cb373884224a463235c218dcbd81a16bb" + integrity sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ== dependencies: - "@floating-ui/core" "^1.4.1" - "@floating-ui/utils" "^0.1.1" + "@floating-ui/core" "^1.5.3" + "@floating-ui/utils" "^0.2.0" "@floating-ui/react-dom@^1.3.0": version "1.3.0" - resolved "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-1.3.0.tgz" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-1.3.0.tgz#4d35d416eb19811c2b0e9271100a6aa18c1579b3" integrity sha512-htwHm67Ji5E/pROEAr7f8IKFShuiCKHwUC/UY4vC3I5jiSvGFAYnSYiZO5MlGmads+QqvUkR9ANHEguGrDv72g== dependencies: "@floating-ui/dom" "^1.2.1" "@floating-ui/react@^0.19.1": version "0.19.2" - resolved "https://registry.npmjs.org/@floating-ui/react/-/react-0.19.2.tgz" + resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.19.2.tgz#c6e4d2097ed0dca665a7c042ddf9cdecc95e9412" integrity sha512-JyNk4A0Ezirq8FlXECvRtQOX/iBe5Ize0W/pLkrZjfHW9GUV7Xnq6zm6fyZuQzaHHqEnVizmvlA96e1/CkZv+w== dependencies: "@floating-ui/react-dom" "^1.3.0" aria-hidden "^1.1.3" tabbable "^6.0.1" -"@floating-ui/utils@^0.1.1": - version "0.1.1" - resolved "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.1.tgz" - integrity sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw== +"@floating-ui/utils@^0.2.0": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.1.tgz#16308cea045f0fc777b6ff20a9f25474dd8293d2" + integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== "@humanwhocodes/config-array@^0.11.10": version "0.11.10" @@ -1034,42 +1041,50 @@ "@jridgewell/sourcemap-codec" "1.4.14" "@mantine/core@^6.0.19": - version "6.0.19" - resolved "https://registry.npmjs.org/@mantine/core/-/core-6.0.19.tgz" - integrity sha512-SvMZCOgCc315SIg6hkuLM0ZnBaAac4VFDHZ0BM5LIE4MPJUpe4QOLsg/5RGxOa5s7JRCtu/dawH3/9frvfDrhw== + version "6.0.21" + resolved "https://registry.yarnpkg.com/@mantine/core/-/core-6.0.21.tgz#6e3a1b8d0f6869518a644d5f5e3d55a5db7e1e51" + integrity sha512-Kx4RrRfv0I+cOCIcsq/UA2aWcYLyXgW3aluAuW870OdXnbII6qg7RW28D+r9D76SHPxWFKwIKwmcucAG08Divg== dependencies: "@floating-ui/react" "^0.19.1" - "@mantine/styles" "6.0.19" - "@mantine/utils" "6.0.19" + "@mantine/styles" "6.0.21" + "@mantine/utils" "6.0.21" "@radix-ui/react-scroll-area" "1.0.2" react-remove-scroll "^2.5.5" react-textarea-autosize "8.3.4" "@mantine/form@^6.0.19": - version "6.0.19" - resolved "https://registry.npmjs.org/@mantine/form/-/form-6.0.19.tgz" - integrity sha512-5SFLZEzaBH7yKIDSDt1r9UiN4y7RkFvu+7J7CFPIQM+nTdXeGnugVFM8rASuZI7/FSYty/XoPY+Yymq3xDX+MQ== + version "6.0.21" + resolved "https://registry.yarnpkg.com/@mantine/form/-/form-6.0.21.tgz#0d717631aa90b9cce834a479f4c8d7e9c0e1969b" + integrity sha512-d4tlxyZic7MSDnaPx/WliCX1sRFDkUd2nxx4MxxO2T4OSek0YDqTlSBCxeoveu60P+vrQQN5rbbsVsaOJBe4SQ== dependencies: fast-deep-equal "^3.1.3" klona "^2.0.5" "@mantine/hooks@^6.0.19": - version "6.0.19" - resolved "https://registry.npmjs.org/@mantine/hooks/-/hooks-6.0.19.tgz" - integrity sha512-YkmuB6kmoenU1PVuE8tLBA+6RJIY9hIsGyIQG1yuPAy6SLWNFT8g2T9YvI/psqsUbVIYGaNEXg8zq42xbxnD8Q== + version "6.0.21" + resolved "https://registry.yarnpkg.com/@mantine/hooks/-/hooks-6.0.21.tgz#bc009d8380ad18455b90f3ddaf484de16a13da95" + integrity sha512-sYwt5wai25W6VnqHbS5eamey30/HD5dNXaZuaVEAJ2i2bBv8C0cCiczygMDpAFiSYdXoSMRr/SZ2CrrPTzeNew== -"@mantine/styles@6.0.19": - version "6.0.19" - resolved "https://registry.npmjs.org/@mantine/styles/-/styles-6.0.19.tgz" - integrity sha512-0tg3Dvv/kxCc1mbQVFhZaIhlSbSbV1F/3xG0NRlP2DF23mw9088o5KaIXGKM6XkXU6OEt/f99nDCUHBk2ixtUg== +"@mantine/notifications@^6.0.19": + version "6.0.21" + resolved "https://registry.yarnpkg.com/@mantine/notifications/-/notifications-6.0.21.tgz#bec53664abce13a2cc61a1be1840d82a746f62da" + integrity sha512-qsrqxuJHK8b67sf9Pfk+xyhvpf9jMsivW8vchfnJfjv7yz1lLvezjytMFp4fMDoYhjHnDPOEc/YFockK4muhOw== + dependencies: + "@mantine/utils" "6.0.21" + react-transition-group "4.4.2" + +"@mantine/styles@6.0.21": + version "6.0.21" + resolved "https://registry.yarnpkg.com/@mantine/styles/-/styles-6.0.21.tgz#8ea097fc76cbb3ed55f5cfd719d2f910aff5031b" + integrity sha512-PVtL7XHUiD/B5/kZ/QvZOZZQQOj12QcRs3Q6nPoqaoPcOX5+S7bMZLMH0iLtcGq5OODYk0uxlvuJkOZGoPj8Mg== dependencies: clsx "1.1.1" csstype "3.0.9" -"@mantine/utils@6.0.19": - version "6.0.19" - resolved "https://registry.npmjs.org/@mantine/utils/-/utils-6.0.19.tgz" - integrity sha512-duvtnaW1gDR2gnvUqnWhl6DMW7sN0HEWqS8Z/BbwaMi75U+Xp17Q72R9JtiIrxQbzsq+KvH9L9B/pxMVwbLirg== +"@mantine/utils@6.0.21": + version "6.0.21" + resolved "https://registry.yarnpkg.com/@mantine/utils/-/utils-6.0.21.tgz#6185506e91cba3e308aaa8ea9ababc8e767995d6" + integrity sha512-33RVDRop5jiWFao3HKd3Yp7A9mEq4HAJxJPTuYm1NkdqX6aTKOQK7wT8v8itVodBp+sb4cJK6ZVdD1UurK/txQ== "@motionone/animation@^10.12.0": version "10.15.1" @@ -1217,42 +1232,42 @@ "@radix-ui/number@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.0.0.tgz#4c536161d0de750b3f5d55860fc3de46264f897b" integrity sha512-Ofwh/1HX69ZfJRiRBMTy7rgjAzHmwe4kW9C9Y99HTRUcYLUuVT0KESFj15rPjRgKJs20GPq8Bm5aEDJ8DuA3vA== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/primitive@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.0.0.tgz#e1d8ef30b10ea10e69c76e896f608d9276352253" integrity sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-compose-refs@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz#37595b1f16ec7f228d698590e78eeed18ff218ae" integrity sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-context@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.0.0.tgz#f38e30c5859a9fb5e9aa9a9da452ee3ed9e0aee0" integrity sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-direction@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.0.0.tgz#a2e0b552352459ecf96342c79949dd833c1e6e45" integrity sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-presence@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.0.0.tgz#814fe46df11f9a468808a6010e3f3ca7e0b2e84a" integrity sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w== dependencies: "@babel/runtime" "^7.13.10" @@ -1261,7 +1276,7 @@ "@radix-ui/react-primitive@1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz#c1ebcce283dd2f02e4fbefdaa49d1cb13dbc990a" integrity sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA== dependencies: "@babel/runtime" "^7.13.10" @@ -1269,7 +1284,7 @@ "@radix-ui/react-scroll-area@1.0.2": version "1.0.2" - resolved "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-scroll-area/-/react-scroll-area-1.0.2.tgz#26c906d351b56835c0301126b24574c9e9c7b93b" integrity sha512-k8VseTxI26kcKJaX0HPwkvlNBPTs56JRdYzcZ/vzrNUkDlvXBy8sMc7WvCpYzZkHgb+hd72VW9MqkqecGtuNgg== dependencies: "@babel/runtime" "^7.13.10" @@ -1285,7 +1300,7 @@ "@radix-ui/react-slot@1.0.1": version "1.0.1" - resolved "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.1.tgz#e7868c669c974d649070e9ecbec0b367ee0b4d81" integrity sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw== dependencies: "@babel/runtime" "^7.13.10" @@ -1293,14 +1308,14 @@ "@radix-ui/react-use-callback-ref@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz#9e7b8b6b4946fe3cbe8f748c82a2cce54e7b6a90" integrity sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg== dependencies: "@babel/runtime" "^7.13.10" "@radix-ui/react-use-layout-effect@1.0.0": version "1.0.0" - resolved "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz#2fc19e97223a81de64cd3ba1dc42ceffd82374dc" integrity sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ== dependencies: "@babel/runtime" "^7.13.10" @@ -2112,7 +2127,7 @@ argparse@^2.0.1: aria-hidden@^1.1.3: version "1.2.3" - resolved "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz" + resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.3.tgz#14aeb7fb692bbb72d69bebfa47279c1fd725e954" integrity sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ== dependencies: tslib "^2.0.0" @@ -2725,7 +2740,7 @@ cliui@^8.0.1: clsx@1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== co@^4.6.0: @@ -2899,7 +2914,7 @@ css-to-react-native@^3.0.0: csstype@3.0.9: version "3.0.9" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.9.tgz#6410af31b26bd0520933d02cbc64fce9ce3fbf0b" integrity sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw== csstype@^3.0.2: @@ -3025,7 +3040,7 @@ detect-newline@^3.0.0: detect-node-es@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== diff-sequences@^28.1.1: @@ -3087,6 +3102,14 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dom-helpers@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^3.0.2" + duplexify@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz" @@ -3756,7 +3779,7 @@ get-iterator@^1.0.2: get-nonce@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== get-package-type@^0.1.0: @@ -4043,7 +4066,7 @@ internal-slot@^1.0.3, internal-slot@^1.0.5: invariant@^2.2.4: version "2.2.4" - resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== dependencies: loose-envify "^1.0.0" @@ -4945,7 +4968,7 @@ kleur@^3.0.3: klona@^2.0.5: version "2.0.6" - resolved "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== leven@^3.1.0: @@ -5667,7 +5690,7 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -5837,16 +5860,16 @@ react-refresh@^0.14.0: react-remove-scroll-bar@^2.3.4: version "2.3.4" - resolved "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz" + resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9" integrity sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A== dependencies: react-style-singleton "^2.2.1" tslib "^2.0.0" react-remove-scroll@^2.5.5: - version "2.5.6" - resolved "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.6.tgz" - integrity sha512-bO856ad1uDYLefgArk559IzUNeQ6SWH4QnrevIUjH+GczV56giDfl3h0Idptf2oIKxQmd1p9BN25jleKodTALg== + version "2.5.7" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz#15a1fd038e8497f65a695bf26a4a57970cac1ccb" + integrity sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA== dependencies: react-remove-scroll-bar "^2.3.4" react-style-singleton "^2.2.1" @@ -5871,7 +5894,7 @@ react-router@6.14.2: react-style-singleton@^2.2.1: version "2.2.1" - resolved "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz" + resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4" integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g== dependencies: get-nonce "^1.0.0" @@ -5880,13 +5903,23 @@ react-style-singleton@^2.2.1: react-textarea-autosize@8.3.4: version "8.3.4" - resolved "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz" + resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz#270a343de7ad350534141b02c9cb78903e553524" integrity sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ== dependencies: "@babel/runtime" "^7.10.2" use-composed-ref "^1.3.0" use-latest "^1.2.1" +react-transition-group@4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" + integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg== + dependencies: + "@babel/runtime" "^7.5.5" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + react-transition-state@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/react-transition-state/-/react-transition-state-1.1.5.tgz" @@ -5955,9 +5988,14 @@ reflect.getprototypeof@^1.0.3: regenerator-runtime@^0.13.11: version "0.13.11" - resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + regexp.prototype.flags@^1.4.3, regexp.prototype.flags@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" @@ -6437,7 +6475,7 @@ synckit@^0.8.5: tabbable@^6.0.1: version "6.2.0" - resolved "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz" + resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97" integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== terminal-link@^2.0.0: @@ -6542,16 +6580,16 @@ tslib@1.14.1: resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.1: +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.5.0, tslib@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + +tslib@^2.3.1: version "2.6.1" resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz" integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig== -tslib@^2.5.0, tslib@^2.6.0: - version "2.6.2" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== - type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" @@ -6666,25 +6704,25 @@ uri-js@^4.2.2: punycode "^2.1.0" use-callback-ref@^1.3.0: - version "1.3.0" - resolved "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz" - integrity sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w== + version "1.3.1" + resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.1.tgz#9be64c3902cbd72b07fe55e56408ae3a26036fd0" + integrity sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ== dependencies: tslib "^2.0.0" use-composed-ref@^1.3.0: version "1.3.0" - resolved "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz" + resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" integrity sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ== use-isomorphic-layout-effect@^1.1.1: version "1.1.2" - resolved "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== use-latest@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz" + resolved "https://registry.yarnpkg.com/use-latest/-/use-latest-1.2.1.tgz#d13dfb4b08c28e3e33991546a2cee53e14038cf2" integrity sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw== dependencies: use-isomorphic-layout-effect "^1.1.1" @@ -6696,7 +6734,7 @@ use-memo-one@^1.1.1: use-sidecar@^1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2" integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw== dependencies: detect-node-es "^1.1.0"