From 90db5e8945966751e5876f514d0bd8575cf503ac Mon Sep 17 00:00:00 2001 From: thinkasany <480968828@qq.com> Date: Thu, 1 Feb 2024 11:58:57 +0800 Subject: [PATCH] feat: ConnectModal support group configuration (#547) * feat: ConnectModal support group=false * feat: add changelog * chore: Merge group and grouporder * revert: groupOrder * chore: update * feat: add deprecated warning * feat: add warning util * fix: rm --- .changeset/young-brooms-pump.md | 5 + docs/course/contract-dapp.md | 1 - package.json | 1 + packages/common/src/utils/warning.ts | 107 +++++++++++++++ .../connect-modal/__tests__/basic.test.tsx | 31 ++++- .../src/connect-modal/__tests__/mode.test.tsx | 16 ++- .../connect-modal/__tests__/panel.test.tsx | 4 +- .../connect-modal/__tests__/simple.test.tsx | 4 +- .../connect-modal/__tests__/theme.test.tsx | 4 +- .../connect-modal/components/ModalPanel.tsx | 14 +- .../connect-modal/components/WalletList.tsx | 127 ++++++++++-------- .../web3/src/connect-modal/demos/basic.tsx | 4 +- .../src/connect-modal/demos/customGuide.tsx | 4 +- .../web3/src/connect-modal/demos/panel.tsx | 7 +- .../web3/src/connect-modal/demos/simple.tsx | 4 +- .../connect-modal/demos/ungroupedBasic.tsx | 69 ++++++++++ packages/web3/src/connect-modal/index.md | 6 +- packages/web3/src/connect-modal/index.tsx | 5 + .../web3/src/connect-modal/index.zh-CN.md | 6 +- packages/web3/src/connect-modal/interface.ts | 12 ++ pnpm-lock.yaml | 121 +++++++++-------- 21 files changed, 420 insertions(+), 132 deletions(-) create mode 100644 .changeset/young-brooms-pump.md create mode 100644 packages/common/src/utils/warning.ts create mode 100644 packages/web3/src/connect-modal/demos/ungroupedBasic.tsx diff --git a/.changeset/young-brooms-pump.md b/.changeset/young-brooms-pump.md new file mode 100644 index 000000000..1004d9ae8 --- /dev/null +++ b/.changeset/young-brooms-pump.md @@ -0,0 +1,5 @@ +--- +'@ant-design/web3': minor +--- + +feat: ConnectModal support group configuration diff --git a/docs/course/contract-dapp.md b/docs/course/contract-dapp.md index 2e2e8ce4d..d38ff0dec 100644 --- a/docs/course/contract-dapp.md +++ b/docs/course/contract-dapp.md @@ -147,7 +147,6 @@ The following is the complete example of the course: - You can also refer to the Github project source code [https://github.com/ant-design/ant-design-web3-demo](https://github.com/ant-design/ant-design-web3-demo). So far, we have completed all the content of this course, I hope you can learn something from it, thank you all! 🎉 diff --git a/package.json b/package.json index 0b577bb6e..b591451c6 100644 --- a/package.json +++ b/package.json @@ -78,6 +78,7 @@ "lint-staged": "^15.2.0", "lodash": "^4.17.21", "prettier": "^3.1.1", + "rc-util": "^5.38.1", "react": "^18.2.0", "react-copy-to-clipboard": "^5.1.0", "react-dom": "^18.2.0", diff --git a/packages/common/src/utils/warning.ts b/packages/common/src/utils/warning.ts new file mode 100644 index 000000000..fdbad344b --- /dev/null +++ b/packages/common/src/utils/warning.ts @@ -0,0 +1,107 @@ +import * as React from 'react'; +import rcWarning, { resetWarned as rcResetWarned } from 'rc-util/lib/warning'; + +export function noop() {} + +let deprecatedWarnList: Record | null = null; + +export function resetWarned() { + deprecatedWarnList = null; + rcResetWarned(); +} + +type Warning = (valid: boolean, component: string, message?: string) => void; + +// eslint-disable-next-line +let warning: Warning = noop; +if (process.env.NODE_ENV !== 'production') { + warning = (valid, component, message) => { + rcWarning(valid, `[ant-design-web3: ${component}] ${message}`); + + // StrictMode will inject console which will not throw warning in React 17. + if (process.env.NODE_ENV === 'test') { + resetWarned(); + } + }; +} + +type BaseTypeWarning = ( + valid: boolean, + /** + * - deprecated: Some API will be removed in future but still support now. + * - usage: Some API usage is not correct. + * - breaking: Breaking change like API is removed. + */ + type: 'deprecated' | 'usage' | 'breaking', + message?: string, +) => void; + +type TypeWarning = BaseTypeWarning & { + deprecated: (valid: boolean, oldProp: string, newProp: string, message?: string) => void; +}; + +export interface WarningContextProps { + strict?: boolean; +} + +export const WarningContext = React.createContext({}); + +/** + * This is a hook but we not named as `useWarning` + * since this is only used in development. + * We should always wrap this in `if (process.env.NODE_ENV !== 'production')` condition + */ +export const devUseWarning: (component: string) => TypeWarning = + process.env.NODE_ENV !== 'production' + ? (component) => { + const { strict } = React.useContext(WarningContext); + + const typeWarning: TypeWarning = (valid, type, message) => { + if (!valid) { + if (strict === false && type === 'deprecated') { + const existWarning = deprecatedWarnList; + + if (!deprecatedWarnList) { + deprecatedWarnList = {}; + } + + deprecatedWarnList[component] = deprecatedWarnList[component] || []; + if (!deprecatedWarnList[component].includes(message || '')) { + deprecatedWarnList[component].push(message || ''); + } + + // Warning for the first time + if (!existWarning) { + // eslint-disable-next-line no-console + console.warn( + '[ant-design-web3] There exists deprecated usage in your code:', + deprecatedWarnList, + ); + } + } else { + warning(valid, component, message); + } + } + }; + + typeWarning.deprecated = (valid, oldProp, newProp, message) => { + typeWarning( + valid, + 'deprecated', + `\`${oldProp}\` is deprecated. Please use \`${newProp}\` instead.${ + message ? ` ${message}` : '' + }`, + ); + }; + + return typeWarning; + } + : () => { + const noopWarning: TypeWarning = () => {}; + + noopWarning.deprecated = noop; + + return noopWarning; + }; + +export default warning; diff --git a/packages/web3/src/connect-modal/__tests__/basic.test.tsx b/packages/web3/src/connect-modal/__tests__/basic.test.tsx index a0b883ddd..f49158b42 100644 --- a/packages/web3/src/connect-modal/__tests__/basic.test.tsx +++ b/packages/web3/src/connect-modal/__tests__/basic.test.tsx @@ -22,7 +22,10 @@ describe('ConnectModal with guide', () => { vi.spyOn(Grid, 'useBreakpoint').mockReturnValue({ md: true, // ≥ 768px, mock PC }); - + const errorFn = vi.fn(); + vi.spyOn(console, 'error').mockImplementation((msg) => { + errorFn(msg); + }); const App = () => ( { ); const { baseElement } = render(); + expect(errorFn).toBeCalledWith( + 'Warning: [ant-design-web3: ConnectModal] `groupOrder` is deprecated. Please use `group={{groupOrder: ()=> {}}}` instead.', + ); expect(baseElement).toMatchSnapshot(); // should have ant-web3-connect-modal class @@ -125,7 +131,9 @@ describe('ConnectModal with guide', () => { open={open} title="ConnectModal" footer="Powered by AntChain" - groupOrder={groupOrder} + group={{ + groupOrder, + }} walletList={walletList} guide={guide} destroyOnClose={true} @@ -155,7 +163,9 @@ describe('ConnectModal with guide', () => { open title="ConnectModal" footer="Powered by AntChain" - groupOrder={groupOrder} + group={{ + groupOrder, + }} walletList={walletList} /> ); @@ -202,4 +212,19 @@ describe('ConnectModal with guide', () => { expect(baseElement.querySelector('.ant-web3-connect-modal-guide-item-icon')).toBeNull(); expect(baseElement.querySelector('.ant-web3-icon-bitcoin-circle-colorful')).toBeTruthy(); }); + + it('Wallets are not grouped', async () => { + const App = () => ( + + ); + const { baseElement } = render(); + expect(baseElement.querySelector('.ant-web3-connect-modal-group-title')).toBeNull(); + }); }); diff --git a/packages/web3/src/connect-modal/__tests__/mode.test.tsx b/packages/web3/src/connect-modal/__tests__/mode.test.tsx index 20177f797..404729e18 100644 --- a/packages/web3/src/connect-modal/__tests__/mode.test.tsx +++ b/packages/web3/src/connect-modal/__tests__/mode.test.tsx @@ -16,7 +16,9 @@ describe('ConnectModal with guide', () => { open title="ConnectModal" footer="Powered by AntChain" - groupOrder={groupOrder} + group={{ + groupOrder, + }} walletList={walletList} guide={guide} mode="simple" @@ -39,7 +41,9 @@ describe('ConnectModal with guide', () => { open title="ConnectModal" footer="Powered by AntChain" - groupOrder={groupOrder} + group={{ + groupOrder, + }} walletList={walletList} guide={guide} mode="auto" @@ -62,7 +66,9 @@ describe('ConnectModal with guide', () => { open title="ConnectModal" footer="Powered by AntChain" - groupOrder={groupOrder} + group={{ + groupOrder, + }} walletList={walletList} guide={guide} /> @@ -84,7 +90,9 @@ describe('ConnectModal with guide', () => { open title="ConnectModal" footer="Powered by AntChain" - groupOrder={groupOrder} + group={{ + groupOrder, + }} walletList={walletList} guide={guide} mode="normal" diff --git a/packages/web3/src/connect-modal/__tests__/panel.test.tsx b/packages/web3/src/connect-modal/__tests__/panel.test.tsx index 07e1644ba..32be50e49 100644 --- a/packages/web3/src/connect-modal/__tests__/panel.test.tsx +++ b/packages/web3/src/connect-modal/__tests__/panel.test.tsx @@ -17,7 +17,9 @@ describe('ConnectModal with ConnectModal', () => { diff --git a/packages/web3/src/connect-modal/__tests__/simple.test.tsx b/packages/web3/src/connect-modal/__tests__/simple.test.tsx index 307fd994a..0d26c05bc 100644 --- a/packages/web3/src/connect-modal/__tests__/simple.test.tsx +++ b/packages/web3/src/connect-modal/__tests__/simple.test.tsx @@ -17,7 +17,9 @@ describe('ConnectModal without guide', () => { open title="ConnectModal" footer="Powered by AntChain" - groupOrder={groupOrder} + group={{ + groupOrder, + }} walletList={walletList} /> diff --git a/packages/web3/src/connect-modal/__tests__/theme.test.tsx b/packages/web3/src/connect-modal/__tests__/theme.test.tsx index 866bba620..3435d4114 100644 --- a/packages/web3/src/connect-modal/__tests__/theme.test.tsx +++ b/packages/web3/src/connect-modal/__tests__/theme.test.tsx @@ -27,7 +27,9 @@ describe('ConnectModal theme', () => { diff --git a/packages/web3/src/connect-modal/components/ModalPanel.tsx b/packages/web3/src/connect-modal/components/ModalPanel.tsx index 951ea3f30..cc5725ae3 100644 --- a/packages/web3/src/connect-modal/components/ModalPanel.tsx +++ b/packages/web3/src/connect-modal/components/ModalPanel.tsx @@ -14,7 +14,17 @@ import WalletList from './WalletList'; export type ModalPanelProps = ConnectModalProps; const ModalPanel: React.FC = (props) => { - const { title, footer, walletList, groupOrder, guide, mode, onWalletSelected, locale } = props; + const { + title, + footer, + walletList, + guide, + group = true, + groupOrder, + mode, + onWalletSelected, + locale, + } = props; const intl = useIntl('ConnectModal', locale); const [panelRoute, setPanelRoute] = React.useState('init'); @@ -92,7 +102,7 @@ const ModalPanel: React.FC = (props) => {
{mergedTitle}
- +
{footer &&
{footer}
}
diff --git a/packages/web3/src/connect-modal/components/WalletList.tsx b/packages/web3/src/connect-modal/components/WalletList.tsx index 6ac0b93ec..3f6d2820a 100644 --- a/packages/web3/src/connect-modal/components/WalletList.tsx +++ b/packages/web3/src/connect-modal/components/WalletList.tsx @@ -6,10 +6,10 @@ import { connectModalContext } from '../context'; import type { ConnectModalProps, Wallet } from '../interface'; import { defaultGroupOrder } from '../utils'; -export type WalletListProps = Pick; +export type WalletListProps = Pick; const WalletList: React.FC = (props) => { - const { walletList = [], groupOrder } = props; + const { walletList = [], group: internalGroup, groupOrder } = props; const { prefixCls, updateSelectedWallet, selectedWallet, updatePanelRoute } = useContext(connectModalContext); const dataSource: Record = useMemo(() => { @@ -24,64 +24,83 @@ const WalletList: React.FC = (props) => { return result; }, [walletList]); - const groupKeys = useMemo( - () => Object.keys(dataSource).sort(groupOrder ?? defaultGroupOrder), - [dataSource, groupOrder], - ); + const groupKeys = useMemo(() => { + let orderFn = defaultGroupOrder; + if (typeof internalGroup === 'object' && internalGroup.hasOwnProperty('groupOrder')) { + orderFn = internalGroup.groupOrder!; + } else if (groupOrder) { + orderFn = groupOrder; + } + return Object.keys(dataSource).sort(orderFn); + }, [dataSource, internalGroup, groupOrder]); + + const RenderContent = ({ group }: { group?: string }) => { + return ( + + itemLayout="horizontal" + dataSource={internalGroup ? dataSource[group!] : walletList} + rowKey="key" + renderItem={(item) => ( + { + const hasWalletReady = await item.hasWalletReady?.(); + if (hasWalletReady) { + // wallet is ready, call ConnectModal's onWalletSelected + const hasExtensionInstalled = await item?.hasExtensionInstalled?.(); + updateSelectedWallet(item, true); + if (item.getQrCode && !hasExtensionInstalled) { + // Extension not installed and can use qr code to connect + updatePanelRoute('qrCode', true); + } + return; + } + + // wallet not ready + // go to wallet page + updateSelectedWallet(item); + updatePanelRoute('wallet', true); + }} + > +
+
+ {typeof item.icon === 'string' || item.icon === undefined ? ( + {item.name} + ) : ( + item.icon + )} +
+
{item.name}
+
+
+ )} + /> + ); + }; return (
- {groupKeys.map((group) => ( -
-
{group}
+ {internalGroup ? ( + groupKeys.map((group) => ( +
+
{group}
+
+ +
+
+ )) + ) : ( +
- - itemLayout="horizontal" - dataSource={dataSource[group]} - rowKey="key" - renderItem={(item) => ( - { - const hasWalletReady = await item.hasWalletReady?.(); - if (hasWalletReady) { - // wallet is ready, call ConnectModal's onWalletSelected - const hasExtensionInstalled = await item?.hasExtensionInstalled?.(); - updateSelectedWallet(item, true); - if (item.getQrCode && !hasExtensionInstalled) { - // Extension not installed and can use qr code to connect - updatePanelRoute('qrCode', true); - } - return; - } - - // wallet not ready - // go to wallet page - updateSelectedWallet(item); - updatePanelRoute('wallet', true); - }} - > -
-
- {typeof item.icon === 'string' || item.icon === undefined ? ( - {item.name} - ) : ( - item.icon - )} -
-
{item.name}
-
-
- )} - /> +
- ))} + )}
); }; diff --git a/packages/web3/src/connect-modal/demos/basic.tsx b/packages/web3/src/connect-modal/demos/basic.tsx index 22a1baadd..ed8f0fb94 100644 --- a/packages/web3/src/connect-modal/demos/basic.tsx +++ b/packages/web3/src/connect-modal/demos/basic.tsx @@ -63,7 +63,9 @@ const App: React.FC = () => { setOpen(false)} /> diff --git a/packages/web3/src/connect-modal/demos/customGuide.tsx b/packages/web3/src/connect-modal/demos/customGuide.tsx index 2b35fc92b..cb7c922e5 100644 --- a/packages/web3/src/connect-modal/demos/customGuide.tsx +++ b/packages/web3/src/connect-modal/demos/customGuide.tsx @@ -90,7 +90,9 @@ const App: React.FC = () => { setOpen(false)} guide={guide} diff --git a/packages/web3/src/connect-modal/demos/panel.tsx b/packages/web3/src/connect-modal/demos/panel.tsx index e84a77a84..427aea8f2 100644 --- a/packages/web3/src/connect-modal/demos/panel.tsx +++ b/packages/web3/src/connect-modal/demos/panel.tsx @@ -61,7 +61,12 @@ const App: React.FC = () => { padding: 0, }} > - + ); }; diff --git a/packages/web3/src/connect-modal/demos/simple.tsx b/packages/web3/src/connect-modal/demos/simple.tsx index 1e6d70e2e..b7bd8e7d5 100644 --- a/packages/web3/src/connect-modal/demos/simple.tsx +++ b/packages/web3/src/connect-modal/demos/simple.tsx @@ -61,7 +61,9 @@ const App: React.FC = () => { setOpen(false)} mode="simple" diff --git a/packages/web3/src/connect-modal/demos/ungroupedBasic.tsx b/packages/web3/src/connect-modal/demos/ungroupedBasic.tsx new file mode 100644 index 000000000..59c6c1660 --- /dev/null +++ b/packages/web3/src/connect-modal/demos/ungroupedBasic.tsx @@ -0,0 +1,69 @@ +import React from 'react'; +import { ConnectModal } from '@ant-design/web3'; +import { metadata_MetaMask, metadata_WalletConnect } from '@ant-design/web3-assets'; +import { Button } from 'antd'; +import { useIntl } from 'dumi'; + +import type { Wallet } from '../interface'; + +const walletList: Wallet[] = [ + metadata_MetaMask, + { + ...metadata_WalletConnect, + getQrCode: () => { + return new Promise<{ + uri: string; + }>((resolve) => + setTimeout( + () => + resolve({ + uri: `https://ant.design/docs/react/migrate-less-variables-cn#avatar-%E5%A4%B4%E5%83%8F?timestamp=${Date.now()}&random=${Math.random()}`, + }), + 2000, + ), + ); + }, + }, + { + icon: 'https://xsgames.co/randomusers/avatar.php?g=pixel&key=3', + name: 'Test Wallet3', + remark: 'remark 3', + app: { + link: 'https://test.com/xxx', + }, + getQrCode: () => { + return new Promise<{ + uri: string; + }>((resolve) => + setTimeout( + () => + resolve({ + uri: `https://ant.design/docs/react/migrate-less-variables-cn#avatar-%E5%A4%B4%E5%83%8F?timestamp=${Date.now()}&random=${Math.random()}`, + }), + 2000, + ), + ); + }, + }, +]; + +const App: React.FC = () => { + const [open, setOpen] = React.useState(false); + const { locale } = useIntl(); + return ( + <> + + setOpen(false)} + group={false} + /> + + ); +}; + +export default App; diff --git a/packages/web3/src/connect-modal/index.md b/packages/web3/src/connect-modal/index.md index bcea748b5..1a68d0c11 100644 --- a/packages/web3/src/connect-modal/index.md +++ b/packages/web3/src/connect-modal/index.md @@ -14,6 +14,10 @@ The connection wallet popup, used with [ConnectButton](../connect-button/index.m +## Wallets are not grouped + + + ## Custom Theme @@ -45,7 +49,7 @@ The connection wallet popup, used with [ConnectButton](../connect-button/index.m | onCancel | Specify a function that will be called when a user clicks mask, close button on top right or Cancel button | `(e:React.SyntheticEvent) => void` | - | - | | footer | Custom footer | `React.ReactNode` | - | - | | walletList | Wallet list | `Wallet[]` | - | - | -| groupOrder | Wallet group sorting function | `(a: string, b: string) => number` | - | - | +| group | Does the wallet need to be grouped | `boolean` \| `{groupOrder: (a: string, b: string) => number}` | `true` | - | | mode | Popup mode | `'simple' \| 'normal' \| 'auto'` | `'auto'` | - | | guide | Newbie guide content | `DefaultGuide` | [DefaultGuide](#defaultguide) | - | | locale | Multilingual settings | `Locale["ConnectModal"]` | - | - | diff --git a/packages/web3/src/connect-modal/index.tsx b/packages/web3/src/connect-modal/index.tsx index ca4a2a0ee..bf88783cf 100644 --- a/packages/web3/src/connect-modal/index.tsx +++ b/packages/web3/src/connect-modal/index.tsx @@ -2,6 +2,7 @@ import React from 'react'; import { ConfigProvider, Modal } from 'antd'; import classNames from 'classnames'; +import { devUseWarning } from '../../../common/src/utils/warning'; import ModalPanel from './components/ModalPanel'; import useMode from './hooks/useMode'; import type { ConnectModalProps } from './interface'; @@ -22,6 +23,10 @@ export const ConnectModal: React.FC & { const prefixCls = getPrefixCls('web3-connect-modal'); const { wrapSSR, hashId } = useStyle(prefixCls); + // Warning for deprecated usage + const warning = devUseWarning('ConnectModal'); + warning.deprecated(!('groupOrder' in restProps), 'groupOrder', 'group={{groupOrder: ()=> {}}}'); + return wrapSSR( +## 钱包不进行分组 + + + ## 自定义主题 @@ -45,7 +49,7 @@ order: 2 | onCancel | 点击遮罩层或右上角叉或取消按钮的回调 | `(e:React.SyntheticEvent) => void` | - | - | | footer | 自定义 footer | `React.ReactNode` | - | - | | walletList | 钱包列表 | [Wallet](./types#wallet)\[\] | - | - | -| groupOrder | 钱包分组排序函数 | `(a: string, b: string) => number` | - | - | +| group | 钱包是否需要分组 | `boolean` \| `{groupOrder: (a: string, b: string) => number}` | `true` | - | | mode | 弹窗模式 | `'simple' \| 'normal' \| 'auto'` | `'auto'` | - | | guide | 新手指引内容 | `DefaultGuide` | [DefaultGuide](#defaultguide) | - | | locale | 多语言设置 | `Locale["ConnectModal"]` | - | - | diff --git a/packages/web3/src/connect-modal/interface.ts b/packages/web3/src/connect-modal/interface.ts index bf8e399d5..4340fa966 100644 --- a/packages/web3/src/connect-modal/interface.ts +++ b/packages/web3/src/connect-modal/interface.ts @@ -77,6 +77,18 @@ export type ConnectModalProps = ModalProps & { * @descEn Wallet list */ walletList?: Wallet[]; + /** + * @desc 支持分组 | 钱包分组排序函数 + * @descEn support grouping | Wallet group sorting function + * @param a groupName1 + * @param b groupName2 + * @returns + */ + group?: + | boolean + | { + groupOrder?: (a: string, b: string) => number; + }; /** * @desc 钱包分组排序函数 * @descEn Wallet group sorting function diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4798b906b..33a7de285 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -107,6 +107,9 @@ importers: prettier: specifier: ^3.1.1 version: 3.1.1 + rc-util: + specifier: ^5.38.1 + version: 5.38.1(react-dom@18.2.0)(react@18.2.0) react: specifier: ^18.2.0 version: 18.2.0 @@ -329,12 +332,12 @@ packages: '@jridgewell/trace-mapping': 0.3.20 /@ant-design/colors@7.0.2: - resolution: {integrity: sha512-7KJkhTiPiLHSu+LmMJnehfJ6242OCxSlR3xHVBecYxnMW8MS/878NXct1GqYARyL59fyeFdKRxXTfvR9SnDgJg==, tarball: https://registry.npmmirror.com/@ant-design/colors/-/colors-7.0.2.tgz} + resolution: {integrity: sha512-7KJkhTiPiLHSu+LmMJnehfJ6242OCxSlR3xHVBecYxnMW8MS/878NXct1GqYARyL59fyeFdKRxXTfvR9SnDgJg==} dependencies: '@ctrl/tinycolor': 3.6.1 /@ant-design/cssinjs@1.18.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-514V9rjLaFYb3v4s55/8bg2E6fb81b99s3crDZf4nSwtiDLLXs8axnIph+q2TVkY2hbJPZOn/cVsVcnLkzFy7w==, tarball: https://registry.npmmirror.com/@ant-design/cssinjs/-/cssinjs-1.18.2.tgz} + resolution: {integrity: sha512-514V9rjLaFYb3v4s55/8bg2E6fb81b99s3crDZf4nSwtiDLLXs8axnIph+q2TVkY2hbJPZOn/cVsVcnLkzFy7w==} peerDependencies: react: '>=16.0.0' react-dom: '>=16.0.0' @@ -391,7 +394,7 @@ packages: dev: true /@babel/code-frame@7.23.5: - resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==, tarball: https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.23.5.tgz} + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.23.4 @@ -402,7 +405,7 @@ packages: engines: {node: '>=6.9.0'} /@babel/core@7.23.2: - resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==, tarball: https://registry.npmmirror.com/@babel/core/-/core-7.23.2.tgz} + resolution: {integrity: sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 @@ -487,7 +490,7 @@ packages: dev: true /@babel/generator@7.23.6: - resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==, tarball: https://registry.npmmirror.com/@babel/generator/-/generator-7.23.6.tgz} + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 @@ -560,18 +563,18 @@ packages: - supports-color /@babel/helper-environment-visitor@7.22.20: - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==, tarball: https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz} + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} /@babel/helper-function-name@7.23.0: - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==, tarball: https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz} + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.22.15 '@babel/types': 7.23.6 /@babel/helper-hoist-variables@7.22.5: - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==, tarball: https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz} + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 @@ -660,17 +663,17 @@ packages: '@babel/types': 7.23.6 /@babel/helper-split-export-declaration@7.22.6: - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==, tarball: https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz} + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 /@babel/helper-string-parser@7.23.4: - resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==, tarball: https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz} + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} engines: {node: '>=6.9.0'} /@babel/helper-validator-identifier@7.22.20: - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==, tarball: https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz} + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} /@babel/helper-validator-option@7.23.5: @@ -696,7 +699,7 @@ packages: - supports-color /@babel/highlight@7.23.4: - resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==, tarball: https://registry.npmmirror.com/@babel/highlight/-/highlight-7.23.4.tgz} + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.22.20 @@ -704,7 +707,7 @@ packages: js-tokens: 4.0.0 /@babel/parser@7.23.6: - resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==, tarball: https://registry.npmmirror.com/@babel/parser/-/parser-7.23.6.tgz} + resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: @@ -1814,7 +1817,7 @@ packages: resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} /@babel/runtime@7.23.2: - resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==, tarball: https://registry.npmmirror.com/@babel/runtime/-/runtime-7.23.2.tgz} + resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 @@ -1835,7 +1838,7 @@ packages: '@babel/types': 7.23.6 /@babel/traverse@7.23.6: - resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==, tarball: https://registry.npmmirror.com/@babel/traverse/-/traverse-7.23.6.tgz} + resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.23.5 @@ -1852,7 +1855,7 @@ packages: - supports-color /@babel/types@7.23.6: - resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==, tarball: https://registry.npmmirror.com/@babel/types/-/types-7.23.6.tgz} + resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.23.4 @@ -2323,10 +2326,10 @@ packages: dev: true /@emotion/hash@0.8.0: - resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==, tarball: https://registry.npmmirror.com/@emotion/hash/-/hash-0.8.0.tgz} + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} /@emotion/hash@0.9.1: - resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==, tarball: https://registry.npmmirror.com/@emotion/hash/-/hash-0.9.1.tgz} + resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} /@emotion/is-prop-valid@1.2.1: resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} @@ -2404,7 +2407,7 @@ packages: react: 18.2.0 /@emotion/unitless@0.7.5: - resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==, tarball: https://registry.npmmirror.com/@emotion/unitless/-/unitless-0.7.5.tgz} + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} /@emotion/unitless@0.8.1: resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} @@ -3225,7 +3228,7 @@ packages: dev: true /@ianvs/prettier-plugin-sort-imports@4.1.1(prettier@3.1.1): - resolution: {integrity: sha512-kJhXq63ngpTQ2dxgf5GasbPJWsJA3LgoOdd7WGhpUSzLgLgI4IsIzYkbJf9kmpOHe7Vdm/o3PcRA3jmizXUuAQ==, tarball: https://registry.npmmirror.com/@ianvs/prettier-plugin-sort-imports/-/prettier-plugin-sort-imports-4.1.1.tgz} + resolution: {integrity: sha512-kJhXq63ngpTQ2dxgf5GasbPJWsJA3LgoOdd7WGhpUSzLgLgI4IsIzYkbJf9kmpOHe7Vdm/o3PcRA3jmizXUuAQ==} peerDependencies: '@vue/compiler-sfc': '>=3.0.0' prettier: 2 || 3 @@ -3384,7 +3387,7 @@ packages: chalk: 4.1.2 /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==, tarball: https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz} + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/set-array': 1.1.2 @@ -3392,11 +3395,11 @@ packages: '@jridgewell/trace-mapping': 0.3.20 /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==, tarball: https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz} + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==, tarball: https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz} + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} /@jridgewell/source-map@0.3.5: @@ -3406,10 +3409,10 @@ packages: '@jridgewell/trace-mapping': 0.3.20 /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, tarball: https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz} + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} /@jridgewell/trace-mapping@0.3.20: - resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==, tarball: https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz} + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 @@ -3951,7 +3954,7 @@ packages: dev: true /@rc-component/color-picker@1.5.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-onyAFhWKXuG4P162xE+7IgaJkPkwM94XlOYnQuu69XdXWMfxpeFi6tpJBsieIMV7EnyLV5J3lDzdLiFeK0iEBA==, tarball: https://registry.npmmirror.com/@rc-component/color-picker/-/color-picker-1.5.1.tgz} + resolution: {integrity: sha512-onyAFhWKXuG4P162xE+7IgaJkPkwM94XlOYnQuu69XdXWMfxpeFi6tpJBsieIMV7EnyLV5J3lDzdLiFeK0iEBA==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -4007,7 +4010,7 @@ packages: react-dom: 18.2.0(react@18.2.0) /@rc-component/tour@1.12.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-2he76Iwf0cVchI70dHCowR5DCWpPRY9+foNoO1h+TD2cZbsGSoEk+m3jEaFPh4ChXYhdzsxp+0siz8/br91JhA==, tarball: https://registry.npmmirror.com/@rc-component/tour/-/tour-1.12.2.tgz} + resolution: {integrity: sha512-2he76Iwf0cVchI70dHCowR5DCWpPRY9+foNoO1h+TD2cZbsGSoEk+m3jEaFPh4ChXYhdzsxp+0siz8/br91JhA==} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' @@ -6916,7 +6919,7 @@ packages: dev: true /antd@5.13.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-P+N8gc0NOPy2WqJj/57Ey3dZUmb7nEUwAM+CIJaR5SOEjZnhEtMGRJSt+3lnhJ3MNRR39aR6NYkRVp2mYfphiA==, tarball: https://registry.npmmirror.com/antd/-/antd-5.13.2.tgz} + resolution: {integrity: sha512-P+N8gc0NOPy2WqJj/57Ey3dZUmb7nEUwAM+CIJaR5SOEjZnhEtMGRJSt+3lnhJ3MNRR39aR6NYkRVp2mYfphiA==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -7899,7 +7902,7 @@ packages: resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} /classnames@2.5.1: - resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==, tarball: https://registry.npmmirror.com/classnames/-/classnames-2.5.1.tgz} + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} /clean-css@5.3.3: resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} @@ -8537,7 +8540,7 @@ packages: dev: true /cssesc@3.0.0: - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, tarball: https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz} + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true requiresBuild: true @@ -8638,7 +8641,7 @@ packages: ms: 2.0.0 /debug@3.1.0: - resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==, tarball: https://registry.npmmirror.com/debug/-/debug-3.1.0.tgz} + resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} peerDependencies: supports-color: '*' peerDependenciesMeta: @@ -9675,7 +9678,7 @@ packages: dev: true /eslint-plugin-unused-imports@3.0.0(eslint@8.56.0): - resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==, tarball: https://registry.npmmirror.com/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.0.0.tgz} + resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/eslint-plugin': ^6.0.0 @@ -9689,7 +9692,7 @@ packages: dev: true /eslint-rule-composer@0.3.0: - resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==, tarball: https://registry.npmmirror.com/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz} + resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} engines: {node: '>=4.0.0'} dev: true @@ -10713,7 +10716,7 @@ packages: dev: true /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, tarball: https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz} + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} /globals@13.24.0: @@ -12212,7 +12215,7 @@ packages: '@sideway/pinpoint': 2.0.0 /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, tarball: https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz} + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} @@ -12300,11 +12303,11 @@ packages: dev: true /jsesc@0.5.0: - resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==, tarball: https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz} + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==, tarball: https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz} + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true @@ -12444,7 +12447,7 @@ packages: dev: true /known-css-properties@0.29.0: - resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==, tarball: https://registry.npmmirror.com/known-css-properties/-/known-css-properties-0.29.0.tgz} + resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==} dev: true /kolorist@1.8.0: @@ -15258,7 +15261,7 @@ packages: dev: true /postcss-resolve-nested-selector@0.1.1: - resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==, tarball: https://registry.npmmirror.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz} + resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} dev: true /postcss-safe-parser@6.0.0(postcss@8.4.32): @@ -15280,7 +15283,7 @@ packages: dev: true /postcss-selector-parser@6.0.13: - resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==, tarball: https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz} + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 @@ -15321,7 +15324,7 @@ packages: dev: true /postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, tarball: https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz} + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} dev: true /postcss@8.4.32: @@ -15740,7 +15743,7 @@ packages: dev: true /rc-cascader@3.21.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-7aADjbfqiR4HrTHG9S019p2jeKM/AxISPA5+sBJR7Mlhm/i+lR7VjBju3KQulJNJLKNEnQYg4TFhcPf2SLua9g==, tarball: https://registry.npmmirror.com/rc-cascader/-/rc-cascader-3.21.0.tgz} + resolution: {integrity: sha512-7aADjbfqiR4HrTHG9S019p2jeKM/AxISPA5+sBJR7Mlhm/i+lR7VjBju3KQulJNJLKNEnQYg4TFhcPf2SLua9g==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -15794,7 +15797,7 @@ packages: react-dom: 18.2.0(react@18.2.0) /rc-drawer@7.0.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ePcS4KtQnn57bCbVXazHN2iC8nTPCXlWEIA/Pft87Pd9U7ZeDkdRzG47jWG2/TAFXFlFltRAMcslqmUM8NPCGA==, tarball: https://registry.npmmirror.com/rc-drawer/-/rc-drawer-7.0.0.tgz} + resolution: {integrity: sha512-ePcS4KtQnn57bCbVXazHN2iC8nTPCXlWEIA/Pft87Pd9U7ZeDkdRzG47jWG2/TAFXFlFltRAMcslqmUM8NPCGA==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -15849,7 +15852,7 @@ packages: react-dom: 18.2.0(react@18.2.0) /rc-input-number@8.6.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-gaAMUKtUKLktJ3Yx93tjgYY1M0HunnoqzPEqkb9//Ydup4DcG0TFL9yHBA3pgVdNIt5f0UWyHCgFBj//JxeD6A==, tarball: https://registry.npmmirror.com/rc-input-number/-/rc-input-number-8.6.1.tgz} + resolution: {integrity: sha512-gaAMUKtUKLktJ3Yx93tjgYY1M0HunnoqzPEqkb9//Ydup4DcG0TFL9yHBA3pgVdNIt5f0UWyHCgFBj//JxeD6A==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -15863,7 +15866,7 @@ packages: react-dom: 18.2.0(react@18.2.0) /rc-input@1.4.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-aHyQUAIRmTlOnvk5EcNqEpJ+XMtfMpYRAJayIlJfsvvH9cAKUWboh4egm23vgMA7E+c/qm4BZcnrDcA960GC1w==, tarball: https://registry.npmmirror.com/rc-input/-/rc-input-1.4.3.tgz} + resolution: {integrity: sha512-aHyQUAIRmTlOnvk5EcNqEpJ+XMtfMpYRAJayIlJfsvvH9cAKUWboh4egm23vgMA7E+c/qm4BZcnrDcA960GC1w==} peerDependencies: react: '>=16.0.0' react-dom: '>=16.0.0' @@ -15875,7 +15878,7 @@ packages: react-dom: 18.2.0(react@18.2.0) /rc-mentions@2.10.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-72qsEcr/7su+a07ndJ1j8rI9n0Ka/ngWOLYnWMMv0p2mi/5zPwPrEDTt6Uqpe8FWjWhueDJx/vzunL6IdKDYMg==, tarball: https://registry.npmmirror.com/rc-mentions/-/rc-mentions-2.10.1.tgz} + resolution: {integrity: sha512-72qsEcr/7su+a07ndJ1j8rI9n0Ka/ngWOLYnWMMv0p2mi/5zPwPrEDTt6Uqpe8FWjWhueDJx/vzunL6IdKDYMg==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -15945,7 +15948,7 @@ packages: react-dom: 18.2.0(react@18.2.0) /rc-pagination@4.0.4(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-GGrLT4NgG6wgJpT/hHIpL9nELv27A1XbSZzECIuQBQTVSf4xGKxWr6I/jhpRPauYEWEbWVw22ObG6tJQqwJqWQ==, tarball: https://registry.npmmirror.com/rc-pagination/-/rc-pagination-4.0.4.tgz} + resolution: {integrity: sha512-GGrLT4NgG6wgJpT/hHIpL9nELv27A1XbSZzECIuQBQTVSf4xGKxWr6I/jhpRPauYEWEbWVw22ObG6tJQqwJqWQ==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -16036,7 +16039,7 @@ packages: react-dom: 18.2.0(react@18.2.0) /rc-select@14.11.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-8J8G/7duaGjFiTXCBLWfh5P+KDWyA3KTlZDfV3xj/asMPqB2cmxfM+lH50wRiPIRsCQ6EbkCFBccPuaje3DHIg==, tarball: https://registry.npmmirror.com/rc-select/-/rc-select-14.11.0.tgz} + resolution: {integrity: sha512-8J8G/7duaGjFiTXCBLWfh5P+KDWyA3KTlZDfV3xj/asMPqB2cmxfM+lH50wRiPIRsCQ6EbkCFBccPuaje3DHIg==} engines: {node: '>=8.x'} peerDependencies: react: '*' @@ -16091,7 +16094,7 @@ packages: react-dom: 18.2.0(react@18.2.0) /rc-table@7.37.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-hEB17ktLRVfVmdo+U8MjGr+PuIgdQ8Cxj/N5lwMvP/Az7TOrQxwTMLVEDoj207tyPYLTWifHIF9EJREWwyk67g==, tarball: https://registry.npmmirror.com/rc-table/-/rc-table-7.37.0.tgz} + resolution: {integrity: sha512-hEB17ktLRVfVmdo+U8MjGr+PuIgdQ8Cxj/N5lwMvP/Az7TOrQxwTMLVEDoj207tyPYLTWifHIF9EJREWwyk67g==} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' @@ -16125,7 +16128,7 @@ packages: dev: true /rc-tabs@14.0.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-lp1YWkaPnjlyhOZCPrAWxK6/P6nMGX/BAZcAC3nuVwKz0Byfp+vNnQKK8BRCP2g/fzu+SeB5dm9aUigRu3tRkQ==, tarball: https://registry.npmmirror.com/rc-tabs/-/rc-tabs-14.0.0.tgz} + resolution: {integrity: sha512-lp1YWkaPnjlyhOZCPrAWxK6/P6nMGX/BAZcAC3nuVwKz0Byfp+vNnQKK8BRCP2g/fzu+SeB5dm9aUigRu3tRkQ==} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' @@ -16142,7 +16145,7 @@ packages: react-dom: 18.2.0(react@18.2.0) /rc-textarea@1.6.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-8k7+8Y2GJ/cQLiClFMg8kUXOOdvcFQrnGeSchOvI2ZMIVvX5a3zQpLxoODL0HTrvU63fPkRmMuqaEcOF9dQemA==, tarball: https://registry.npmmirror.com/rc-textarea/-/rc-textarea-1.6.3.tgz} + resolution: {integrity: sha512-8k7+8Y2GJ/cQLiClFMg8kUXOOdvcFQrnGeSchOvI2ZMIVvX5a3zQpLxoODL0HTrvU63fPkRmMuqaEcOF9dQemA==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -16168,7 +16171,7 @@ packages: react-dom: 18.2.0(react@18.2.0) /rc-tree-select@5.17.0(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-7sRGafswBhf7n6IuHyCEFCildwQIgyKiV8zfYyUoWfZEFdhuk7lCH+DN0aHt+oJrdiY9+6Io/LDXloGe01O8XQ==, tarball: https://registry.npmmirror.com/rc-tree-select/-/rc-tree-select-5.17.0.tgz} + resolution: {integrity: sha512-7sRGafswBhf7n6IuHyCEFCildwQIgyKiV8zfYyUoWfZEFdhuk7lCH+DN0aHt+oJrdiY9+6Io/LDXloGe01O8XQ==} peerDependencies: react: '*' react-dom: '*' @@ -16197,7 +16200,7 @@ packages: react-dom: 18.2.0(react@18.2.0) /rc-upload@4.5.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-QO3ne77DwnAPKFn0bA5qJM81QBjQi0e0NHdkvpFyY73Bea2NfITiotqJqVjHgeYPOJu5lLVR32TNGP084aSoXA==, tarball: https://registry.npmmirror.com/rc-upload/-/rc-upload-4.5.2.tgz} + resolution: {integrity: sha512-QO3ne77DwnAPKFn0bA5qJM81QBjQi0e0NHdkvpFyY73Bea2NfITiotqJqVjHgeYPOJu5lLVR32TNGP084aSoXA==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -17212,7 +17215,7 @@ packages: dev: true /semver@5.7.2: - resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==, tarball: https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz} + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true /semver@6.3.1: @@ -17813,7 +17816,7 @@ packages: dev: true /strip-ansi@4.0.0: - resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==, tarball: https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz} + resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} engines: {node: '>=4'} dependencies: ansi-regex: 3.0.1 @@ -18080,7 +18083,7 @@ packages: resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} /stylis@4.3.0: - resolution: {integrity: sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==, tarball: https://registry.npmmirror.com/stylis/-/stylis-4.3.0.tgz} + resolution: {integrity: sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==} /sudo-prompt@9.2.1: resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} @@ -18388,7 +18391,7 @@ packages: dev: true /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==, tarball: https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz} + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} /to-regex-range@5.0.1: @@ -19014,7 +19017,7 @@ packages: node-gyp-build: 4.7.1 /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, tarball: https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz} + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} /util.promisify@1.0.1: resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==} @@ -19642,7 +19645,7 @@ packages: strip-ansi: 6.0.1 /wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, tarball: https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz} + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} dependencies: ansi-styles: 4.3.0