From 61dac4ddabc63554919eb10e9d83febc82f0dd13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E6=9D=B1=E6=BE=94?= Date: Tue, 10 May 2022 14:23:59 +0800 Subject: [PATCH 01/89] Update package.json (#9826) --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index a065cde6..31d9b5be 100644 --- a/package.json +++ b/package.json @@ -72,6 +72,7 @@ "react-dev-inspector": "^1.7.0", "react-dom": "^17.0.0", "react-helmet-async": "^1.2.0", + "swagger-ui-react": "^4.11.0", "umi": "^3.5.0" }, "devDependencies": { From f701c2edbb423e9dc38e6be10ed2dfa4fb784931 Mon Sep 17 00:00:00 2001 From: puxiao Date: Tue, 10 May 2022 14:26:44 +0800 Subject: [PATCH 02/89] Update to antd 4.20.0 for `Menu support items` (#9786) * Update package.json * Update AvatarDropdown.tsx * Update AvatarDropdown.tsx * Update AvatarDropdown.tsx --- package.json | 2 +- .../RightContent/AvatarDropdown.tsx | 47 +++++++++++-------- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 31d9b5be..4aa52308 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,7 @@ "@ant-design/pro-layout": "^6.35.0", "@ant-design/pro-table": "^2.71.0", "@umijs/route-utils": "^2.0.0", - "antd": "^4.19.0", + "antd": "^4.20.0", "classnames": "^2.3.0", "lodash": "^4.17.0", "moment": "^2.29.0", diff --git a/src/components/RightContent/AvatarDropdown.tsx b/src/components/RightContent/AvatarDropdown.tsx index fc768c29..af29ae11 100644 --- a/src/components/RightContent/AvatarDropdown.tsx +++ b/src/components/RightContent/AvatarDropdown.tsx @@ -68,28 +68,35 @@ const AvatarDropdown: React.FC = ({ menu }) => { return loading; } - const menuHeaderDropdown = ( - - {menu && ( - - - 个人中心 - - )} - {menu && ( - - - 个人设置 - - )} - {menu && } + const menuItems = [ + ...(menu + ? [ + { + key: 'center', + icon: , + label: '个人中心', + }, + { + key: 'settings', + icon: , + label: '个人设置', + }, + { + type: 'divider', + }, + ] + : []), + { + key: 'logout', + icon: , + label: '退出登录', + }, + ]; - - - 退出登录 - - + const menuHeaderDropdown = ( + ); + return ( From e0d9452edafdf06a38922b85c82a85ccfd24a46b Mon Sep 17 00:00:00 2001 From: Peng Yuwei Date: Tue, 10 May 2022 14:27:01 +0800 Subject: [PATCH 03/89] Solve the problem of incorrect jumping of secondary menu. (#9784) --- config/routes.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/config/routes.ts b/config/routes.ts index 92b61fbe..e903002b 100644 --- a/config/routes.ts +++ b/config/routes.ts @@ -24,7 +24,6 @@ name: 'admin', icon: 'crown', access: 'canAdmin', - component: './Admin', routes: [ { path: '/admin/sub-page', From e608b880e21d38be8b093fb6bcb3f9735991160a Mon Sep 17 00:00:00 2001 From: TinsFox <33956589+TinsFox@users.noreply.github.com> Date: Tue, 10 May 2022 22:33:35 +0800 Subject: [PATCH 04/89] chore: remove duplicate swagger-ui-react (#9829) --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 4aa52308..f37a8c24 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,6 @@ "react-dev-inspector": "^1.7.0", "react-dom": "^17.0.0", "react-helmet-async": "^1.2.0", - "swagger-ui-react": "^4.11.0", "umi": "^3.5.0" }, "devDependencies": { @@ -104,7 +103,7 @@ "mockjs": "^1.1.0", "prettier": "^2.5.0", "stylelint": "^13.0.0", - "swagger-ui-react": "^3.52.0", + "swagger-ui-react": "^4.11.0", "typescript": "^4.5.0", "umi-serve": "^1.9.10" }, From a806c0135ce248f0eb67d7fc73600dc5f890113f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=B8=85?= Date: Tue, 10 May 2022 22:48:05 +0800 Subject: [PATCH 05/89] fix: fix typescript error --- package.json | 1 + src/components/NoticeIcon/NoticeList.tsx | 40 +++++++++---------- .../RightContent/AvatarDropdown.tsx | 7 ++-- 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/package.json b/package.json index f37a8c24..52c7c32e 100644 --- a/package.json +++ b/package.json @@ -77,6 +77,7 @@ "devDependencies": { "@ant-design/pro-cli": "^2.1.0", "@playwright/test": "^1.17.0", + "@types/classnames": "^2.3.1", "@types/express": "^4.17.0", "@types/history": "^4.7.0", "@types/jest": "^26.0.0", diff --git a/src/components/NoticeIcon/NoticeList.tsx b/src/components/NoticeIcon/NoticeList.tsx index 5face399..7afae9fb 100644 --- a/src/components/NoticeIcon/NoticeList.tsx +++ b/src/components/NoticeIcon/NoticeList.tsx @@ -61,30 +61,30 @@ const NoticeList: React.FC = ({ ) : null; return ( - { onClick?.(item); }} > - - {item.title} -
{item.extra}
- - } - description={ -
-
{item.description}
-
{item.datetime}
-
- } - /> -
+ + + {item.title} +
{item.extra}
+ + } + description={ +
+
{item.description}
+
{item.datetime}
+
+ } + /> +
+ ); }} /> diff --git a/src/components/RightContent/AvatarDropdown.tsx b/src/components/RightContent/AvatarDropdown.tsx index af29ae11..1edc225a 100644 --- a/src/components/RightContent/AvatarDropdown.tsx +++ b/src/components/RightContent/AvatarDropdown.tsx @@ -7,6 +7,7 @@ import HeaderDropdown from '../HeaderDropdown'; import styles from './index.less'; import { outLogin } from '@/services/ant-design-pro/api'; import type { MenuInfo } from 'rc-menu/lib/interface'; +import type { ItemType } from 'antd/lib/menu/hooks/useItems'; export type GlobalHeaderRightProps = { menu?: boolean; @@ -68,7 +69,7 @@ const AvatarDropdown: React.FC = ({ menu }) => { return loading; } - const menuItems = [ + const menuItems: ItemType[] = [ ...(menu ? [ { @@ -82,7 +83,7 @@ const AvatarDropdown: React.FC = ({ menu }) => { label: '个人设置', }, { - type: 'divider', + type: 'divider' as const, }, ] : []), @@ -96,7 +97,7 @@ const AvatarDropdown: React.FC = ({ menu }) => { const menuHeaderDropdown = ( ); - + return ( From f648a6e7f6cdb67be8b3c3d69efdba7acbfc322b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=B8=85?= Date: Fri, 20 May 2022 16:35:48 +0800 Subject: [PATCH 06/89] chore: use @ant-design/pro-components --- config/defaultSettings.ts | 2 +- package.json | 6 +----- src/app.tsx | 5 ++--- src/components/Footer/index.tsx | 2 +- src/locales/bn-BD/pages.ts | 2 -- src/locales/en-US/pages.ts | 2 -- src/locales/fa-IR/pages.ts | 2 -- src/locales/id-ID/pages.ts | 2 -- src/locales/ja-JP/pages.ts | 2 -- src/locales/pt-BR/pages.ts | 2 -- src/locales/zh-CN/pages.ts | 2 -- src/pages/Admin.tsx | 2 +- src/pages/TableList/components/UpdateForm.tsx | 2 +- src/pages/TableList/index.tsx | 16 ++++++++------ src/pages/Welcome.tsx | 21 ++----------------- src/pages/user/Login/index.tsx | 7 ++++++- 16 files changed, 25 insertions(+), 52 deletions(-) diff --git a/config/defaultSettings.ts b/config/defaultSettings.ts index 15397c6c..e2b22e1f 100644 --- a/config/defaultSettings.ts +++ b/config/defaultSettings.ts @@ -1,4 +1,4 @@ -import { Settings as LayoutSettings } from '@ant-design/pro-layout'; +import { Settings as LayoutSettings } from '@ant-design/pro-components'; const Settings: LayoutSettings & { pwa?: boolean; diff --git a/package.json b/package.json index 52c7c32e..128f493b 100644 --- a/package.json +++ b/package.json @@ -55,11 +55,7 @@ ], "dependencies": { "@ant-design/icons": "^4.7.0", - "@ant-design/pro-card": "^1.19.0", - "@ant-design/pro-descriptions": "^1.10.0", - "@ant-design/pro-form": "^1.64.0", - "@ant-design/pro-layout": "^6.35.0", - "@ant-design/pro-table": "^2.71.0", + "@ant-design/pro-components": "1.1.0", "@umijs/route-utils": "^2.0.0", "antd": "^4.20.0", "classnames": "^2.3.0", diff --git a/src/app.tsx b/src/app.tsx index 58571014..63e78141 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -1,6 +1,5 @@ -import type { Settings as LayoutSettings } from '@ant-design/pro-layout'; -import { SettingDrawer } from '@ant-design/pro-layout'; -import { PageLoading } from '@ant-design/pro-layout'; +import type { Settings as LayoutSettings } from '@ant-design/pro-components'; +import { SettingDrawer, PageLoading } from '@ant-design/pro-components'; import type { RunTimeLayoutConfig } from 'umi'; import { history, Link } from 'umi'; import RightContent from '@/components/RightContent'; diff --git a/src/components/Footer/index.tsx b/src/components/Footer/index.tsx index 4336de96..49fbbec6 100644 --- a/src/components/Footer/index.tsx +++ b/src/components/Footer/index.tsx @@ -1,6 +1,6 @@ import { useIntl } from 'umi'; import { GithubOutlined } from '@ant-design/icons'; -import { DefaultFooter } from '@ant-design/pro-layout'; +import { DefaultFooter } from '@ant-design/pro-components'; const Footer: React.FC = () => { const intl = useIntl(); diff --git a/src/locales/bn-BD/pages.ts b/src/locales/bn-BD/pages.ts index 726bd209..529900af 100644 --- a/src/locales/bn-BD/pages.ts +++ b/src/locales/bn-BD/pages.ts @@ -23,9 +23,7 @@ export default { 'pages.login.submit': 'প্রবেশ করুন', 'pages.login.loginWith': 'লগইন করতে পারেন:', 'pages.login.registerAccount': 'অ্যাকাউন্ট নিবন্ধন করুন', - 'pages.welcome.advancedComponent': 'অ্যাডভান্সড কম্পোনেন্ট', 'pages.welcome.link': 'স্বাগতম', - 'pages.welcome.advancedLayout': 'অ্যাডভান্সড লেআউট', 'pages.welcome.alertMessage': 'দ্রুত এবং শক্তিশালী ভারী শুল্ক উপাদান প্রকাশ করা হয়েছে।', 'pages.admin.subPage.title': 'এই পৃষ্ঠাটি কেবল অ্যাডমিন দ্বারা দেখা যাবে', 'pages.admin.subPage.alertMessage': diff --git a/src/locales/en-US/pages.ts b/src/locales/en-US/pages.ts index 3d617424..3557341c 100644 --- a/src/locales/en-US/pages.ts +++ b/src/locales/en-US/pages.ts @@ -23,9 +23,7 @@ export default { 'pages.login.submit': 'Login', 'pages.login.loginWith': 'Login with :', 'pages.login.registerAccount': 'Register Account', - 'pages.welcome.advancedComponent': 'Advanced Component', 'pages.welcome.link': 'Welcome', - 'pages.welcome.advancedLayout': 'Advanced Layout', 'pages.welcome.alertMessage': 'Faster and stronger heavy-duty components have been released.', 'pages.admin.subPage.title': 'This page can only be viewed by Admin', 'pages.admin.subPage.alertMessage': diff --git a/src/locales/fa-IR/pages.ts b/src/locales/fa-IR/pages.ts index d2782d3d..f5926112 100644 --- a/src/locales/fa-IR/pages.ts +++ b/src/locales/fa-IR/pages.ts @@ -20,9 +20,7 @@ export default { 'pages.login.submit': 'ارسال', 'pages.login.loginWith': 'وارد شوید با :', 'pages.login.registerAccount': 'ثبت نام', - 'pages.welcome.advancedComponent': 'مولفه پیشرفته', 'pages.welcome.link': 'خوش آمدید', - 'pages.welcome.advancedLayout': 'چیدمان پیشرفته', 'pages.welcome.alertMessage': 'اجزای سنگین تر سریعتر و قوی تر آزاد شده اند.', 'pages.admin.subPage.title': 'این صفحه فقط توسط مدیر قابل مشاهده است', 'pages.admin.subPage.alertMessage': diff --git a/src/locales/id-ID/pages.ts b/src/locales/id-ID/pages.ts index ebae874f..9db23144 100644 --- a/src/locales/id-ID/pages.ts +++ b/src/locales/id-ID/pages.ts @@ -21,9 +21,7 @@ export default { 'pages.login.submit': 'Masuk', 'pages.login.loginWith': 'Masuk dengan :', 'pages.login.registerAccount': 'Daftar Akun', - 'pages.welcome.advancedComponent': 'Formulir Lanjutan', 'pages.welcome.link': 'Selamat datang', - 'pages.welcome.advancedLayout': 'Tata letak Lanjutan', 'pages.welcome.alertMessage': 'Komponen heavy-duty yang lebih cepat dan lebih kuat telah dirilis.', 'pages.admin.subPage.title': 'Halaman ini hanya dapat dilihat oleh admin', diff --git a/src/locales/ja-JP/pages.ts b/src/locales/ja-JP/pages.ts index f438dbe6..d8b21956 100644 --- a/src/locales/ja-JP/pages.ts +++ b/src/locales/ja-JP/pages.ts @@ -21,9 +21,7 @@ export default { 'pages.login.submit': 'ログイン', 'pages.login.loginWith': 'その他のログイン方法:', 'pages.login.registerAccount': 'アカウント登録', - 'pages.welcome.advancedComponent': '高度なコンポーネント', 'pages.welcome.link': 'ようこそ', - 'pages.welcome.advancedLayout': '高度なレイアウト', 'pages.welcome.alertMessage': 'より高速で強力な頑丈なコンポーネントがリリースされました。', 'pages.admin.subPage.title': 'このページは管理者のみが表示できます', 'pages.admin.subPage.alertMessage': diff --git a/src/locales/pt-BR/pages.ts b/src/locales/pt-BR/pages.ts index 14f8a8dd..6d297faa 100644 --- a/src/locales/pt-BR/pages.ts +++ b/src/locales/pt-BR/pages.ts @@ -21,9 +21,7 @@ export default { 'pages.login.submit': 'Enviar', 'pages.login.loginWith': 'Login com :', 'pages.login.registerAccount': 'Registra Conta', - 'pages.welcome.advancedComponent': 'Componente Avançado', 'pages.welcome.link': 'Bem-vindo', - 'pages.welcome.advancedLayout': 'Layout Avançado', 'pages.welcome.alertMessage': 'Componentes pesados mais rápidos e mais fortes foram lançados.', 'pages.admin.subPage.title': 'Esta página só pode ser vista pelo Admin', 'pages.admin.subPage.alertMessage': diff --git a/src/locales/zh-CN/pages.ts b/src/locales/zh-CN/pages.ts index adb36f4d..7fa751fa 100644 --- a/src/locales/zh-CN/pages.ts +++ b/src/locales/zh-CN/pages.ts @@ -22,9 +22,7 @@ export default { 'pages.login.submit': '登录', 'pages.login.loginWith': '其他登录方式 :', 'pages.login.registerAccount': '注册账户', - 'pages.welcome.advancedComponent': '高级表格', 'pages.welcome.link': '欢迎使用', - 'pages.welcome.advancedLayout': '高级布局', 'pages.welcome.alertMessage': '更快更强的重型组件,已经发布。', 'pages.admin.subPage.title': ' 这个页面只有 admin 权限才能查看', 'pages.admin.subPage.alertMessage': 'umi ui 现已发布,欢迎使用 npm run ui 启动体验。', diff --git a/src/pages/Admin.tsx b/src/pages/Admin.tsx index d8922fa2..06481fd3 100644 --- a/src/pages/Admin.tsx +++ b/src/pages/Admin.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { HeartTwoTone, SmileTwoTone } from '@ant-design/icons'; import { Card, Typography, Alert } from 'antd'; -import { PageHeaderWrapper } from '@ant-design/pro-layout'; +import { PageHeaderWrapper } from '@ant-design/pro-components'; import { useIntl } from 'umi'; const Admin: React.FC = () => { diff --git a/src/pages/TableList/components/UpdateForm.tsx b/src/pages/TableList/components/UpdateForm.tsx index 058a1dfe..4c866526 100644 --- a/src/pages/TableList/components/UpdateForm.tsx +++ b/src/pages/TableList/components/UpdateForm.tsx @@ -7,7 +7,7 @@ import { StepsForm, ProFormRadio, ProFormDateTimePicker, -} from '@ant-design/pro-form'; +} from '@ant-design/pro-components'; import { useIntl, FormattedMessage } from 'umi'; export type FormValueType = { diff --git a/src/pages/TableList/index.tsx b/src/pages/TableList/index.tsx index 7a5d0caa..a9595ace 100644 --- a/src/pages/TableList/index.tsx +++ b/src/pages/TableList/index.tsx @@ -2,12 +2,16 @@ import { PlusOutlined } from '@ant-design/icons'; import { Button, message, Input, Drawer } from 'antd'; import React, { useState, useRef } from 'react'; import { useIntl, FormattedMessage } from 'umi'; -import { PageContainer, FooterToolbar } from '@ant-design/pro-layout'; -import type { ProColumns, ActionType } from '@ant-design/pro-table'; -import ProTable from '@ant-design/pro-table'; -import { ModalForm, ProFormText, ProFormTextArea } from '@ant-design/pro-form'; -import type { ProDescriptionsItemProps } from '@ant-design/pro-descriptions'; -import ProDescriptions from '@ant-design/pro-descriptions'; +import { + PageContainer, + FooterToolbar, + ProDescriptions, + ProTable, + ModalForm, + ProFormText, + ProFormTextArea, +} from '@ant-design/pro-components'; +import type { ProColumns, ActionType, ProDescriptionsItemProps } from '@ant-design/pro-components'; import type { FormValueType } from './components/UpdateForm'; import UpdateForm from './components/UpdateForm'; import { rule, addRule, updateRule, removeRule } from '@/services/ant-design-pro/api'; diff --git a/src/pages/Welcome.tsx b/src/pages/Welcome.tsx index 9041b181..f181e15d 100644 --- a/src/pages/Welcome.tsx +++ b/src/pages/Welcome.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { PageContainer } from '@ant-design/pro-layout'; +import { PageContainer } from '@ant-design/pro-components'; import { Card, Alert, Typography } from 'antd'; import { useIntl, FormattedMessage } from 'umi'; import styles from './Welcome.less'; @@ -32,7 +32,6 @@ const Welcome: React.FC = () => { }} /> - {' '} { - yarn add @ant-design/pro-table - - {' '} - - - - - yarn add @ant-design/pro-layout + yarn add @ant-design/pro-components ); diff --git a/src/pages/user/Login/index.tsx b/src/pages/user/Login/index.tsx index 7d0fe352..88c4441a 100644 --- a/src/pages/user/Login/index.tsx +++ b/src/pages/user/Login/index.tsx @@ -8,7 +8,12 @@ import { } from '@ant-design/icons'; import { Alert, message, Tabs } from 'antd'; import React, { useState } from 'react'; -import { ProFormCaptcha, ProFormCheckbox, ProFormText, LoginForm } from '@ant-design/pro-form'; +import { + ProFormCaptcha, + ProFormCheckbox, + ProFormText, + LoginForm, +} from '@ant-design/pro-components'; import { useIntl, history, FormattedMessage, SelectLang, useModel } from 'umi'; import Footer from '@/components/Footer'; import { login } from '@/services/ant-design-pro/api'; From d3f021945e6c1b6a720d564e85eeb2910cad5437 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=B8=85?= Date: Fri, 20 May 2022 23:27:09 +0800 Subject: [PATCH 07/89] fix: use @umijs/fabric new version --- package.json | 4 ++-- src/app.tsx | 10 +++++----- src/components/Footer/index.tsx | 2 +- src/components/HeaderDropdown/index.tsx | 4 ++-- src/components/HeaderSearch/index.tsx | 5 ++--- src/components/NoticeIcon/NoticeIcon.tsx | 6 +++--- src/components/NoticeIcon/NoticeList.tsx | 3 +-- src/components/NoticeIcon/index.tsx | 9 ++++----- src/components/RightContent/AvatarDropdown.tsx | 10 +++++----- src/components/RightContent/index.tsx | 6 +++--- src/components/index.md | 9 ++++----- src/e2e/baseLayout.e2e.spec.ts | 2 +- src/locales/fa-IR.ts | 2 +- src/locales/id-ID.ts | 2 +- src/locales/ja-JP.ts | 6 +++--- src/locales/pt-BR.ts | 2 +- src/locales/zh-CN.ts | 2 +- src/pages/Admin.tsx | 4 ++-- src/pages/TableList/components/UpdateForm.tsx | 10 +++++----- src/pages/TableList/index.tsx | 16 ++++++++-------- src/pages/Welcome.tsx | 6 +++--- src/pages/user/Login/index.tsx | 15 +++++++-------- 22 files changed, 65 insertions(+), 70 deletions(-) diff --git a/package.json b/package.json index 128f493b..9bb5047c 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ ], "dependencies": { "@ant-design/icons": "^4.7.0", - "@ant-design/pro-components": "1.1.0", + "@ant-design/pro-components": "1.1.1", "@umijs/route-utils": "^2.0.0", "antd": "^4.20.0", "classnames": "^2.3.0", @@ -81,7 +81,7 @@ "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", "@types/react-helmet": "^6.1.0", - "@umijs/fabric": "^2.8.0", + "@umijs/fabric": "^2.11.1", "@umijs/openapi": "^1.3.0", "@umijs/plugin-blocks": "^2.2.0", "@umijs/plugin-esbuild": "^1.4.0", diff --git a/src/app.tsx b/src/app.tsx index 63e78141..f72703eb 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -1,12 +1,12 @@ +import Footer from '@/components/Footer'; +import RightContent from '@/components/RightContent'; +import { BookOutlined, LinkOutlined } from '@ant-design/icons'; import type { Settings as LayoutSettings } from '@ant-design/pro-components'; -import { SettingDrawer, PageLoading } from '@ant-design/pro-components'; +import { PageLoading, SettingDrawer } from '@ant-design/pro-components'; import type { RunTimeLayoutConfig } from 'umi'; import { history, Link } from 'umi'; -import RightContent from '@/components/RightContent'; -import Footer from '@/components/Footer'; -import { currentUser as queryCurrentUser } from './services/ant-design-pro/api'; -import { BookOutlined, LinkOutlined } from '@ant-design/icons'; import defaultSettings from '../config/defaultSettings'; +import { currentUser as queryCurrentUser } from './services/ant-design-pro/api'; const isDev = process.env.NODE_ENV === 'development'; const loginPath = '/user/login'; diff --git a/src/components/Footer/index.tsx b/src/components/Footer/index.tsx index 49fbbec6..d5b58c7e 100644 --- a/src/components/Footer/index.tsx +++ b/src/components/Footer/index.tsx @@ -1,6 +1,6 @@ -import { useIntl } from 'umi'; import { GithubOutlined } from '@ant-design/icons'; import { DefaultFooter } from '@ant-design/pro-components'; +import { useIntl } from 'umi'; const Footer: React.FC = () => { const intl = useIntl(); diff --git a/src/components/HeaderDropdown/index.tsx b/src/components/HeaderDropdown/index.tsx index 45af90ae..714ff761 100644 --- a/src/components/HeaderDropdown/index.tsx +++ b/src/components/HeaderDropdown/index.tsx @@ -1,7 +1,7 @@ -import type { DropDownProps } from 'antd/es/dropdown'; import { Dropdown } from 'antd'; -import React from 'react'; +import type { DropDownProps } from 'antd/es/dropdown'; import classNames from 'classnames'; +import React from 'react'; import styles from './index.less'; export type HeaderDropdownProps = { diff --git a/src/components/HeaderSearch/index.tsx b/src/components/HeaderSearch/index.tsx index d282de14..2a03b4e2 100644 --- a/src/components/HeaderSearch/index.tsx +++ b/src/components/HeaderSearch/index.tsx @@ -1,11 +1,10 @@ import { SearchOutlined } from '@ant-design/icons'; import type { InputRef } from 'antd'; import { AutoComplete, Input } from 'antd'; -import useMergedState from 'rc-util/es/hooks/useMergedState'; import type { AutoCompleteProps } from 'antd/es/auto-complete'; -import React, { useRef } from 'react'; - import classNames from 'classnames'; +import useMergedState from 'rc-util/es/hooks/useMergedState'; +import React, { useRef } from 'react'; import styles from './index.less'; export type HeaderSearchProps = { diff --git a/src/components/NoticeIcon/NoticeIcon.tsx b/src/components/NoticeIcon/NoticeIcon.tsx index 7a530c05..20607b57 100644 --- a/src/components/NoticeIcon/NoticeIcon.tsx +++ b/src/components/NoticeIcon/NoticeIcon.tsx @@ -1,12 +1,12 @@ import { BellOutlined } from '@ant-design/icons'; import { Badge, Spin, Tabs } from 'antd'; +import classNames from 'classnames'; import useMergedState from 'rc-util/es/hooks/useMergedState'; import React from 'react'; -import classNames from 'classnames'; -import type { NoticeIconTabProps } from './NoticeList'; -import NoticeList from './NoticeList'; import HeaderDropdown from '../HeaderDropdown'; import styles from './index.less'; +import type { NoticeIconTabProps } from './NoticeList'; +import NoticeList from './NoticeList'; const { TabPane } = Tabs; diff --git a/src/components/NoticeIcon/NoticeList.tsx b/src/components/NoticeIcon/NoticeList.tsx index 7afae9fb..f53aa3d4 100644 --- a/src/components/NoticeIcon/NoticeList.tsx +++ b/src/components/NoticeIcon/NoticeList.tsx @@ -1,7 +1,6 @@ import { Avatar, List } from 'antd'; - -import React from 'react'; import classNames from 'classnames'; +import React from 'react'; import styles from './NoticeList.less'; export type NoticeIconTabProps = { diff --git a/src/components/NoticeIcon/index.tsx b/src/components/NoticeIcon/index.tsx index 326a363b..a549dc94 100644 --- a/src/components/NoticeIcon/index.tsx +++ b/src/components/NoticeIcon/index.tsx @@ -1,12 +1,11 @@ -import { useEffect, useState } from 'react'; -import { Tag, message } from 'antd'; +import { getNotices } from '@/services/ant-design-pro/api'; +import { message, Tag } from 'antd'; import { groupBy } from 'lodash'; import moment from 'moment'; +import { useEffect, useState } from 'react'; import { useModel, useRequest } from 'umi'; -import { getNotices } from '@/services/ant-design-pro/api'; - -import NoticeIcon from './NoticeIcon'; import styles from './index.less'; +import NoticeIcon from './NoticeIcon'; export type GlobalHeaderRightProps = { fetchingNotices?: boolean; diff --git a/src/components/RightContent/AvatarDropdown.tsx b/src/components/RightContent/AvatarDropdown.tsx index 1edc225a..83669e9e 100644 --- a/src/components/RightContent/AvatarDropdown.tsx +++ b/src/components/RightContent/AvatarDropdown.tsx @@ -1,13 +1,13 @@ -import React, { useCallback } from 'react'; +import { outLogin } from '@/services/ant-design-pro/api'; import { LogoutOutlined, SettingOutlined, UserOutlined } from '@ant-design/icons'; import { Avatar, Menu, Spin } from 'antd'; -import { history, useModel } from 'umi'; +import type { ItemType } from 'antd/lib/menu/hooks/useItems'; import { stringify } from 'querystring'; +import type { MenuInfo } from 'rc-menu/lib/interface'; +import React, { useCallback } from 'react'; +import { history, useModel } from 'umi'; import HeaderDropdown from '../HeaderDropdown'; import styles from './index.less'; -import { outLogin } from '@/services/ant-design-pro/api'; -import type { MenuInfo } from 'rc-menu/lib/interface'; -import type { ItemType } from 'antd/lib/menu/hooks/useItems'; export type GlobalHeaderRightProps = { menu?: boolean; diff --git a/src/components/RightContent/index.tsx b/src/components/RightContent/index.tsx index 9463b1f1..9696dc22 100644 --- a/src/components/RightContent/index.tsx +++ b/src/components/RightContent/index.tsx @@ -1,9 +1,9 @@ -import { Space } from 'antd'; import { QuestionCircleOutlined } from '@ant-design/icons'; +import { Space } from 'antd'; import React from 'react'; -import { useModel, SelectLang } from 'umi'; -import Avatar from './AvatarDropdown'; +import { SelectLang, useModel } from 'umi'; import HeaderSearch from '../HeaderSearch'; +import Avatar from './AvatarDropdown'; import styles from './index.less'; export type SiderTheme = 'light' | 'dark'; diff --git a/src/components/index.md b/src/components/index.md index 408da93a..d75715c9 100644 --- a/src/components/index.md +++ b/src/components/index.md @@ -17,8 +17,8 @@ sidemenu: false /** * background: '#f0f2f5' */ -import React from 'react'; import Footer from '@/components/Footer'; +import React from 'react'; export default () =>
; ``` @@ -31,9 +31,9 @@ HeaderDropdown 是 antd Dropdown 的封装,但是增加了移动端的特殊 /** * background: '#f0f2f5' */ +import HeaderDropdown from '@/components/HeaderDropdown'; import { Button, Menu } from 'antd'; import React from 'react'; -import HeaderDropdown from '@/components/HeaderDropdown'; export default () => { const menuHeaderDropdown = ( @@ -60,9 +60,8 @@ export default () => { /** * background: '#f0f2f5' */ -import { Button, Menu } from 'antd'; -import React from 'react'; import HeaderSearch from '@/components/HeaderSearch'; +import React from 'react'; export default () => { return ( @@ -112,9 +111,9 @@ export default () => { /** * background: '#f0f2f5' */ +import NoticeIcon from '@/components/NoticeIcon/NoticeIcon'; import { message } from 'antd'; import React from 'react'; -import NoticeIcon from '@/components/NoticeIcon/NoticeIcon'; export default () => { const list = [ diff --git a/src/e2e/baseLayout.e2e.spec.ts b/src/e2e/baseLayout.e2e.spec.ts index e1d62c71..cb14fd57 100644 --- a/src/e2e/baseLayout.e2e.spec.ts +++ b/src/e2e/baseLayout.e2e.spec.ts @@ -1,5 +1,5 @@ import type { Page } from '@playwright/test'; -import { test, expect } from '@playwright/test'; +import { expect, test } from '@playwright/test'; const { uniq } = require('lodash'); const RouterConfig = require('../../config/routes').default; diff --git a/src/locales/fa-IR.ts b/src/locales/fa-IR.ts index 98445785..c27343dc 100644 --- a/src/locales/fa-IR.ts +++ b/src/locales/fa-IR.ts @@ -1,10 +1,10 @@ import component from './fa-IR/component'; import globalHeader from './fa-IR/globalHeader'; import menu from './fa-IR/menu'; +import pages from './fa-IR/pages'; import pwa from './fa-IR/pwa'; import settingDrawer from './fa-IR/settingDrawer'; import settings from './fa-IR/settings'; -import pages from './fa-IR/pages'; export default { 'navBar.lang': 'زبان ها ', diff --git a/src/locales/id-ID.ts b/src/locales/id-ID.ts index 79100d43..aecd2bdc 100644 --- a/src/locales/id-ID.ts +++ b/src/locales/id-ID.ts @@ -1,10 +1,10 @@ import component from './id-ID/component'; import globalHeader from './id-ID/globalHeader'; import menu from './id-ID/menu'; +import pages from './id-ID/pages'; import pwa from './id-ID/pwa'; import settingDrawer from './id-ID/settingDrawer'; import settings from './id-ID/settings'; -import pages from './id-ID/pages'; export default { 'navbar.lang': 'Bahasa', diff --git a/src/locales/ja-JP.ts b/src/locales/ja-JP.ts index ed51f694..16028875 100644 --- a/src/locales/ja-JP.ts +++ b/src/locales/ja-JP.ts @@ -1,10 +1,10 @@ +import component from './ja-JP/component'; import globalHeader from './ja-JP/globalHeader'; import menu from './ja-JP/menu'; +import pages from './ja-JP/pages'; +import pwa from './ja-JP/pwa'; import settingDrawer from './ja-JP/settingDrawer'; import settings from './ja-JP/settings'; -import pwa from './ja-JP/pwa'; -import component from './ja-JP/component'; -import pages from './ja-JP/pages'; export default { 'navBar.lang': '言語', diff --git a/src/locales/pt-BR.ts b/src/locales/pt-BR.ts index 628dd9c5..d501a8a0 100644 --- a/src/locales/pt-BR.ts +++ b/src/locales/pt-BR.ts @@ -1,10 +1,10 @@ import component from './pt-BR/component'; import globalHeader from './pt-BR/globalHeader'; import menu from './pt-BR/menu'; +import pages from './pt-BR/pages'; import pwa from './pt-BR/pwa'; import settingDrawer from './pt-BR/settingDrawer'; import settings from './pt-BR/settings'; -import pages from './pt-BR/pages'; export default { 'navBar.lang': 'Idiomas', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index e4258ce8..76914899 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -1,10 +1,10 @@ import component from './zh-CN/component'; import globalHeader from './zh-CN/globalHeader'; import menu from './zh-CN/menu'; +import pages from './zh-CN/pages'; import pwa from './zh-CN/pwa'; import settingDrawer from './zh-CN/settingDrawer'; import settings from './zh-CN/settings'; -import pages from './zh-CN/pages'; export default { 'navBar.lang': '语言', diff --git a/src/pages/Admin.tsx b/src/pages/Admin.tsx index 06481fd3..f55ddb32 100644 --- a/src/pages/Admin.tsx +++ b/src/pages/Admin.tsx @@ -1,7 +1,7 @@ -import React from 'react'; import { HeartTwoTone, SmileTwoTone } from '@ant-design/icons'; -import { Card, Typography, Alert } from 'antd'; import { PageHeaderWrapper } from '@ant-design/pro-components'; +import { Alert, Card, Typography } from 'antd'; +import React from 'react'; import { useIntl } from 'umi'; const Admin: React.FC = () => { diff --git a/src/pages/TableList/components/UpdateForm.tsx b/src/pages/TableList/components/UpdateForm.tsx index 4c866526..23cf87a3 100644 --- a/src/pages/TableList/components/UpdateForm.tsx +++ b/src/pages/TableList/components/UpdateForm.tsx @@ -1,14 +1,14 @@ -import React from 'react'; -import { Modal } from 'antd'; import { + ProFormDateTimePicker, + ProFormRadio, ProFormSelect, ProFormText, ProFormTextArea, StepsForm, - ProFormRadio, - ProFormDateTimePicker, } from '@ant-design/pro-components'; -import { useIntl, FormattedMessage } from 'umi'; +import { Modal } from 'antd'; +import React from 'react'; +import { FormattedMessage, useIntl } from 'umi'; export type FormValueType = { target?: string; diff --git a/src/pages/TableList/index.tsx b/src/pages/TableList/index.tsx index a9595ace..b16f1b9e 100644 --- a/src/pages/TableList/index.tsx +++ b/src/pages/TableList/index.tsx @@ -1,20 +1,20 @@ +import { addRule, removeRule, rule, updateRule } from '@/services/ant-design-pro/api'; import { PlusOutlined } from '@ant-design/icons'; -import { Button, message, Input, Drawer } from 'antd'; -import React, { useState, useRef } from 'react'; -import { useIntl, FormattedMessage } from 'umi'; +import type { ActionType, ProColumns, ProDescriptionsItemProps } from '@ant-design/pro-components'; import { - PageContainer, FooterToolbar, - ProDescriptions, - ProTable, ModalForm, + PageContainer, + ProDescriptions, ProFormText, ProFormTextArea, + ProTable, } from '@ant-design/pro-components'; -import type { ProColumns, ActionType, ProDescriptionsItemProps } from '@ant-design/pro-components'; +import { Button, Drawer, Input, message } from 'antd'; +import React, { useRef, useState } from 'react'; +import { FormattedMessage, useIntl } from 'umi'; import type { FormValueType } from './components/UpdateForm'; import UpdateForm from './components/UpdateForm'; -import { rule, addRule, updateRule, removeRule } from '@/services/ant-design-pro/api'; /** * @en-US Add node diff --git a/src/pages/Welcome.tsx b/src/pages/Welcome.tsx index f181e15d..32e24cc4 100644 --- a/src/pages/Welcome.tsx +++ b/src/pages/Welcome.tsx @@ -1,7 +1,7 @@ -import React from 'react'; import { PageContainer } from '@ant-design/pro-components'; -import { Card, Alert, Typography } from 'antd'; -import { useIntl, FormattedMessage } from 'umi'; +import { Alert, Card, Typography } from 'antd'; +import React from 'react'; +import { FormattedMessage, useIntl } from 'umi'; import styles from './Welcome.less'; const CodePreview: React.FC = ({ children }) => ( diff --git a/src/pages/user/Login/index.tsx b/src/pages/user/Login/index.tsx index 88c4441a..2770a6e2 100644 --- a/src/pages/user/Login/index.tsx +++ b/src/pages/user/Login/index.tsx @@ -1,3 +1,6 @@ +import Footer from '@/components/Footer'; +import { login } from '@/services/ant-design-pro/api'; +import { getFakeCaptcha } from '@/services/ant-design-pro/login'; import { AlipayCircleOutlined, LockOutlined, @@ -6,19 +9,15 @@ import { UserOutlined, WeiboCircleOutlined, } from '@ant-design/icons'; -import { Alert, message, Tabs } from 'antd'; -import React, { useState } from 'react'; import { + LoginForm, ProFormCaptcha, ProFormCheckbox, ProFormText, - LoginForm, } from '@ant-design/pro-components'; -import { useIntl, history, FormattedMessage, SelectLang, useModel } from 'umi'; -import Footer from '@/components/Footer'; -import { login } from '@/services/ant-design-pro/api'; -import { getFakeCaptcha } from '@/services/ant-design-pro/login'; - +import { Alert, message, Tabs } from 'antd'; +import React, { useState } from 'react'; +import { FormattedMessage, history, SelectLang, useIntl, useModel } from 'umi'; import styles from './index.less'; const LoginMessage: React.FC<{ From 2d900d4848b97afffdf0e626a60de2276f434d59 Mon Sep 17 00:00:00 2001 From: Naveen <172697+naveensrinivasan@users.noreply.github.com> Date: Tue, 31 May 2022 21:53:50 -0500 Subject: [PATCH 08/89] chore: Set permissions for GitHub actions (#9891) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Restrict the GitHub token permissions only to the required ones; this way, even if the attackers will succeed in compromising your workflow, they won’t be able to do much. - Included permissions for the action. https://github.com/ossf/scorecard/blob/main/docs/checks.md#token-permissions https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#permissions https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs [Keeping your GitHub Actions and workflows secure Part 1: Preventing pwn requests](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/) Signed-off-by: naveen <172697+naveensrinivasan@users.noreply.github.com> --- .github/workflows/ci.yml | 3 +++ .github/workflows/preview-build.yml | 3 +++ .github/workflows/preview-deploy.yml | 11 +++++++++++ .github/workflows/preview-start.yml | 6 ++++++ .github/workflows/rebase.yml | 6 ++++++ 5 files changed, 29 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 101ea9ea..14883fb7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,6 +2,9 @@ name: Node CI on: [push, pull_request] +permissions: + contents: read + jobs: build: runs-on: ${{ matrix.os }} diff --git a/.github/workflows/preview-build.yml b/.github/workflows/preview-build.yml index e90dae65..d8667a5d 100644 --- a/.github/workflows/preview-build.yml +++ b/.github/workflows/preview-build.yml @@ -4,6 +4,9 @@ on: pull_request: types: [opened, synchronize, reopened] +permissions: + contents: read + jobs: build-preview: runs-on: ubuntu-latest diff --git a/.github/workflows/preview-deploy.yml b/.github/workflows/preview-deploy.yml index 11c9ff54..5fc642fb 100644 --- a/.github/workflows/preview-deploy.yml +++ b/.github/workflows/preview-deploy.yml @@ -6,8 +6,15 @@ on: types: - completed +permissions: + contents: read + jobs: success: + permissions: + actions: read # for dawidd6/action-download-artifact to query and download artifacts + issues: write # for actions-cool/maintain-one-comment to modify or create issue comments + pull-requests: write # for actions-cool/maintain-one-comment to modify or create PR comments runs-on: ubuntu-latest if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' steps: @@ -62,6 +69,10 @@ jobs: number: ${{ steps.pr.outputs.id }} failed: + permissions: + actions: read # for dawidd6/action-download-artifact to query and download artifacts + issues: write # for actions-cool/maintain-one-comment to modify or create issue comments + pull-requests: write # for actions-cool/maintain-one-comment to modify or create PR comments runs-on: ubuntu-latest if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'failure' steps: diff --git a/.github/workflows/preview-start.yml b/.github/workflows/preview-start.yml index f9ccd1df..98d2f126 100644 --- a/.github/workflows/preview-start.yml +++ b/.github/workflows/preview-start.yml @@ -2,8 +2,14 @@ name: Preview Start on: pull_request_target +permissions: + contents: read + jobs: preview: + permissions: + issues: write # for actions-cool/maintain-one-comment to modify or create issue comments + pull-requests: write # for actions-cool/maintain-one-comment to modify or create PR comments runs-on: ubuntu-latest steps: - name: create diff --git a/.github/workflows/rebase.yml b/.github/workflows/rebase.yml index f850ccc8..a5bbc4c6 100644 --- a/.github/workflows/rebase.yml +++ b/.github/workflows/rebase.yml @@ -2,8 +2,14 @@ on: issue_comment: types: [created] name: Automatic Rebase +permissions: + contents: read + jobs: rebase: + permissions: + contents: write # for cirrus-actions/rebase to push code to rebase + pull-requests: read # for cirrus-actions/rebase to get info about PR name: Rebase if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/rebase') runs-on: ubuntu-latest From 383bc278c345a75d633ba56e51f2c86545dfcbb2 Mon Sep 17 00:00:00 2001 From: DreamPWJ Date: Thu, 16 Jun 2022 13:21:48 +0800 Subject: [PATCH 09/89] =?UTF-8?q?fix:=20ipv6=E7=BD=91=E7=BB=9C=E9=80=82?= =?UTF-8?q?=E9=85=8D=E4=BB=A5=E5=8F=8A=E5=AE=B9=E5=99=A8=E5=86=85=E5=A4=96?= =?UTF-8?q?=E7=AB=AF=E5=8F=A3=E4=B8=8D=E4=B8=80=E8=87=B4=E6=83=85=E5=86=B5?= =?UTF-8?q?=E9=87=8D=E5=AE=9A=E5=90=91=E7=AB=AF=E5=8F=A3=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E6=88=90=E9=BB=98=E8=AE=A4=E7=9A=8480=20(#9911)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/nginx.conf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docker/nginx.conf b/docker/nginx.conf index cdf0f59b..c4085845 100644 --- a/docker/nginx.conf +++ b/docker/nginx.conf @@ -1,5 +1,8 @@ server { listen 80; + listen [::]:80; + absolute_redirect off; + # gzip config gzip on; gzip_min_length 1k; From 9e471da19ff9c5c7965c9948541392312e7f0673 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Sat, 18 Jun 2022 12:57:10 +0800 Subject: [PATCH 10/89] chore: use swagger-ui-dist --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 9bb5047c..2ef0d9f3 100644 --- a/package.json +++ b/package.json @@ -82,10 +82,10 @@ "@types/react-dom": "^17.0.0", "@types/react-helmet": "^6.1.0", "@umijs/fabric": "^2.11.1", - "@umijs/openapi": "^1.3.0", + "@umijs/openapi": "^1.6.0", "@umijs/plugin-blocks": "^2.2.0", "@umijs/plugin-esbuild": "^1.4.0", - "@umijs/plugin-openapi": "^1.3.0", + "@umijs/plugin-openapi": "^1.3.3", "@umijs/preset-ant-design-pro": "^1.3.0", "@umijs/preset-dumi": "^1.1.0", "@umijs/preset-react": "^2.1.0", @@ -100,7 +100,7 @@ "mockjs": "^1.1.0", "prettier": "^2.5.0", "stylelint": "^13.0.0", - "swagger-ui-react": "^4.11.0", + "swagger-ui-dist": "^4.12.0", "typescript": "^4.5.0", "umi-serve": "^1.9.10" }, From bc23134d7e6ceceaa128f49368a81f5a264a803a Mon Sep 17 00:00:00 2001 From: MH Riyad <33756156+includexxx@users.noreply.github.com> Date: Sun, 26 Jun 2022 11:23:37 +0600 Subject: [PATCH 11/89] Update question.md (#9953) --- .github/ISSUE_TEMPLATE/question.md | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md index ffdc040d..6878a6a6 100644 --- a/.github/ISSUE_TEMPLATE/question.md +++ b/.github/ISSUE_TEMPLATE/question.md @@ -1,25 +1,7 @@ --- -name: '疑问或需要帮助 ❓' -about: 对 Ant Design Pro 使用的疑问或需要帮助 -title: '🧐[问题]' -labels: '🧐question' +name: unit testing +about: unit test full component including umi , redux , store +title: Can you give example of unit testing of a full component including umi , redux , store? +labels: unit testing assignees: '' ---- - -### 🧐 问题描述 - - - -### 💻 示例代码 - - - -### 🚑 其他信息 - From a8181ed48236f7dd3d5f4c505db9f8aeeb76d1f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=B8=85?= Date: Sun, 26 Jun 2022 13:28:50 +0800 Subject: [PATCH 12/89] Revert "Update question.md (#9953)" (#9957) This reverts commit bc23134d7e6ceceaa128f49368a81f5a264a803a. --- .github/ISSUE_TEMPLATE/question.md | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md index 6878a6a6..ffdc040d 100644 --- a/.github/ISSUE_TEMPLATE/question.md +++ b/.github/ISSUE_TEMPLATE/question.md @@ -1,7 +1,25 @@ --- -name: unit testing -about: unit test full component including umi , redux , store -title: Can you give example of unit testing of a full component including umi , redux , store? -labels: unit testing +name: '疑问或需要帮助 ❓' +about: 对 Ant Design Pro 使用的疑问或需要帮助 +title: '🧐[问题]' +labels: '🧐question' assignees: '' +--- + +### 🧐 问题描述 + + + +### 💻 示例代码 + + + +### 🚑 其他信息 + From 486635ef7675226a17335aa49a6d0c80880bfa0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Sun, 26 Jun 2022 13:33:10 +0800 Subject: [PATCH 13/89] docs: upate ISSUE_TEMPLATE --- .github/ISSUE_TEMPLATE/bug_report.md | 16 ++++++++++------ .github/ISSUE_TEMPLATE/feature_request.md | 13 ++++++++----- .github/ISSUE_TEMPLATE/question.md | 23 ++++++++++++++++------- .github/workflows/preview-start.yml | 4 ++-- 4 files changed, 36 insertions(+), 20 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index e408f490..5cb26924 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,8 +1,8 @@ --- -name: '报告Bug 🐛' +name: '报告 Bug | Report bug 🐛' about: 报告 Ant Design Pro 的 bug -title: '🐛[BUG]' -labels: '🐛bug' +title: '🐛 [BUG]' +labels: '🐛 bug' assignees: '' --- @@ -10,24 +10,28 @@ assignees: '' -### 📷 复现步骤 +### 📷 复现步骤 | Recurrence steps -### 🏞 期望结果 +### 🏞 期望结果 | Expected results -### 💻 复现代码 +### 💻 复现代码 | Recurrence code ### © 版本信息 diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 69a8b366..545431d2 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,25 +1,28 @@ --- -name: '功能需求 ✨' +name: '功能需求 | Feature Requirements ✨' about: 对 Ant Design Pro 的需求或建议 title: '👑 [需求]' -labels: '👑Feature Request' +labels: '👑 Feature Request' assignees: '' --- -### 🥰 需求描述 +### 🥰 需求描述 | Requirements description -### 🧐 解决方案 +### 🧐 解决方案 | Solution -### 🚑 其他信息 +### 🚑 其他信息 | Other information diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md index ffdc040d..f0fbe7dd 100644 --- a/.github/ISSUE_TEMPLATE/question.md +++ b/.github/ISSUE_TEMPLATE/question.md @@ -1,25 +1,34 @@ --- -name: '疑问或需要帮助 ❓' +name: '疑问或需要帮助 | Questions or need help ❓' about: 对 Ant Design Pro 使用的疑问或需要帮助 -title: '🧐[问题]' -labels: '🧐question' +title: '🧐[问题 | question]' +labels: '🧐 question' assignees: '' --- -### 🧐 问题描述 +### 🧐 问题描述 | Problem description -### 💻 示例代码 +### 💻 示例代码 | Sample code -### 🚑 其他信息 +### 🚑 其他信息 | Other information + +OS: + +Node: + +浏览器 | browser: diff --git a/.github/workflows/preview-start.yml b/.github/workflows/preview-start.yml index 98d2f126..39f561d1 100644 --- a/.github/workflows/preview-start.yml +++ b/.github/workflows/preview-start.yml @@ -8,8 +8,8 @@ permissions: jobs: preview: permissions: - issues: write # for actions-cool/maintain-one-comment to modify or create issue comments - pull-requests: write # for actions-cool/maintain-one-comment to modify or create PR comments + issues: write # for actions-cool/maintain-one-comment to modify or create issue comments + pull-requests: write # for actions-cool/maintain-one-comment to modify or create PR comments runs-on: ubuntu-latest steps: - name: create From df51053a21fbd01b10765a8c6c7fe24c0b38dac4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=B8=85?= Date: Mon, 27 Jun 2022 11:10:46 +0800 Subject: [PATCH 14/89] feat: support umi@4 (#9956) * chore: prettier all code * chore: prettier all code * chore: prettier all code * chore: prettier all code * chore: prettier all code * fix error * remove Deploy CI * remove ie * remove unuse code * remove Deploy CI --- .dockerignore | 35 ----- .github/workflows/deploy.yml | 31 ---- .gitpod.yml | 6 - .stylelintrc.js | 3 - .vscode/extensions.json | 7 +- Dockerfile | 14 -- Dockerfile.dev | 12 -- Dockerfile.hub | 27 ---- README.ar-DZ.md | 14 +- README.fr-FR.md | 14 +- README.ja-JP.md | 14 +- README.md | 14 +- README.pt-BR.md | 14 +- README.ru-RU.md | 6 +- README.tr-TR.md | 14 +- README.zh-CN.md | 7 +- config/config.dev.ts | 15 -- config/config.ts | 28 ++-- docker/docker-compose.dev.yml | 14 -- docker/docker-compose.yml | 21 --- docker/nginx.conf | 24 --- mock/notices.ts | 16 +- package.json | 54 +++---- src/app.tsx | 18 +-- src/components/Footer/index.tsx | 5 +- src/components/NoticeIcon/index.tsx | 2 +- .../RightContent/AvatarDropdown.tsx | 8 +- src/components/RightContent/index.less | 11 -- src/components/RightContent/index.tsx | 2 +- src/components/index.md | 4 - src/global.less | 7 - src/global.tsx | 2 +- src/pages/404.tsx | 2 +- src/pages/Admin.tsx | 2 +- src/pages/TableList/components/UpdateForm.tsx | 2 +- src/pages/TableList/index.tsx | 2 +- src/pages/Welcome.tsx | 2 +- src/pages/user/Login/index.less | 6 +- src/pages/user/Login/index.tsx | 32 ++-- src/services/ant-design-pro/api.ts | 2 +- src/services/ant-design-pro/login.ts | 2 +- src/services/swagger/pet.ts | 137 ++++++++---------- src/services/swagger/store.ts | 24 ++- src/services/swagger/typings.d.ts | 110 ++++++++++---- src/services/swagger/user.ts | 108 ++++++-------- 45 files changed, 308 insertions(+), 586 deletions(-) delete mode 100644 .dockerignore delete mode 100644 .github/workflows/deploy.yml delete mode 100644 .gitpod.yml delete mode 100644 .stylelintrc.js delete mode 100644 Dockerfile delete mode 100644 Dockerfile.dev delete mode 100644 Dockerfile.hub delete mode 100644 config/config.dev.ts delete mode 100644 docker/docker-compose.dev.yml delete mode 100644 docker/docker-compose.yml delete mode 100644 docker/nginx.conf diff --git a/.dockerignore b/.dockerignore deleted file mode 100644 index 8e90ca6d..00000000 --- a/.dockerignore +++ /dev/null @@ -1,35 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -**/node_modules -/src/utils/request-temp.js - -# production -/.vscode - -# misc -.DS_Store -npm-debug.log* -yarn-error.log - -/coverage -.idea -yarn.lock -package-lock.json -*bak -.vscode - -# visual studio code -.history -*.log - -functions/mock -.temp/** - -# umi -.umi -.umi-production - -# screenshot -screenshot -.firebase \ No newline at end of file diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml deleted file mode 100644 index bcaa437f..00000000 --- a/.github/workflows/deploy.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: Deploy CI -on: - push: - branches: - - master - -jobs: - build-and-deploy: - runs-on: ubuntu-latest - steps: - - name: checkout - uses: actions/checkout@master - - - name: install - run: yarn - - - name: plugins - run: yarn add umi-plugin-pro - - - name: fetch-blocks - run: yarn run pro fetch-blocks - - - name: site - run: npm run build - - - name: Deploy - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./dist - force_orphan: true diff --git a/.gitpod.yml b/.gitpod.yml deleted file mode 100644 index 32d8e645..00000000 --- a/.gitpod.yml +++ /dev/null @@ -1,6 +0,0 @@ -ports: - - port: 8000 - onOpen: open-preview -tasks: - - init: npm install - command: npm start diff --git a/.stylelintrc.js b/.stylelintrc.js deleted file mode 100644 index a1184de4..00000000 --- a/.stylelintrc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - extends: [require.resolve('@umijs/fabric/dist/stylelint')], -}; diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 33f300da..164b332d 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,8 +1,3 @@ { - "recommendations": [ - "esbenp.prettier-vscode", - "dbaeumer.vscode-eslint", - "stylelint.vscode-stylelint", - "wangzy.sneak-mark" - ] + "recommendations": ["esbenp.prettier-vscode", "dbaeumer.vscode-eslint", "wangzy.sneak-mark"] } diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index f828e839..00000000 --- a/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM circleci/node:latest-browsers - -WORKDIR /usr/src/app/ -USER root -COPY package.json ./ -RUN yarn - -COPY ./ ./ - -RUN npm run test:e2e - -RUN npm run fetch:blocks - -CMD ["npm", "run", "build"] diff --git a/Dockerfile.dev b/Dockerfile.dev deleted file mode 100644 index 18446181..00000000 --- a/Dockerfile.dev +++ /dev/null @@ -1,12 +0,0 @@ -FROM node:latest - -WORKDIR /usr/src/app/ - -COPY package.json ./ -RUN npm install --silent --no-cache --registry=https://registry.npmmirror.com - -COPY ./ ./ - -RUN npm run fetch:blocks - -CMD ["npm", "run", "start"] diff --git a/Dockerfile.hub b/Dockerfile.hub deleted file mode 100644 index 94534d3e..00000000 --- a/Dockerfile.hub +++ /dev/null @@ -1,27 +0,0 @@ -FROM circleci/node:latest-browsers as builder - -WORKDIR /usr/src/app/ -USER root -COPY package.json ./ -RUN yarn - -COPY ./ ./ - -RUN npm run test:e2e - -RUN npm run fetch:blocks - -RUN npm run build - - -FROM nginx - -WORKDIR /usr/share/nginx/html/ - -COPY ./docker/nginx.conf /etc/nginx/conf.d/default.conf - -COPY --from=builder /usr/src/app/dist /usr/share/nginx/html/ - -EXPOSE 80 - -CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/README.ar-DZ.md b/README.ar-DZ.md index 2bb52a9a..dd4264d7 100644 --- a/README.ar-DZ.md +++ b/README.ar-DZ.md @@ -109,21 +109,13 @@ $ npm start # visit http://localhost:8000
-### استخدام ال Gitpod - -افتح المشروع في Gitpod (بيئة تطوير مجانية عبر الإنترنت لـ GitHub) وابدأ بكتابة الكود على الفور. - -[![افتح في Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/ant-design/ant-design-pro) - -المزيد من التعليمات في [توثيق](http://pro.ant.design/docs/getting-started). - ## دعم المتصفحات -المتصفحات الحديثة و IE11. +المتصفحات الحديثة و. -| [IE / Edge](http://godban.github.io/browsers-support-badges/)
IE / Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | [Opera](http://godban.github.io/browsers-support-badges/)
Opera | +| [Edge](http://godban.github.io/browsers-support-badges/)
Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | [Opera](http://godban.github.io/browsers-support-badges/)
Opera | | --- | --- | --- | --- | --- | -| IE11, Edge | last 2 versions | last 2 versions | last 2 versions | last 2 versions | +| Edge | last 2 versions | last 2 versions | last 2 versions | last 2 versions | ## المساهمة diff --git a/README.fr-FR.md b/README.fr-FR.md index fbb6ba8f..17da1bff 100644 --- a/README.fr-FR.md +++ b/README.fr-FR.md @@ -96,21 +96,13 @@ $ npm install $ npm start # visit http://localhost:8000 ``` -### Utilisation de Gitpod - -Ouvrez le projet avec Gitpod (environnement de développement gratuit pour GitHub) et commencez à coder immédiatement. - -[![Ouvrir dans Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/ant-design/ant-design-pro) - -Plus d'instructions dans la [documentation](http://pro.ant.design/docs/getting-started). - ## Support des navigateurs -Navigateurs modernes et IE11. +Navigateurs modernes. -| [IE / Edge](http://godban.github.io/browsers-support-badges/)
IE / Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | [Opera](http://godban.github.io/browsers-support-badges/)
Opera | +| [Edge](http://godban.github.io/browsers-support-badges/)
Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | [Opera](http://godban.github.io/browsers-support-badges/)
Opera | | --- | --- | --- | --- | --- | -| IE11, Edge | deux dernières versions | deux dernières versions | deux dernières versions | deux dernières versions | +| Edge | deux dernières versions | deux dernières versions | deux dernières versions | deux dernières versions | ## Contribution diff --git a/README.ja-JP.md b/README.ja-JP.md index 5355ec22..59fcaaf9 100644 --- a/README.ja-JP.md +++ b/README.ja-JP.md @@ -96,21 +96,13 @@ $ npm install $ npm start # http://localhost:8000 を開く ``` -### Gitpod を使う方法 - -Gitpod(GitHub 用の無料オンライン開発環境)でプロジェクトを開き、すぐにコーディングを開始できます。 - -[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/ant-design/ant-design-pro) - -その他の指示は [ドキュメント](http://pro.ant.design/docs/getting-started) を確認してください。 - ## サポートするブラウザー -モダンなブラウザと IE11。 +モダンなブラウザと。 -| [IE / Edge](http://godban.github.io/browsers-support-badges/)
IE / Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | [Opera](http://godban.github.io/browsers-support-badges/)
Opera | +| [Edge](http://godban.github.io/browsers-support-badges/)
Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | [Opera](http://godban.github.io/browsers-support-badges/)
Opera | | --- | --- | --- | --- | --- | -| IE11, Edge | 最新版から 2 バージョン | 最新版から 2 バージョン | 最新版から 2 バージョン | 最新版から 2 バージョン | +| Edge | 最新版から 2 バージョン | 最新版から 2 バージョン | 最新版から 2 バージョン | 最新版から 2 バージョン | ## 貢献する diff --git a/README.md b/README.md index 16b06c2f..4364f81f 100644 --- a/README.md +++ b/README.md @@ -100,21 +100,13 @@ $ npm install $ npm start # visit http://localhost:8000 ``` -### Use Gitpod - -Open the project in Gitpod (free online dev environment for GitHub) and start coding immediately. - -[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/ant-design/ant-design-pro) - -More instructions at [documentation](http://pro.ant.design/docs/getting-started). - ## Browsers support -Modern browsers and IE11. +Modern browsers. -| [IE / Edge](http://godban.github.io/browsers-support-badges/)
IE / Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | [Opera](http://godban.github.io/browsers-support-badges/)
Opera | +| [Edge](http://godban.github.io/browsers-support-badges/)
Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | [Opera](http://godban.github.io/browsers-support-badges/)
Opera | | --- | --- | --- | --- | --- | -| IE11, Edge | last 2 versions | last 2 versions | last 2 versions | last 2 versions | +| Edge | last 2 versions | last 2 versions | last 2 versions | last 2 versions | ## Contributing diff --git a/README.pt-BR.md b/README.pt-BR.md index 1948473c..856ee015 100644 --- a/README.pt-BR.md +++ b/README.pt-BR.md @@ -98,21 +98,13 @@ $ npm install $ npm start # visit http://localhost:8000 ``` -### Use Gitpod - -Abra o projeto no Gitpod (ambiente gratuito de desenvolvimento online para o GitHub) e comece a codificar imediatamente. - -[![Abra no Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/ant-design/ant-design-pro) - -Mais instruções na [documentação](http://pro.ant.design/docs/getting-started). - ## Suporte a navegadores -Navegadores modernos e IE11. +Navegadores modernos . -| [IE / Edge](http://godban.github.io/browsers-support-badges/)
IE / Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | [Opera](http://godban.github.io/browsers-support-badges/)
Opera | +| [Edge](http://godban.github.io/browsers-support-badges/)
Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | [Opera](http://godban.github.io/browsers-support-badges/)
Opera | | --- | --- | --- | --- | --- | -| IE11, Edge | últimas 2 versões | últimas 2 versões | últimas 2 versões | últimas 2 versões | +| Edge | últimas 2 versões | últimas 2 versões | últimas 2 versões | últimas 2 versões | ## Contribuindo diff --git a/README.ru-RU.md b/README.ru-RU.md index b7eada67..561fb705 100644 --- a/README.ru-RU.md +++ b/README.ru-RU.md @@ -94,11 +94,11 @@ $ npm start # visit http://localhost:8000 ## Совместимость -Современные браузеры и IE11. +Современные браузеры. -| [IE / Edge](http://godban.github.io/browsers-support-badges/)
IE / Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | [Opera](http://godban.github.io/browsers-support-badges/)
Opera | +| [Edge](http://godban.github.io/browsers-support-badges/)
Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | [Opera](http://godban.github.io/browsers-support-badges/)
Opera | | --- | --- | --- | --- | --- | -| IE11, Edge | last 2 versions | last 2 versions | last 2 versions | last 2 versions | +| Edge | last 2 versions | last 2 versions | last 2 versions | last 2 versions | ## Распространение diff --git a/README.tr-TR.md b/README.tr-TR.md index e0b3d129..9e6c1772 100644 --- a/README.tr-TR.md +++ b/README.tr-TR.md @@ -98,21 +98,13 @@ $ npm install $ npm start # visit http://localhost:8000 ``` -### Gitpod ile - -Projeyi Gitpod'da (GitHub için ücretsiz geliştirme ortamı) açın ve anında kodlamaya başlayın. - -[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/ant-design/ant-design-pro) - -Daha fazla talimat için [dokümantasyon](http://pro.ant.design/docs/getting-started) sayfasına göz atın. - ## Tarayıcı desteği -Modern internet tarayıcıları ve IE11. +Modern internet tarayıcıları . -| [IE / Edge](http://godban.github.io/browsers-support-badges/)
IE / Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | [Opera](http://godban.github.io/browsers-support-badges/)
Opera | +| [Edge](http://godban.github.io/browsers-support-badges/)
Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | [Opera](http://godban.github.io/browsers-support-badges/)
Opera | | --- | --- | --- | --- | --- | -| IE11, Edge | son 2 versiyon | son 2 versiyon | son 2 versiyon | son 2 versiyon | +| Edge | son 2 versiyon | son 2 versiyon | son 2 versiyon | son 2 versiyon | ## Destek diff --git a/README.zh-CN.md b/README.zh-CN.md index 3c084a59..0cdd9df5 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -22,6 +22,7 @@ Language : [🇺🇸](./README.md) | 🇨🇳 | [🇷🇺](./README.ru-RU.md) | ## 5.0 已经发布! 🎉🎉🎉 [Ant Design Pro 5.0.0](https://github.com/ant-design/ant-design-pro/issues/8656) + ## 特性 - :bulb: **TypeScript**: 应用程序级 JavaScript 的语言 @@ -95,11 +96,11 @@ $ npm start # visit http://localhost:8000 ## 支持环境 -现代浏览器及 IE11。 +现代浏览器。 -| [IE / Edge](http://godban.github.io/browsers-support-badges/)
IE / Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | [Opera](http://godban.github.io/browsers-support-badges/)
Opera | +| [Edge](http://godban.github.io/browsers-support-badges/)
Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | [Opera](http://godban.github.io/browsers-support-badges/)
Opera | | --- | --- | --- | --- | --- | -| IE11, Edge | last 2 versions | last 2 versions | last 2 versions | last 2 versions | +| Edge | last 2 versions | last 2 versions | last 2 versions | last 2 versions | ## 参与贡献 diff --git a/config/config.dev.ts b/config/config.dev.ts deleted file mode 100644 index ab0e590f..00000000 --- a/config/config.dev.ts +++ /dev/null @@ -1,15 +0,0 @@ -// https://umijs.org/config/ -import { defineConfig } from 'umi'; - -export default defineConfig({ - plugins: [ - // https://github.com/zthxxx/react-dev-inspector - 'react-dev-inspector/plugins/umi/react-inspector', - ], - // https://github.com/zthxxx/react-dev-inspector#inspector-loader-props - inspectorConfig: { - exclude: [], - babelPlugins: [], - babelOptions: {}, - }, -}); diff --git a/config/config.ts b/config/config.ts index d2883542..c5c306b0 100644 --- a/config/config.ts +++ b/config/config.ts @@ -1,7 +1,6 @@ // https://umijs.org/config/ -import { defineConfig } from 'umi'; +import { defineConfig } from '@umijs/max'; import { join } from 'path'; - import defaultSettings from './defaultSettings'; import proxy from './proxy'; import routes from './routes'; @@ -11,9 +10,9 @@ const { REACT_APP_ENV } = process.env; export default defineConfig({ hash: true, antd: {}, - dva: { - hmr: true, - }, + request: {}, + initialState: {}, + model: {}, layout: { // https://umijs.org/zh-CN/plugins/plugin-layout locale: true, @@ -28,9 +27,7 @@ export default defineConfig({ // default true, when it is true, will use `navigator.language` overwrite default baseNavigator: true, }, - dynamicImport: { - loading: '@ant-design/pro-layout/es/PageLoading', - }, + targets: { ie: 11, }, @@ -44,33 +41,26 @@ export default defineConfig({ // https://ant.design/docs/react/customize-theme-variable-cn 'root-entry-name': 'variable', }, - // esbuild is father build tools - // https://umijs.org/plugins/plugin-esbuild - esbuild: {}, - title: false, ignoreMomentLocale: true, proxy: proxy[REACT_APP_ENV || 'dev'], manifest: { basePath: '/', }, // Fast Refresh 热更新 - fastRefresh: {}, + fastRefresh: true, + presets: ['umi-presets-pro'], openAPI: [ { - requestLibPath: "import { request } from 'umi'", + requestLibPath: "import { request } from '@umijs/max'", // 或者使用在线的版本 // schemaPath: "https://gw.alipayobjects.com/os/antfincdn/M%24jrzTTYJN/oneapi.json" schemaPath: join(__dirname, 'oneapi.json'), mock: false, }, { - requestLibPath: "import { request } from 'umi'", + requestLibPath: "import { request } from '@umijs/max'", schemaPath: 'https://gw.alipayobjects.com/os/antfincdn/CA1dOm%2631B/openapi.json', projectName: 'swagger', }, ], - nodeModulesTransform: { type: 'none' }, - mfsu: {}, - webpack5: {}, - exportStatic: {}, }); diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml deleted file mode 100644 index 38ab39b6..00000000 --- a/docker/docker-compose.dev.yml +++ /dev/null @@ -1,14 +0,0 @@ -version: '3.5' - -services: - ant-design-pro_dev: - ports: - - 8000:8000 - build: - context: ../ - dockerfile: Dockerfile.dev - container_name: 'ant-design-pro_dev' - volumes: - - ../src:/usr/src/app/src - - ../config:/usr/src/app/config - - ../mock:/usr/src/app/mock diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml deleted file mode 100644 index 13e12db8..00000000 --- a/docker/docker-compose.yml +++ /dev/null @@ -1,21 +0,0 @@ -version: '3.5' - -services: - ant-design-pro_build: - build: ../ - container_name: 'ant-design-pro_build' - volumes: - - dist:/usr/src/app/dist - - ant-design-pro_web: - image: nginx - ports: - - 80:80 - container_name: 'ant-design-pro_web' - restart: unless-stopped - volumes: - - dist:/usr/share/nginx/html:ro - - ./nginx.conf:/etc/nginx/conf.d/default.conf - -volumes: - dist: diff --git a/docker/nginx.conf b/docker/nginx.conf deleted file mode 100644 index c4085845..00000000 --- a/docker/nginx.conf +++ /dev/null @@ -1,24 +0,0 @@ -server { - listen 80; - listen [::]:80; - absolute_redirect off; - - # gzip config - gzip on; - gzip_min_length 1k; - gzip_comp_level 9; - gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml; - gzip_vary on; - gzip_disable "MSIE [1-6]\."; - - root /usr/share/nginx/html; - include /etc/nginx/mime.types; - location / { - try_files $uri $uri/ /index.html; - } - location /api { - proxy_pass https://proapi.azurewebsites.net; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_set_header X-Real-IP $remote_addr; - } -} diff --git a/mock/notices.ts b/mock/notices.ts index 732dd584..61858bdf 100644 --- a/mock/notices.ts +++ b/mock/notices.ts @@ -5,21 +5,21 @@ const getNotices = (req: Request, res: Response) => { data: [ { id: '000000001', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png', + avatar: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/MSbDR4FR2MUAAAAAAAAAAAAAFl94AQBr', title: '你收到了 14 份新周报', datetime: '2017-08-09', type: 'notification', }, { id: '000000002', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png', + avatar: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/hX-PTavYIq4AAAAAAAAAAAAAFl94AQBr', title: '你推荐的 曲妮妮 已通过第三轮面试', datetime: '2017-08-08', type: 'notification', }, { id: '000000003', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png', + avatar: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/jHX5R5l3QjQAAAAAAAAAAAAAFl94AQBr', title: '这种模板可以区分多种通知类型', datetime: '2017-08-07', read: true, @@ -27,21 +27,21 @@ const getNotices = (req: Request, res: Response) => { }, { id: '000000004', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png', + avatar: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/Wr4mQqx6jfwAAAAAAAAAAAAAFl94AQBr', title: '左侧图标用于区分不同的类型', datetime: '2017-08-07', type: 'notification', }, { id: '000000005', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png', + avatar: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/Mzj_TbcWUj4AAAAAAAAAAAAAFl94AQBr', title: '内容不要超过两行字,超出时自动截断', datetime: '2017-08-07', type: 'notification', }, { id: '000000006', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg', + avatar: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/eXLzRbPqQE4AAAAAAAAAAAAAFl94AQBr', title: '曲丽丽 评论了你', description: '描述信息描述信息描述信息', datetime: '2017-08-07', @@ -50,7 +50,7 @@ const getNotices = (req: Request, res: Response) => { }, { id: '000000007', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg', + avatar: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/w5mRQY2AmEEAAAAAAAAAAAAAFl94AQBr', title: '朱偏右 回复了你', description: '这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像', datetime: '2017-08-07', @@ -59,7 +59,7 @@ const getNotices = (req: Request, res: Response) => { }, { id: '000000008', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg', + avatar: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/wPadR5M9918AAAAAAAAAAAAAFl94AQBr', title: '标题', description: '这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像', datetime: '2017-08-07', diff --git a/package.json b/package.json index 2ef0d9f3..d2a27e01 100644 --- a/package.json +++ b/package.json @@ -1,45 +1,36 @@ { "name": "ant-design-pro", - "version": "5.2.0", + "version": "6.0.0-beta.0", "private": true, "description": "An out-of-box UI solution for enterprise applications", "scripts": { - "analyze": "cross-env ANALYZE=1 umi build", - "build": "umi build", + "postinstall": "max setup", + "analyze": "cross-env ANALYZE=1 max build", + "build": "max build", "deploy": "npm run build && npm run gh-pages", "dev": "npm run start:dev", - "docker-hub:build": "docker build -f Dockerfile.hub -t ant-design-pro ./", - "docker-prod:build": "docker-compose -f ./docker/docker-compose.yml build", - "docker-prod:dev": "docker-compose -f ./docker/docker-compose.yml up", - "docker:build": "docker-compose -f ./docker/docker-compose.dev.yml build", - "docker:dev": "docker-compose -f ./docker/docker-compose.dev.yml up", - "docker:push": "npm run docker-hub:build && npm run docker:tag && docker push antdesign/ant-design-pro", - "docker:tag": "docker tag ant-design-pro antdesign/ant-design-pro", "gh-pages": "gh-pages -d dist", "i18n-remove": "pro i18n-remove --locale=zh-CN --write", - "postinstall": "umi g tmp", - "lint": "umi g tmp && npm run lint:js && npm run lint:style && npm run lint:prettier && npm run tsc", + "lint": "npm run lint:js && npm run lint:prettier && npm run tsc", "lint-staged": "lint-staged", "lint-staged:js": "eslint --ext .js,.jsx,.ts,.tsx ", - "lint:fix": "eslint --fix --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src && npm run lint:style", + "lint:fix": "eslint --fix --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src ", "lint:js": "eslint --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src", "lint:prettier": "prettier -c --write \"src/**/*\" --end-of-line auto", - "lint:style": "stylelint --fix \"src/**/*.less\" --syntax less", - "openapi": "umi openapi", + "openapi": "max openapi", "playwright": "playwright install && playwright test", + "prepare": "husky install", "prettier": "prettier -c --write \"src/**/*\"", "serve": "umi-serve", - "start": "cross-env UMI_ENV=dev umi dev", - "start:dev": "cross-env REACT_APP_ENV=dev MOCK=none UMI_ENV=dev umi dev", - "start:no-mock": "cross-env MOCK=none UMI_ENV=dev umi dev", - "start:no-ui": "cross-env UMI_UI=none UMI_ENV=dev umi dev", - "start:pre": "cross-env REACT_APP_ENV=pre UMI_ENV=dev umi dev", - "start:test": "cross-env REACT_APP_ENV=test MOCK=none UMI_ENV=dev umi dev", - "test": "umi test", - "test:component": "umi test ./src/components", + "start": "cross-env UMI_ENV=dev max dev", + "start:dev": "cross-env REACT_APP_ENV=dev MOCK=none UMI_ENV=dev max dev", + "start:no-mock": "cross-env MOCK=none UMI_ENV=dev max dev", + "start:pre": "cross-env REACT_APP_ENV=pre UMI_ENV=dev max dev", + "start:test": "cross-env REACT_APP_ENV=test MOCK=none UMI_ENV=dev max dev", + "test": "max test", + "test:component": "max test ./src/components", "test:e2e": "node ./tests/run-tests.js", - "tsc": "tsc --noEmit", - "prepare": "husky install" + "tsc": "tsc --noEmit" }, "lint-staged": { "**/*.less": "stylelint --syntax less", @@ -67,8 +58,7 @@ "react": "^17.0.0", "react-dev-inspector": "^1.7.0", "react-dom": "^17.0.0", - "react-helmet-async": "^1.2.0", - "umi": "^3.5.0" + "react-helmet-async": "^1.2.0" }, "devDependencies": { "@ant-design/pro-cli": "^2.1.0", @@ -82,13 +72,8 @@ "@types/react-dom": "^17.0.0", "@types/react-helmet": "^6.1.0", "@umijs/fabric": "^2.11.1", - "@umijs/openapi": "^1.6.0", - "@umijs/plugin-blocks": "^2.2.0", - "@umijs/plugin-esbuild": "^1.4.0", - "@umijs/plugin-openapi": "^1.3.3", - "@umijs/preset-ant-design-pro": "^1.3.0", - "@umijs/preset-dumi": "^1.1.0", - "@umijs/preset-react": "^2.1.0", + "@umijs/max": "^4.0.0-rc.22", + "@umijs/openapi": "^1.3.0", "cross-env": "^7.0.0", "cross-port-killer": "^1.3.0", "detect-installer": "^1.0.0", @@ -102,6 +87,7 @@ "stylelint": "^13.0.0", "swagger-ui-dist": "^4.12.0", "typescript": "^4.5.0", + "umi-presets-pro": "1.0.1", "umi-serve": "^1.9.10" }, "engines": { diff --git a/src/app.tsx b/src/app.tsx index f72703eb..9d49faf6 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -1,21 +1,16 @@ import Footer from '@/components/Footer'; import RightContent from '@/components/RightContent'; -import { BookOutlined, LinkOutlined } from '@ant-design/icons'; +import { LinkOutlined } from '@ant-design/icons'; import type { Settings as LayoutSettings } from '@ant-design/pro-components'; -import { PageLoading, SettingDrawer } from '@ant-design/pro-components'; -import type { RunTimeLayoutConfig } from 'umi'; -import { history, Link } from 'umi'; +import { SettingDrawer } from '@ant-design/pro-components'; +import type { RunTimeLayoutConfig } from '@umijs/max'; +import { history, Link } from '@umijs/max'; import defaultSettings from '../config/defaultSettings'; import { currentUser as queryCurrentUser } from './services/ant-design-pro/api'; const isDev = process.env.NODE_ENV === 'development'; const loginPath = '/user/login'; -/** 获取用户信息比较慢的时候会展示一个 loading */ -export const initialStateConfig = { - loading: , -}; - /** * @see https://umijs.org/zh-CN/plugins/plugin-initial-state * */ @@ -60,6 +55,7 @@ export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) = footerRender: () =>
, onPageChange: () => { const { location } = history; + console.log(history); // 如果没有登录,重定向到 login if (!initialState?.currentUser && location.pathname !== loginPath) { history.push(loginPath); @@ -71,10 +67,6 @@ export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) = OpenAPI 文档 , - - - 业务组件文档 - , ] : [], menuHeaderRender: undefined, diff --git a/src/components/Footer/index.tsx b/src/components/Footer/index.tsx index d5b58c7e..22fee878 100644 --- a/src/components/Footer/index.tsx +++ b/src/components/Footer/index.tsx @@ -1,6 +1,6 @@ import { GithubOutlined } from '@ant-design/icons'; import { DefaultFooter } from '@ant-design/pro-components'; -import { useIntl } from 'umi'; +import { useIntl } from '@umijs/max'; const Footer: React.FC = () => { const intl = useIntl(); @@ -13,6 +13,9 @@ const Footer: React.FC = () => { return ( { await outLogin(); - const { query = {}, search, pathname } = history.location; - const { redirect } = query; + const { search, pathname } = history.location; + const urlParams = new URL(window.location.href).searchParams; + /** 此方法会跳转到 redirect 参数所在的位置 */ + const redirect = urlParams.get('redirect'); // Note: There may be security issues, please note if (window.location.pathname !== '/user/login' && !redirect) { history.replace({ diff --git a/src/components/RightContent/index.less b/src/components/RightContent/index.less index 6d6f1986..79fec19d 100644 --- a/src/components/RightContent/index.less +++ b/src/components/RightContent/index.less @@ -50,17 +50,6 @@ } } -.dark { - .action { - &:hover { - background: #252a3d; - } - &:global(.opened) { - background: #252a3d; - } - } -} - @media only screen and (max-width: @screen-md) { :global(.ant-divider-vertical) { vertical-align: unset; diff --git a/src/components/RightContent/index.tsx b/src/components/RightContent/index.tsx index 9696dc22..7a36d385 100644 --- a/src/components/RightContent/index.tsx +++ b/src/components/RightContent/index.tsx @@ -1,7 +1,7 @@ import { QuestionCircleOutlined } from '@ant-design/icons'; +import { SelectLang, useModel } from '@umijs/max'; import { Space } from 'antd'; import React from 'react'; -import { SelectLang, useModel } from 'umi'; import HeaderSearch from '../HeaderSearch'; import Avatar from './AvatarDropdown'; import styles from './index.less'; diff --git a/src/components/index.md b/src/components/index.md index d75715c9..eca94508 100644 --- a/src/components/index.md +++ b/src/components/index.md @@ -18,7 +18,6 @@ sidemenu: false * background: '#f0f2f5' */ import Footer from '@/components/Footer'; -import React from 'react'; export default () =>
; ``` @@ -33,7 +32,6 @@ HeaderDropdown 是 antd Dropdown 的封装,但是增加了移动端的特殊 */ import HeaderDropdown from '@/components/HeaderDropdown'; import { Button, Menu } from 'antd'; -import React from 'react'; export default () => { const menuHeaderDropdown = ( @@ -61,7 +59,6 @@ export default () => { * background: '#f0f2f5' */ import HeaderSearch from '@/components/HeaderSearch'; -import React from 'react'; export default () => { return ( @@ -113,7 +110,6 @@ export default () => { */ import NoticeIcon from '@/components/NoticeIcon/NoticeIcon'; import { message } from 'antd'; -import React from 'react'; export default () => { const list = [ diff --git a/src/global.less b/src/global.less index 0d6158c7..83ef55b8 100644 --- a/src/global.less +++ b/src/global.less @@ -48,10 +48,3 @@ ol { } } } - -// Compatible with IE11 -@media screen and(-ms-high-contrast: active), (-ms-high-contrast: none) { - body .ant-design-pro > .ant-layout { - min-height: 100vh; - } -} diff --git a/src/global.tsx b/src/global.tsx index 29f47a09..8903a36c 100644 --- a/src/global.tsx +++ b/src/global.tsx @@ -1,5 +1,5 @@ +import { useIntl } from '@umijs/max'; import { Button, message, notification } from 'antd'; -import { useIntl } from 'umi'; import defaultSettings from '../config/defaultSettings'; const { pwa } = defaultSettings; diff --git a/src/pages/404.tsx b/src/pages/404.tsx index 301e1739..0263687e 100644 --- a/src/pages/404.tsx +++ b/src/pages/404.tsx @@ -1,6 +1,6 @@ +import { history } from '@umijs/max'; import { Button, Result } from 'antd'; import React from 'react'; -import { history } from 'umi'; const NoFoundPage: React.FC = () => ( { const intl = useIntl(); diff --git a/src/pages/TableList/components/UpdateForm.tsx b/src/pages/TableList/components/UpdateForm.tsx index 23cf87a3..ed41fa58 100644 --- a/src/pages/TableList/components/UpdateForm.tsx +++ b/src/pages/TableList/components/UpdateForm.tsx @@ -6,9 +6,9 @@ import { ProFormTextArea, StepsForm, } from '@ant-design/pro-components'; +import { FormattedMessage, useIntl } from '@umijs/max'; import { Modal } from 'antd'; import React from 'react'; -import { FormattedMessage, useIntl } from 'umi'; export type FormValueType = { target?: string; diff --git a/src/pages/TableList/index.tsx b/src/pages/TableList/index.tsx index b16f1b9e..f0d7c8cf 100644 --- a/src/pages/TableList/index.tsx +++ b/src/pages/TableList/index.tsx @@ -10,9 +10,9 @@ import { ProFormTextArea, ProTable, } from '@ant-design/pro-components'; +import { FormattedMessage, useIntl } from '@umijs/max'; import { Button, Drawer, Input, message } from 'antd'; import React, { useRef, useState } from 'react'; -import { FormattedMessage, useIntl } from 'umi'; import type { FormValueType } from './components/UpdateForm'; import UpdateForm from './components/UpdateForm'; diff --git a/src/pages/Welcome.tsx b/src/pages/Welcome.tsx index 32e24cc4..23d40cd7 100644 --- a/src/pages/Welcome.tsx +++ b/src/pages/Welcome.tsx @@ -1,7 +1,7 @@ import { PageContainer } from '@ant-design/pro-components'; +import { FormattedMessage, useIntl } from '@umijs/max'; import { Alert, Card, Typography } from 'antd'; import React from 'react'; -import { FormattedMessage, useIntl } from 'umi'; import styles from './Welcome.less'; const CodePreview: React.FC = ({ children }) => ( diff --git a/src/pages/user/Login/index.less b/src/pages/user/Login/index.less index f6ecf00d..36eb7d63 100644 --- a/src/pages/user/Login/index.less +++ b/src/pages/user/Login/index.less @@ -25,10 +25,8 @@ @media (min-width: @screen-md-min) { .container { - background-image: url('https://gw.alipayobjects.com/zos/rmsportal/TVYTbAXWheQpRcWDaDMu.svg'); - background-repeat: no-repeat; - background-position: center 110px; - background-size: 100%; + background-image: url('https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/V-_oS6r-i7wAAAAAAAAAAAAAFl94AQBr'); + background-size: cover; } .content { diff --git a/src/pages/user/Login/index.tsx b/src/pages/user/Login/index.tsx index 2770a6e2..080d6faa 100644 --- a/src/pages/user/Login/index.tsx +++ b/src/pages/user/Login/index.tsx @@ -15,23 +15,25 @@ import { ProFormCheckbox, ProFormText, } from '@ant-design/pro-components'; +import { FormattedMessage, history, SelectLang, useIntl, useModel } from '@umijs/max'; import { Alert, message, Tabs } from 'antd'; import React, { useState } from 'react'; -import { FormattedMessage, history, SelectLang, useIntl, useModel } from 'umi'; import styles from './index.less'; const LoginMessage: React.FC<{ content: string; -}> = ({ content }) => ( - -); +}> = ({ content }) => { + return ( + + ); +}; const Login: React.FC = () => { const [userLoginState, setUserLoginState] = useState({}); @@ -61,11 +63,8 @@ const Login: React.FC = () => { }); message.success(defaultLoginSuccessMessage); await fetchUserInfo(); - /** 此方法会跳转到 redirect 参数所在的位置 */ - if (!history) return; - const { query } = history.location; - const { redirect } = query as { redirect: string }; - history.push(redirect || '/'); + const urlParams = new URL(window.location.href).searchParams; + history.push(urlParams.get('redirect') || '/'); return; } console.log(msg); @@ -76,6 +75,7 @@ const Login: React.FC = () => { id: 'pages.login.failure', defaultMessage: '登录失败,请重试!', }); + console.log(error); message.error(defaultLoginFailureMessage); } }; diff --git a/src/services/ant-design-pro/api.ts b/src/services/ant-design-pro/api.ts index 74fce0c3..cbd59616 100644 --- a/src/services/ant-design-pro/api.ts +++ b/src/services/ant-design-pro/api.ts @@ -1,6 +1,6 @@ // @ts-ignore /* eslint-disable */ -import { request } from 'umi'; +import { request } from '@umijs/max'; /** 获取当前的用户 GET /api/currentUser */ export async function currentUser(options?: { [key: string]: any }) { diff --git a/src/services/ant-design-pro/login.ts b/src/services/ant-design-pro/login.ts index 42f95fff..8871ed84 100644 --- a/src/services/ant-design-pro/login.ts +++ b/src/services/ant-design-pro/login.ts @@ -1,6 +1,6 @@ // @ts-ignore /* eslint-disable */ -import { request } from 'umi'; +import { request } from '@umijs/max'; /** 发送验证码 POST /api/login/captcha */ export async function getFakeCaptcha( diff --git a/src/services/swagger/pet.ts b/src/services/swagger/pet.ts index de8d6d2b..b887475a 100644 --- a/src/services/swagger/pet.ts +++ b/src/services/swagger/pet.ts @@ -1,6 +1,6 @@ // @ts-ignore /* eslint-disable */ -import { request } from 'umi'; +import { request } from '@umijs/max'; /** Update an existing pet PUT /pet */ export async function updatePet(body: API.Pet, options?: { [key: string]: any }) { @@ -26,89 +26,44 @@ export async function addPet(body: API.Pet, options?: { [key: string]: any }) { }); } -/** Finds Pets by status Multiple status values can be provided with comma separated strings GET /pet/findByStatus */ -export async function findPetsByStatus( - params: { - // query - /** Status values that need to be considered for filter */ - status: 'available' | 'pending' | 'sold'[]; - }, - options?: { [key: string]: any }, -) { - return request('/pet/findByStatus', { - method: 'GET', - params: { - ...params, - }, - - ...(options || {}), - }); -} - -/** Finds Pets by tags Muliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. GET /pet/findByTags */ -export async function findPetsByTags( - params: { - // query - /** Tags to filter by */ - tags: string[]; - }, - options?: { [key: string]: any }, -) { - return request('/pet/findByTags', { - method: 'GET', - params: { - ...params, - }, - - ...(options || {}), - }); -} - /** Find pet by ID Returns a single pet GET /pet/${param0} */ export async function getPetById( - params: { - // path - /** ID of pet to return */ - petId: number; - }, + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.getPetByIdParams, options?: { [key: string]: any }, ) { - const { petId: param0 } = params; + const { petId: param0, ...queryParams } = params; return request(`/pet/${param0}`, { method: 'GET', - params: { ...params }, - + params: { ...queryParams }, ...(options || {}), }); } /** Updates a pet in the store with form data POST /pet/${param0} */ export async function updatePetWithForm( - params: { - // path - /** ID of pet that needs to be updated */ - petId: number; - }, + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.updatePetWithFormParams, body: { name?: string; status?: string }, options?: { [key: string]: any }, ) { - const { petId: param0 } = params; + const { petId: param0, ...queryParams } = params; const formData = new FormData(); Object.keys(body).forEach((ele) => { const item = (body as any)[ele]; if (item !== undefined && item !== null) { - formData.append(ele, typeof item === 'object' ? JSON.stringify(item) : item); + formData.append( + ele, + typeof item === 'object' && !(item instanceof File) ? JSON.stringify(item) : item, + ); } }); return request(`/pet/${param0}`, { method: 'POST', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded', - }, - params: { ...params }, + params: { ...queryParams }, data: formData, ...(options || {}), }); @@ -116,51 +71,83 @@ export async function updatePetWithForm( /** Deletes a pet DELETE /pet/${param0} */ export async function deletePet( - params: { + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.deletePetParams & { // header api_key?: string; - // path - /** Pet id to delete */ - petId: number; }, options?: { [key: string]: any }, ) { - const { petId: param0 } = params; + const { petId: param0, ...queryParams } = params; return request(`/pet/${param0}`, { method: 'DELETE', - params: { ...params }, + headers: {}, + params: { ...queryParams }, ...(options || {}), }); } /** uploads an image POST /pet/${param0}/uploadImage */ export async function uploadFile( - params: { - // path - /** ID of pet to update */ - petId: number; - }, + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.uploadFileParams, body: { additionalMetadata?: string; file?: string }, + file?: File, options?: { [key: string]: any }, ) { - const { petId: param0 } = params; + const { petId: param0, ...queryParams } = params; const formData = new FormData(); + if (file) { + formData.append('file', file); + } + Object.keys(body).forEach((ele) => { const item = (body as any)[ele]; if (item !== undefined && item !== null) { - formData.append(ele, typeof item === 'object' ? JSON.stringify(item) : item); + formData.append( + ele, + typeof item === 'object' && !(item instanceof File) ? JSON.stringify(item) : item, + ); } }); return request(`/pet/${param0}/uploadImage`, { method: 'POST', - headers: { - 'Content-Type': 'multipart/form-data', - }, - params: { ...params }, + params: { ...queryParams }, data: formData, + requestType: 'form', + ...(options || {}), + }); +} + +/** Finds Pets by status Multiple status values can be provided with comma separated strings GET /pet/findByStatus */ +export async function findPetsByStatus( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.findPetsByStatusParams, + options?: { [key: string]: any }, +) { + return request('/pet/findByStatus', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** Finds Pets by tags Muliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. GET /pet/findByTags */ +export async function findPetsByTags( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.findPetsByTagsParams, + options?: { [key: string]: any }, +) { + return request('/pet/findByTags', { + method: 'GET', + params: { + ...params, + }, ...(options || {}), }); } diff --git a/src/services/swagger/store.ts b/src/services/swagger/store.ts index c4b6d616..b9c689a6 100644 --- a/src/services/swagger/store.ts +++ b/src/services/swagger/store.ts @@ -1,6 +1,6 @@ // @ts-ignore /* eslint-disable */ -import { request } from 'umi'; +import { request } from '@umijs/max'; /** Returns pet inventories by status Returns a map of status codes to quantities GET /store/inventory */ export async function getInventory(options?: { [key: string]: any }) { @@ -21,34 +21,28 @@ export async function placeOrder(body: API.Order, options?: { [key: string]: any /** Find purchase order by ID For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions GET /store/order/${param0} */ export async function getOrderById( - params: { - // path - /** ID of pet that needs to be fetched */ - orderId: number; - }, + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.getOrderByIdParams, options?: { [key: string]: any }, ) { - const { orderId: param0 } = params; + const { orderId: param0, ...queryParams } = params; return request(`/store/order/${param0}`, { method: 'GET', - params: { ...params }, + params: { ...queryParams }, ...(options || {}), }); } /** Delete purchase order by ID For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors DELETE /store/order/${param0} */ export async function deleteOrder( - params: { - // path - /** ID of the order that needs to be deleted */ - orderId: number; - }, + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.deleteOrderParams, options?: { [key: string]: any }, ) { - const { orderId: param0 } = params; + const { orderId: param0, ...queryParams } = params; return request(`/store/order/${param0}`, { method: 'DELETE', - params: { ...params }, + params: { ...queryParams }, ...(options || {}), }); } diff --git a/src/services/swagger/typings.d.ts b/src/services/swagger/typings.d.ts index 8fddfd75..d06bcfcb 100644 --- a/src/services/swagger/typings.d.ts +++ b/src/services/swagger/typings.d.ts @@ -1,7 +1,63 @@ -// @ts-ignore -/* eslint-disable */ - declare namespace API { + type ApiResponse = { + code?: number; + type?: string; + message?: string; + }; + + type Category = { + id?: number; + name?: string; + }; + + type deleteOrderParams = { + /** ID of the order that needs to be deleted */ + orderId: number; + }; + + type deletePetParams = { + api_key?: string; + /** Pet id to delete */ + petId: number; + }; + + type deleteUserParams = { + /** The name that needs to be deleted */ + username: string; + }; + + type findPetsByStatusParams = { + /** Status values that need to be considered for filter */ + status: ('available' | 'pending' | 'sold')[]; + }; + + type findPetsByTagsParams = { + /** Tags to filter by */ + tags: string[]; + }; + + type getOrderByIdParams = { + /** ID of pet that needs to be fetched */ + orderId: number; + }; + + type getPetByIdParams = { + /** ID of pet to return */ + petId: number; + }; + + type getUserByNameParams = { + /** The name that needs to be fetched. Use user1 for testing. */ + username: string; + }; + + type loginUserParams = { + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }; + type Order = { id?: number; petId?: number; @@ -12,11 +68,36 @@ declare namespace API { complete?: boolean; }; - type Category = { + type Pet = { + id?: number; + category?: Category; + name: string; + photoUrls: string[]; + tags?: Tag[]; + /** pet status in the store */ + status?: 'available' | 'pending' | 'sold'; + }; + + type Tag = { id?: number; name?: string; }; + type updatePetWithFormParams = { + /** ID of pet that needs to be updated */ + petId: number; + }; + + type updateUserParams = { + /** name that need to be updated */ + username: string; + }; + + type uploadFileParams = { + /** ID of pet to update */ + petId: number; + }; + type User = { id?: number; username?: string; @@ -28,25 +109,4 @@ declare namespace API { /** User Status */ userStatus?: number; }; - - type Tag = { - id?: number; - name?: string; - }; - - type Pet = { - id?: number; - category?: Category; - name: string; - photoUrls: string[]; - tags?: Tag[]; - /** pet status in the store */ - status?: 'available' | 'pending' | 'sold'; - }; - - type ApiResponse = { - code?: number; - type?: string; - message?: string; - }; } diff --git a/src/services/swagger/user.ts b/src/services/swagger/user.ts index 46ce5e96..4dd6f421 100644 --- a/src/services/swagger/user.ts +++ b/src/services/swagger/user.ts @@ -1,6 +1,6 @@ // @ts-ignore /* eslint-disable */ -import { request } from 'umi'; +import { request } from '@umijs/max'; /** Create user This can only be done by the logged in user. POST /user */ export async function createUser(body: API.User, options?: { [key: string]: any }) { @@ -11,6 +11,50 @@ export async function createUser(body: API.User, options?: { [key: string]: any }); } +/** Get user by user name GET /user/${param0} */ +export async function getUserByName( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.getUserByNameParams, + options?: { [key: string]: any }, +) { + const { username: param0, ...queryParams } = params; + return request(`/user/${param0}`, { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** Updated user This can only be done by the logged in user. PUT /user/${param0} */ +export async function updateUser( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.updateUserParams, + body: API.User, + options?: { [key: string]: any }, +) { + const { username: param0, ...queryParams } = params; + return request(`/user/${param0}`, { + method: 'PUT', + params: { ...queryParams }, + data: body, + ...(options || {}), + }); +} + +/** Delete user This can only be done by the logged in user. DELETE /user/${param0} */ +export async function deleteUser( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.deleteUserParams, + options?: { [key: string]: any }, +) { + const { username: param0, ...queryParams } = params; + return request(`/user/${param0}`, { + method: 'DELETE', + params: { ...queryParams }, + ...(options || {}), + }); +} + /** Creates list of users with given input array POST /user/createWithArray */ export async function createUsersWithArrayInput( body: API.User[], @@ -34,13 +78,8 @@ export async function createUsersWithListInput(body: API.User[], options?: { [ke /** Logs user into the system GET /user/login */ export async function loginUser( - params: { - // query - /** The user name for login */ - username: string; - /** The password for login in clear text */ - password: string; - }, + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.loginUserParams, options?: { [key: string]: any }, ) { return request('/user/login', { @@ -59,56 +98,3 @@ export async function logoutUser(options?: { [key: string]: any }) { ...(options || {}), }); } - -/** Get user by user name GET /user/${param0} */ -export async function getUserByName( - params: { - // path - /** The name that needs to be fetched. Use user1 for testing. */ - username: string; - }, - options?: { [key: string]: any }, -) { - const { username: param0 } = params; - return request(`/user/${param0}`, { - method: 'GET', - params: { ...params }, - ...(options || {}), - }); -} - -/** Updated user This can only be done by the logged in user. PUT /user/${param0} */ -export async function updateUser( - params: { - // path - /** name that need to be updated */ - username: string; - }, - body: API.User, - options?: { [key: string]: any }, -) { - const { username: param0 } = params; - return request(`/user/${param0}`, { - method: 'PUT', - params: { ...params }, - data: body, - ...(options || {}), - }); -} - -/** Delete user This can only be done by the logged in user. DELETE /user/${param0} */ -export async function deleteUser( - params: { - // path - /** The name that needs to be deleted */ - username: string; - }, - options?: { [key: string]: any }, -) { - const { username: param0 } = params; - return request(`/user/${param0}`, { - method: 'DELETE', - params: { ...params }, - ...(options || {}), - }); -} From ff7de6a2f141cf639fe063f62eac694541fdb0c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Mon, 27 Jun 2022 12:36:12 +0800 Subject: [PATCH 15/89] change version --- demo/.editorconfig | 16 + demo/.eslintignore | 8 + demo/.eslintrc.js | 8 + demo/.gitignore | 40 + demo/.husky/.gitignore | 1 + demo/.husky/commit-msg | 7 + demo/.husky/pre-commit | 4 + demo/.prettierignore | 23 + demo/.prettierrc.js | 5 + demo/.stylelintrc.js | 3 + demo/.vscode/extensions.json | 8 + demo/.vscode/settings.json | 5 + demo/README.md | 57 + demo/config/config.dev.ts | 15 + demo/config/config.ts | 358 ++++ demo/config/defaultSettings.ts | 21 + demo/config/oneapi.json | 593 ++++++ demo/config/proxy.ts | 34 + demo/config/routes.ts | 53 + demo/jest.config.js | 9 + demo/jsconfig.json | 11 + demo/mock/listTableList.ts | 174 ++ demo/mock/notices.ts | 107 + demo/mock/route.ts | 5 + demo/mock/user.ts | 203 ++ demo/package.json | 113 ++ demo/playwright.config.ts | 22 + demo/public/CNAME | 1 + demo/public/favicon.ico | Bin 0 -> 4286 bytes demo/public/icons/icon-128x128.png | Bin 0 -> 1329 bytes demo/public/icons/icon-192x192.png | Bin 0 -> 1856 bytes demo/public/icons/icon-512x512.png | Bin 0 -> 5082 bytes demo/public/logo.svg | 1 + demo/public/pro_icon.svg | 5 + demo/src/access.ts | 9 + demo/src/app.tsx | 108 + demo/src/components/Footer/index.tsx | 41 + demo/src/components/HeaderDropdown/index.less | 16 + demo/src/components/HeaderDropdown/index.tsx | 17 + demo/src/components/HeaderSearch/index.less | 25 + demo/src/components/HeaderSearch/index.tsx | 102 + demo/src/components/NoticeIcon/NoticeIcon.tsx | 126 ++ .../src/components/NoticeIcon/NoticeList.less | 103 + demo/src/components/NoticeIcon/NoticeList.tsx | 113 ++ demo/src/components/NoticeIcon/index.less | 35 + demo/src/components/NoticeIcon/index.tsx | 153 ++ .../RightContent/AvatarDropdown.tsx | 103 + demo/src/components/RightContent/index.less | 84 + demo/src/components/RightContent/index.tsx | 68 + demo/src/components/index.md | 272 +++ demo/src/e2e/baseLayout.e2e.spec.ts | 45 + demo/src/global.less | 57 + demo/src/global.tsx | 91 + demo/src/locales/bn-BD.ts | 26 + demo/src/locales/bn-BD/component.ts | 5 + demo/src/locales/bn-BD/globalHeader.ts | 17 + demo/src/locales/bn-BD/menu.ts | 52 + demo/src/locales/bn-BD/pages.ts | 70 + demo/src/locales/bn-BD/pwa.ts | 7 + demo/src/locales/bn-BD/settingDrawer.ts | 31 + demo/src/locales/bn-BD/settings.ts | 59 + demo/src/locales/en-US.ts | 25 + demo/src/locales/en-US/component.ts | 5 + demo/src/locales/en-US/globalHeader.ts | 17 + demo/src/locales/en-US/menu.ts | 52 + demo/src/locales/en-US/pages.ts | 70 + demo/src/locales/en-US/pwa.ts | 6 + demo/src/locales/en-US/settingDrawer.ts | 31 + demo/src/locales/en-US/settings.ts | 60 + demo/src/locales/fa-IR.ts | 24 + demo/src/locales/fa-IR/component.ts | 5 + demo/src/locales/fa-IR/globalHeader.ts | 17 + demo/src/locales/fa-IR/menu.ts | 52 + demo/src/locales/fa-IR/pages.ts | 67 + demo/src/locales/fa-IR/pwa.ts | 7 + demo/src/locales/fa-IR/settingDrawer.ts | 32 + demo/src/locales/fa-IR/settings.ts | 60 + demo/src/locales/id-ID.ts | 25 + demo/src/locales/id-ID/component.ts | 5 + demo/src/locales/id-ID/globalHeader.ts | 17 + demo/src/locales/id-ID/menu.ts | 52 + demo/src/locales/id-ID/pages.ts | 70 + demo/src/locales/id-ID/pwa.ts | 7 + demo/src/locales/id-ID/settingDrawer.ts | 32 + demo/src/locales/id-ID/settings.ts | 60 + demo/src/locales/ja-JP.ts | 24 + demo/src/locales/ja-JP/component.ts | 5 + demo/src/locales/ja-JP/globalHeader.ts | 17 + demo/src/locales/ja-JP/menu.ts | 52 + demo/src/locales/ja-JP/pages.ts | 67 + demo/src/locales/ja-JP/pwa.ts | 7 + demo/src/locales/ja-JP/settingDrawer.ts | 31 + demo/src/locales/ja-JP/settings.ts | 59 + demo/src/locales/pt-BR.ts | 22 + demo/src/locales/pt-BR/component.ts | 5 + demo/src/locales/pt-BR/globalHeader.ts | 18 + demo/src/locales/pt-BR/menu.ts | 52 + demo/src/locales/pt-BR/pages.ts | 70 + demo/src/locales/pt-BR/pwa.ts | 7 + demo/src/locales/pt-BR/settingDrawer.ts | 32 + demo/src/locales/pt-BR/settings.ts | 60 + demo/src/locales/zh-CN.ts | 25 + demo/src/locales/zh-CN/component.ts | 5 + demo/src/locales/zh-CN/globalHeader.ts | 17 + demo/src/locales/zh-CN/menu.ts | 52 + demo/src/locales/zh-CN/pages.ts | 67 + demo/src/locales/zh-CN/pwa.ts | 6 + demo/src/locales/zh-CN/settingDrawer.ts | 31 + demo/src/locales/zh-CN/settings.ts | 55 + demo/src/locales/zh-TW.ts | 20 + demo/src/locales/zh-TW/component.ts | 5 + demo/src/locales/zh-TW/globalHeader.ts | 17 + demo/src/locales/zh-TW/menu.ts | 52 + demo/src/locales/zh-TW/pwa.ts | 6 + demo/src/locales/zh-TW/settingDrawer.ts | 31 + demo/src/locales/zh-TW/settings.ts | 55 + demo/src/manifest.json | 22 + demo/src/pages/404.tsx | 18 + demo/src/pages/Admin.tsx | 45 + .../pages/TableList/components/UpdateForm.tsx | 209 ++ demo/src/pages/TableList/index.tsx | 393 ++++ demo/src/pages/Welcome.less | 8 + demo/src/pages/Welcome.tsx | 66 + demo/src/pages/account/center/Center.less | 86 + demo/src/pages/account/center/_mock.ts | 243 +++ .../center/components/Applications/index.less | 51 + .../center/components/Applications/index.tsx | 123 ++ .../components/ArticleListContent/index.less | 38 + .../components/ArticleListContent/index.tsx | 28 + .../center/components/Articles/index.less | 12 + .../center/components/Articles/index.tsx | 63 + .../center/components/AvatarList/index.less | 50 + .../center/components/AvatarList/index.tsx | 84 + .../center/components/Projects/index.less | 54 + .../center/components/Projects/index.tsx | 49 + demo/src/pages/account/center/data.d.ts | 75 + demo/src/pages/account/center/index.tsx | 210 ++ demo/src/pages/account/center/service.ts | 14 + demo/src/pages/account/settings/_mock.ts | 79 + .../account/settings/components/BaseView.less | 65 + .../account/settings/components/PhoneView.tsx | 42 + .../account/settings/components/base.tsx | 230 +++ .../account/settings/components/binding.tsx | 46 + .../settings/components/notification.tsx | 44 + .../account/settings/components/security.tsx | 62 + demo/src/pages/account/settings/data.d.ts | 43 + .../account/settings/geographic/city.json | 1784 +++++++++++++++++ .../account/settings/geographic/province.json | 138 ++ demo/src/pages/account/settings/index.tsx | 111 + demo/src/pages/account/settings/service.ts | 18 + demo/src/pages/account/settings/style.less | 93 + demo/src/pages/dashboard/analysis/_mock.ts | 210 ++ .../analysis/components/Charts/Bar/index.tsx | 133 ++ .../components/Charts/ChartCard/index.less | 75 + .../components/Charts/ChartCard/index.tsx | 97 + .../components/Charts/Field/index.less | 17 + .../components/Charts/Field/index.tsx | 17 + .../components/Charts/Gauge/index.tsx | 179 ++ .../components/Charts/MiniArea/index.tsx | 131 ++ .../components/Charts/MiniBar/index.tsx | 54 + .../components/Charts/MiniProgress/index.tsx | 41 + .../analysis/components/Charts/Pie/index.tsx | 309 +++ .../components/Charts/TagCloud/index.tsx | 212 ++ .../components/Charts/TimelineChart/index.tsx | 132 ++ .../components/Charts/WaterWave/index.tsx | 235 +++ .../analysis/components/Charts/autoHeight.tsx | 79 + .../analysis/components/Charts/index.less | 19 + .../analysis/components/Charts/index.tsx | 13 + .../analysis/components/IntroduceRow.tsx | 135 ++ .../analysis/components/NumberInfo/index.less | 68 + .../analysis/components/NumberInfo/index.tsx | 62 + .../analysis/components/OfflineData.tsx | 76 + .../analysis/components/PageLoading/index.tsx | 9 + .../analysis/components/ProportionSales.tsx | 76 + .../analysis/components/SalesCard.tsx | 189 ++ .../analysis/components/TopSearch.tsx | 113 ++ .../analysis/components/Trend/index.less | 37 + .../analysis/components/Trend/index.tsx | 42 + demo/src/pages/dashboard/analysis/data.d.ts | 46 + demo/src/pages/dashboard/analysis/index.tsx | 162 ++ demo/src/pages/dashboard/analysis/service.ts | 6 + demo/src/pages/dashboard/analysis/style.less | 189 ++ .../pages/dashboard/analysis/utils/Yuan.tsx | 33 + .../pages/dashboard/analysis/utils/utils.less | 50 + .../pages/dashboard/analysis/utils/utils.ts | 52 + demo/src/pages/dashboard/monitor/_mock.ts | 14 + .../monitor/components/ActiveChart/index.less | 51 + .../monitor/components/ActiveChart/index.tsx | 90 + .../monitor/components/Charts/Gauge/index.tsx | 180 ++ .../components/Charts/MiniArea/index.tsx | 131 ++ .../monitor/components/Charts/Pie/index.tsx | 310 +++ .../components/Charts/TagCloud/index.tsx | 211 ++ .../components/Charts/WaterWave/index.tsx | 235 +++ .../monitor/components/Charts/autoHeight.tsx | 79 + .../monitor/components/Map/index.tsx | 145 ++ demo/src/pages/dashboard/monitor/data.d.ts | 5 + demo/src/pages/dashboard/monitor/index.tsx | 152 ++ demo/src/pages/dashboard/monitor/service.ts | 6 + demo/src/pages/dashboard/monitor/style.less | 21 + demo/src/pages/dashboard/workplace/_mock.ts | 410 ++++ .../components/EditableLinkGroup/index.less | 16 + .../components/EditableLinkGroup/index.tsx | 47 + .../workplace/components/Radar/autoHeight.tsx | 79 + .../workplace/components/Radar/index.tsx | 219 ++ demo/src/pages/dashboard/workplace/data.d.ts | 111 + demo/src/pages/dashboard/workplace/index.tsx | 242 +++ demo/src/pages/dashboard/workplace/service.ts | 14 + demo/src/pages/dashboard/workplace/style.less | 250 +++ demo/src/pages/document.ejs | 236 +++ .../editor/flow/common/IconFont/index.ts | 7 + .../EditorContextMenu/FlowContextMenu.tsx | 34 + .../EditorContextMenu/KoniContextMenu.tsx | 3 + .../components/EditorContextMenu/MenuItem.tsx | 27 + .../EditorContextMenu/MindContextMenu.tsx | 22 + .../components/EditorContextMenu/index.less | 41 + .../components/EditorContextMenu/index.tsx | 5 + .../EditorDetailPanel/DetailForm.tsx | 114 ++ .../EditorDetailPanel/FlowDetailPanel.tsx | 27 + .../EditorDetailPanel/KoniDetailPanel.tsx | 3 + .../EditorDetailPanel/MindDetailPanel.tsx | 18 + .../components/EditorDetailPanel/index.less | 6 + .../components/EditorDetailPanel/index.tsx | 5 + .../EditorItemPanel/FlowItemPanel.tsx | 53 + .../EditorItemPanel/KoniItemPanel.tsx | 49 + .../components/EditorItemPanel/index.less | 19 + .../flow/components/EditorItemPanel/index.tsx | 4 + .../flow/components/EditorMinimap/index.tsx | 10 + .../components/EditorToolbar/FlowToolbar.tsx | 29 + .../components/EditorToolbar/KoniToolbar.tsx | 3 + .../components/EditorToolbar/MindToolbar.tsx | 24 + .../EditorToolbar/ToolbarButton.tsx | 31 + .../flow/components/EditorToolbar/index.less | 40 + .../flow/components/EditorToolbar/index.tsx | 5 + demo/src/pages/editor/flow/index.less | 48 + demo/src/pages/editor/flow/index.tsx | 37 + .../editor/koni/common/IconFont/index.ts | 7 + .../EditorContextMenu/FlowContextMenu.tsx | 34 + .../EditorContextMenu/KoniContextMenu.tsx | 3 + .../components/EditorContextMenu/MenuItem.tsx | 27 + .../EditorContextMenu/MindContextMenu.tsx | 22 + .../components/EditorContextMenu/index.less | 40 + .../components/EditorContextMenu/index.tsx | 5 + .../EditorDetailPanel/DetailForm.tsx | 114 ++ .../EditorDetailPanel/FlowDetailPanel.tsx | 27 + .../EditorDetailPanel/KoniDetailPanel.tsx | 3 + .../EditorDetailPanel/MindDetailPanel.tsx | 18 + .../components/EditorDetailPanel/index.less | 6 + .../components/EditorDetailPanel/index.tsx | 5 + .../EditorItemPanel/FlowItemPanel.tsx | 53 + .../EditorItemPanel/KoniItemPanel.tsx | 49 + .../components/EditorItemPanel/index.less | 19 + .../koni/components/EditorItemPanel/index.tsx | 4 + .../koni/components/EditorMinimap/index.tsx | 10 + .../components/EditorToolbar/FlowToolbar.tsx | 29 + .../components/EditorToolbar/KoniToolbar.tsx | 3 + .../components/EditorToolbar/MindToolbar.tsx | 24 + .../EditorToolbar/ToolbarButton.tsx | 31 + .../koni/components/EditorToolbar/index.less | 39 + .../koni/components/EditorToolbar/index.tsx | 5 + demo/src/pages/editor/koni/index.less | 56 + demo/src/pages/editor/koni/index.tsx | 37 + .../editor/mind/common/IconFont/index.ts | 7 + .../EditorContextMenu/FlowContextMenu.tsx | 34 + .../EditorContextMenu/KoniContextMenu.tsx | 3 + .../components/EditorContextMenu/MenuItem.tsx | 27 + .../EditorContextMenu/MindContextMenu.tsx | 22 + .../components/EditorContextMenu/index.less | 40 + .../components/EditorContextMenu/index.tsx | 5 + .../EditorDetailPanel/DetailForm.tsx | 114 ++ .../EditorDetailPanel/FlowDetailPanel.tsx | 27 + .../EditorDetailPanel/KoniDetailPanel.tsx | 3 + .../EditorDetailPanel/MindDetailPanel.tsx | 18 + .../components/EditorDetailPanel/index.less | 6 + .../components/EditorDetailPanel/index.tsx | 5 + .../EditorItemPanel/FlowItemPanel.tsx | 53 + .../EditorItemPanel/KoniItemPanel.tsx | 49 + .../components/EditorItemPanel/index.less | 19 + .../mind/components/EditorItemPanel/index.tsx | 4 + .../mind/components/EditorMinimap/index.tsx | 10 + .../components/EditorToolbar/FlowToolbar.tsx | 29 + .../components/EditorToolbar/KoniToolbar.tsx | 3 + .../components/EditorToolbar/MindToolbar.tsx | 24 + .../EditorToolbar/ToolbarButton.tsx | 31 + .../mind/components/EditorToolbar/index.less | 40 + .../mind/components/EditorToolbar/index.tsx | 5 + demo/src/pages/editor/mind/index.less | 56 + demo/src/pages/editor/mind/index.tsx | 34 + demo/src/pages/editor/mind/worldCup2018.json | 129 ++ demo/src/pages/exception/403/index.tsx | 18 + demo/src/pages/exception/404/index.tsx | 18 + demo/src/pages/exception/500/index.tsx | 18 + demo/src/pages/form/advanced-form/_mock.ts | 8 + .../advanced-form/components/TableForm.tsx | 257 +++ demo/src/pages/form/advanced-form/index.tsx | 386 ++++ demo/src/pages/form/advanced-form/service.ts | 8 + demo/src/pages/form/advanced-form/style.less | 65 + demo/src/pages/form/basic-form/_mock.ts | 8 + demo/src/pages/form/basic-form/index.tsx | 188 ++ demo/src/pages/form/basic-form/service.ts | 8 + demo/src/pages/form/basic-form/style.less | 6 + demo/src/pages/form/step-form/_mock.ts | 8 + demo/src/pages/form/step-form/data.d.ts | 9 + demo/src/pages/form/step-form/index.tsx | 196 ++ demo/src/pages/form/step-form/service.ts | 8 + demo/src/pages/form/step-form/style.less | 11 + demo/src/pages/list/basic-list/_mock.ts | 160 ++ .../basic-list/components/OperationModal.tsx | 105 + demo/src/pages/list/basic-list/data.d.ts | 29 + demo/src/pages/list/basic-list/index.tsx | 246 +++ demo/src/pages/list/basic-list/service.ts | 50 + demo/src/pages/list/basic-list/style.less | 195 ++ .../pages/list/basic-list/utils/utils.less | 50 + demo/src/pages/list/card-list/_mock.ts | 120 ++ demo/src/pages/list/card-list/data.d.ts | 29 + demo/src/pages/list/card-list/index.tsx | 104 + demo/src/pages/list/card-list/service.ts | 10 + demo/src/pages/list/card-list/style.less | 107 + .../src/pages/list/card-list/utils/utils.less | 50 + .../pages/list/search/applications/_mock.ts | 119 ++ .../components/StandardFormRow/index.less | 87 + .../components/StandardFormRow/index.tsx | 39 + .../components/TagSelect/index.less | 34 + .../components/TagSelect/index.tsx | 142 ++ .../pages/list/search/applications/data.d.ts | 33 + .../pages/list/search/applications/index.tsx | 195 ++ .../pages/list/search/applications/service.ts | 10 + .../pages/list/search/applications/style.less | 50 + .../list/search/applications/utils/utils.less | 50 + demo/src/pages/list/search/articles/_mock.ts | 119 ++ .../components/ArticleListContent/index.less | 38 + .../components/ArticleListContent/index.tsx | 29 + .../components/StandardFormRow/index.less | 88 + .../components/StandardFormRow/index.tsx | 39 + .../articles/components/TagSelect/index.less | 33 + .../articles/components/TagSelect/index.tsx | 142 ++ demo/src/pages/list/search/articles/data.d.ts | 32 + demo/src/pages/list/search/articles/index.tsx | 224 +++ .../src/pages/list/search/articles/service.ts | 10 + .../src/pages/list/search/articles/style.less | 31 + demo/src/pages/list/search/index.tsx | 87 + demo/src/pages/list/search/projects/_mock.ts | 118 ++ .../projects/components/AvatarList/index.less | 50 + .../projects/components/AvatarList/index.tsx | 84 + .../components/StandardFormRow/index.less | 88 + .../components/StandardFormRow/index.tsx | 39 + .../projects/components/TagSelect/index.less | 33 + .../projects/components/TagSelect/index.tsx | 142 ++ demo/src/pages/list/search/projects/data.d.ts | 32 + demo/src/pages/list/search/projects/index.tsx | 135 ++ .../src/pages/list/search/projects/service.ts | 10 + .../src/pages/list/search/projects/style.less | 55 + .../list/search/projects/utils/utils.less | 50 + demo/src/pages/list/table-list/_mock.ts | 177 ++ .../list/table-list/components/CreateForm.tsx | 25 + .../list/table-list/components/UpdateForm.tsx | 159 ++ demo/src/pages/list/table-list/data.d.ts | 36 + demo/src/pages/list/table-list/index.tsx | 320 +++ demo/src/pages/list/table-list/service.ts | 56 + demo/src/pages/profile/advanced/_mock.ts | 81 + demo/src/pages/profile/advanced/data.d.ts | 32 + demo/src/pages/profile/advanced/index.tsx | 356 ++++ demo/src/pages/profile/advanced/service.ts | 5 + demo/src/pages/profile/advanced/style.less | 60 + demo/src/pages/profile/basic/_mock.ts | 92 + demo/src/pages/profile/basic/data.d.ts | 17 + demo/src/pages/profile/basic/index.tsx | 193 ++ demo/src/pages/profile/basic/service.ts | 11 + demo/src/pages/profile/basic/style.less | 8 + demo/src/pages/result/fail/index.less | 11 + demo/src/pages/result/fail/index.tsx | 50 + demo/src/pages/result/success/index.less | 15 + demo/src/pages/result/success/index.tsx | 71 + demo/src/pages/user/Login/index.less | 50 + demo/src/pages/user/Login/index.tsx | 286 +++ demo/src/pages/user/register-result/index.tsx | 42 + .../src/pages/user/register-result/style.less | 23 + demo/src/pages/user/register/_mock.ts | 10 + demo/src/pages/user/register/index.tsx | 285 +++ demo/src/pages/user/register/service.ts | 22 + demo/src/pages/user/register/style.less | 60 + demo/src/service-worker.js | 65 + demo/src/services/ant-design-pro/api.ts | 85 + demo/src/services/ant-design-pro/index.ts | 10 + demo/src/services/ant-design-pro/login.ts | 21 + demo/src/services/ant-design-pro/typings.d.ts | 101 + demo/src/services/swagger/index.ts | 12 + demo/src/services/swagger/pet.ts | 166 ++ demo/src/services/swagger/store.ts | 54 + demo/src/services/swagger/typings.d.ts | 52 + demo/src/services/swagger/user.ts | 114 ++ demo/src/typings.d.ts | 24 + demo/tests/run-tests.js | 47 + demo/tests/setupTests.js | 10 + demo/tsconfig.json | 42 + 394 files changed, 27192 insertions(+) create mode 100644 demo/.editorconfig create mode 100644 demo/.eslintignore create mode 100644 demo/.eslintrc.js create mode 100644 demo/.gitignore create mode 100644 demo/.husky/.gitignore create mode 100755 demo/.husky/commit-msg create mode 100755 demo/.husky/pre-commit create mode 100644 demo/.prettierignore create mode 100644 demo/.prettierrc.js create mode 100644 demo/.stylelintrc.js create mode 100644 demo/.vscode/extensions.json create mode 100644 demo/.vscode/settings.json create mode 100644 demo/README.md create mode 100644 demo/config/config.dev.ts create mode 100644 demo/config/config.ts create mode 100644 demo/config/defaultSettings.ts create mode 100644 demo/config/oneapi.json create mode 100644 demo/config/proxy.ts create mode 100644 demo/config/routes.ts create mode 100644 demo/jest.config.js create mode 100644 demo/jsconfig.json create mode 100644 demo/mock/listTableList.ts create mode 100644 demo/mock/notices.ts create mode 100644 demo/mock/route.ts create mode 100644 demo/mock/user.ts create mode 100644 demo/package.json create mode 100644 demo/playwright.config.ts create mode 100644 demo/public/CNAME create mode 100644 demo/public/favicon.ico create mode 100644 demo/public/icons/icon-128x128.png create mode 100644 demo/public/icons/icon-192x192.png create mode 100644 demo/public/icons/icon-512x512.png create mode 100644 demo/public/logo.svg create mode 100644 demo/public/pro_icon.svg create mode 100644 demo/src/access.ts create mode 100644 demo/src/app.tsx create mode 100644 demo/src/components/Footer/index.tsx create mode 100644 demo/src/components/HeaderDropdown/index.less create mode 100644 demo/src/components/HeaderDropdown/index.tsx create mode 100644 demo/src/components/HeaderSearch/index.less create mode 100644 demo/src/components/HeaderSearch/index.tsx create mode 100644 demo/src/components/NoticeIcon/NoticeIcon.tsx create mode 100755 demo/src/components/NoticeIcon/NoticeList.less create mode 100644 demo/src/components/NoticeIcon/NoticeList.tsx create mode 100644 demo/src/components/NoticeIcon/index.less create mode 100644 demo/src/components/NoticeIcon/index.tsx create mode 100644 demo/src/components/RightContent/AvatarDropdown.tsx create mode 100644 demo/src/components/RightContent/index.less create mode 100644 demo/src/components/RightContent/index.tsx create mode 100644 demo/src/components/index.md create mode 100644 demo/src/e2e/baseLayout.e2e.spec.ts create mode 100644 demo/src/global.less create mode 100644 demo/src/global.tsx create mode 100644 demo/src/locales/bn-BD.ts create mode 100644 demo/src/locales/bn-BD/component.ts create mode 100644 demo/src/locales/bn-BD/globalHeader.ts create mode 100644 demo/src/locales/bn-BD/menu.ts create mode 100644 demo/src/locales/bn-BD/pages.ts create mode 100644 demo/src/locales/bn-BD/pwa.ts create mode 100644 demo/src/locales/bn-BD/settingDrawer.ts create mode 100644 demo/src/locales/bn-BD/settings.ts create mode 100644 demo/src/locales/en-US.ts create mode 100644 demo/src/locales/en-US/component.ts create mode 100644 demo/src/locales/en-US/globalHeader.ts create mode 100644 demo/src/locales/en-US/menu.ts create mode 100644 demo/src/locales/en-US/pages.ts create mode 100644 demo/src/locales/en-US/pwa.ts create mode 100644 demo/src/locales/en-US/settingDrawer.ts create mode 100644 demo/src/locales/en-US/settings.ts create mode 100644 demo/src/locales/fa-IR.ts create mode 100644 demo/src/locales/fa-IR/component.ts create mode 100644 demo/src/locales/fa-IR/globalHeader.ts create mode 100644 demo/src/locales/fa-IR/menu.ts create mode 100644 demo/src/locales/fa-IR/pages.ts create mode 100644 demo/src/locales/fa-IR/pwa.ts create mode 100644 demo/src/locales/fa-IR/settingDrawer.ts create mode 100644 demo/src/locales/fa-IR/settings.ts create mode 100644 demo/src/locales/id-ID.ts create mode 100644 demo/src/locales/id-ID/component.ts create mode 100644 demo/src/locales/id-ID/globalHeader.ts create mode 100644 demo/src/locales/id-ID/menu.ts create mode 100644 demo/src/locales/id-ID/pages.ts create mode 100644 demo/src/locales/id-ID/pwa.ts create mode 100644 demo/src/locales/id-ID/settingDrawer.ts create mode 100644 demo/src/locales/id-ID/settings.ts create mode 100644 demo/src/locales/ja-JP.ts create mode 100644 demo/src/locales/ja-JP/component.ts create mode 100644 demo/src/locales/ja-JP/globalHeader.ts create mode 100644 demo/src/locales/ja-JP/menu.ts create mode 100644 demo/src/locales/ja-JP/pages.ts create mode 100644 demo/src/locales/ja-JP/pwa.ts create mode 100644 demo/src/locales/ja-JP/settingDrawer.ts create mode 100644 demo/src/locales/ja-JP/settings.ts create mode 100644 demo/src/locales/pt-BR.ts create mode 100644 demo/src/locales/pt-BR/component.ts create mode 100644 demo/src/locales/pt-BR/globalHeader.ts create mode 100644 demo/src/locales/pt-BR/menu.ts create mode 100644 demo/src/locales/pt-BR/pages.ts create mode 100644 demo/src/locales/pt-BR/pwa.ts create mode 100644 demo/src/locales/pt-BR/settingDrawer.ts create mode 100644 demo/src/locales/pt-BR/settings.ts create mode 100644 demo/src/locales/zh-CN.ts create mode 100644 demo/src/locales/zh-CN/component.ts create mode 100644 demo/src/locales/zh-CN/globalHeader.ts create mode 100644 demo/src/locales/zh-CN/menu.ts create mode 100644 demo/src/locales/zh-CN/pages.ts create mode 100644 demo/src/locales/zh-CN/pwa.ts create mode 100644 demo/src/locales/zh-CN/settingDrawer.ts create mode 100644 demo/src/locales/zh-CN/settings.ts create mode 100644 demo/src/locales/zh-TW.ts create mode 100644 demo/src/locales/zh-TW/component.ts create mode 100644 demo/src/locales/zh-TW/globalHeader.ts create mode 100644 demo/src/locales/zh-TW/menu.ts create mode 100644 demo/src/locales/zh-TW/pwa.ts create mode 100644 demo/src/locales/zh-TW/settingDrawer.ts create mode 100644 demo/src/locales/zh-TW/settings.ts create mode 100644 demo/src/manifest.json create mode 100644 demo/src/pages/404.tsx create mode 100644 demo/src/pages/Admin.tsx create mode 100644 demo/src/pages/TableList/components/UpdateForm.tsx create mode 100644 demo/src/pages/TableList/index.tsx create mode 100644 demo/src/pages/Welcome.less create mode 100644 demo/src/pages/Welcome.tsx create mode 100644 demo/src/pages/account/center/Center.less create mode 100644 demo/src/pages/account/center/_mock.ts create mode 100644 demo/src/pages/account/center/components/Applications/index.less create mode 100644 demo/src/pages/account/center/components/Applications/index.tsx create mode 100644 demo/src/pages/account/center/components/ArticleListContent/index.less create mode 100644 demo/src/pages/account/center/components/ArticleListContent/index.tsx create mode 100644 demo/src/pages/account/center/components/Articles/index.less create mode 100644 demo/src/pages/account/center/components/Articles/index.tsx create mode 100644 demo/src/pages/account/center/components/AvatarList/index.less create mode 100644 demo/src/pages/account/center/components/AvatarList/index.tsx create mode 100644 demo/src/pages/account/center/components/Projects/index.less create mode 100644 demo/src/pages/account/center/components/Projects/index.tsx create mode 100644 demo/src/pages/account/center/data.d.ts create mode 100644 demo/src/pages/account/center/index.tsx create mode 100644 demo/src/pages/account/center/service.ts create mode 100644 demo/src/pages/account/settings/_mock.ts create mode 100644 demo/src/pages/account/settings/components/BaseView.less create mode 100644 demo/src/pages/account/settings/components/PhoneView.tsx create mode 100644 demo/src/pages/account/settings/components/base.tsx create mode 100644 demo/src/pages/account/settings/components/binding.tsx create mode 100644 demo/src/pages/account/settings/components/notification.tsx create mode 100644 demo/src/pages/account/settings/components/security.tsx create mode 100644 demo/src/pages/account/settings/data.d.ts create mode 100644 demo/src/pages/account/settings/geographic/city.json create mode 100644 demo/src/pages/account/settings/geographic/province.json create mode 100644 demo/src/pages/account/settings/index.tsx create mode 100644 demo/src/pages/account/settings/service.ts create mode 100644 demo/src/pages/account/settings/style.less create mode 100644 demo/src/pages/dashboard/analysis/_mock.ts create mode 100644 demo/src/pages/dashboard/analysis/components/Charts/Bar/index.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/Charts/ChartCard/index.less create mode 100644 demo/src/pages/dashboard/analysis/components/Charts/ChartCard/index.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/Charts/Field/index.less create mode 100644 demo/src/pages/dashboard/analysis/components/Charts/Field/index.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/Charts/Gauge/index.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/Charts/MiniArea/index.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/Charts/MiniBar/index.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/Charts/MiniProgress/index.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/Charts/Pie/index.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/Charts/TagCloud/index.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/Charts/TimelineChart/index.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/Charts/WaterWave/index.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/Charts/autoHeight.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/Charts/index.less create mode 100644 demo/src/pages/dashboard/analysis/components/Charts/index.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/IntroduceRow.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/NumberInfo/index.less create mode 100644 demo/src/pages/dashboard/analysis/components/NumberInfo/index.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/OfflineData.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/PageLoading/index.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/ProportionSales.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/SalesCard.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/TopSearch.tsx create mode 100644 demo/src/pages/dashboard/analysis/components/Trend/index.less create mode 100644 demo/src/pages/dashboard/analysis/components/Trend/index.tsx create mode 100644 demo/src/pages/dashboard/analysis/data.d.ts create mode 100644 demo/src/pages/dashboard/analysis/index.tsx create mode 100644 demo/src/pages/dashboard/analysis/service.ts create mode 100644 demo/src/pages/dashboard/analysis/style.less create mode 100644 demo/src/pages/dashboard/analysis/utils/Yuan.tsx create mode 100644 demo/src/pages/dashboard/analysis/utils/utils.less create mode 100644 demo/src/pages/dashboard/analysis/utils/utils.ts create mode 100644 demo/src/pages/dashboard/monitor/_mock.ts create mode 100644 demo/src/pages/dashboard/monitor/components/ActiveChart/index.less create mode 100644 demo/src/pages/dashboard/monitor/components/ActiveChart/index.tsx create mode 100644 demo/src/pages/dashboard/monitor/components/Charts/Gauge/index.tsx create mode 100644 demo/src/pages/dashboard/monitor/components/Charts/MiniArea/index.tsx create mode 100644 demo/src/pages/dashboard/monitor/components/Charts/Pie/index.tsx create mode 100644 demo/src/pages/dashboard/monitor/components/Charts/TagCloud/index.tsx create mode 100644 demo/src/pages/dashboard/monitor/components/Charts/WaterWave/index.tsx create mode 100644 demo/src/pages/dashboard/monitor/components/Charts/autoHeight.tsx create mode 100644 demo/src/pages/dashboard/monitor/components/Map/index.tsx create mode 100644 demo/src/pages/dashboard/monitor/data.d.ts create mode 100644 demo/src/pages/dashboard/monitor/index.tsx create mode 100644 demo/src/pages/dashboard/monitor/service.ts create mode 100644 demo/src/pages/dashboard/monitor/style.less create mode 100644 demo/src/pages/dashboard/workplace/_mock.ts create mode 100644 demo/src/pages/dashboard/workplace/components/EditableLinkGroup/index.less create mode 100644 demo/src/pages/dashboard/workplace/components/EditableLinkGroup/index.tsx create mode 100644 demo/src/pages/dashboard/workplace/components/Radar/autoHeight.tsx create mode 100644 demo/src/pages/dashboard/workplace/components/Radar/index.tsx create mode 100644 demo/src/pages/dashboard/workplace/data.d.ts create mode 100644 demo/src/pages/dashboard/workplace/index.tsx create mode 100644 demo/src/pages/dashboard/workplace/service.ts create mode 100644 demo/src/pages/dashboard/workplace/style.less create mode 100644 demo/src/pages/document.ejs create mode 100644 demo/src/pages/editor/flow/common/IconFont/index.ts create mode 100644 demo/src/pages/editor/flow/components/EditorContextMenu/FlowContextMenu.tsx create mode 100644 demo/src/pages/editor/flow/components/EditorContextMenu/KoniContextMenu.tsx create mode 100644 demo/src/pages/editor/flow/components/EditorContextMenu/MenuItem.tsx create mode 100644 demo/src/pages/editor/flow/components/EditorContextMenu/MindContextMenu.tsx create mode 100644 demo/src/pages/editor/flow/components/EditorContextMenu/index.less create mode 100644 demo/src/pages/editor/flow/components/EditorContextMenu/index.tsx create mode 100644 demo/src/pages/editor/flow/components/EditorDetailPanel/DetailForm.tsx create mode 100644 demo/src/pages/editor/flow/components/EditorDetailPanel/FlowDetailPanel.tsx create mode 100644 demo/src/pages/editor/flow/components/EditorDetailPanel/KoniDetailPanel.tsx create mode 100644 demo/src/pages/editor/flow/components/EditorDetailPanel/MindDetailPanel.tsx create mode 100644 demo/src/pages/editor/flow/components/EditorDetailPanel/index.less create mode 100644 demo/src/pages/editor/flow/components/EditorDetailPanel/index.tsx create mode 100644 demo/src/pages/editor/flow/components/EditorItemPanel/FlowItemPanel.tsx create mode 100644 demo/src/pages/editor/flow/components/EditorItemPanel/KoniItemPanel.tsx create mode 100644 demo/src/pages/editor/flow/components/EditorItemPanel/index.less create mode 100644 demo/src/pages/editor/flow/components/EditorItemPanel/index.tsx create mode 100644 demo/src/pages/editor/flow/components/EditorMinimap/index.tsx create mode 100644 demo/src/pages/editor/flow/components/EditorToolbar/FlowToolbar.tsx create mode 100644 demo/src/pages/editor/flow/components/EditorToolbar/KoniToolbar.tsx create mode 100644 demo/src/pages/editor/flow/components/EditorToolbar/MindToolbar.tsx create mode 100644 demo/src/pages/editor/flow/components/EditorToolbar/ToolbarButton.tsx create mode 100644 demo/src/pages/editor/flow/components/EditorToolbar/index.less create mode 100644 demo/src/pages/editor/flow/components/EditorToolbar/index.tsx create mode 100644 demo/src/pages/editor/flow/index.less create mode 100644 demo/src/pages/editor/flow/index.tsx create mode 100644 demo/src/pages/editor/koni/common/IconFont/index.ts create mode 100644 demo/src/pages/editor/koni/components/EditorContextMenu/FlowContextMenu.tsx create mode 100644 demo/src/pages/editor/koni/components/EditorContextMenu/KoniContextMenu.tsx create mode 100644 demo/src/pages/editor/koni/components/EditorContextMenu/MenuItem.tsx create mode 100644 demo/src/pages/editor/koni/components/EditorContextMenu/MindContextMenu.tsx create mode 100644 demo/src/pages/editor/koni/components/EditorContextMenu/index.less create mode 100644 demo/src/pages/editor/koni/components/EditorContextMenu/index.tsx create mode 100644 demo/src/pages/editor/koni/components/EditorDetailPanel/DetailForm.tsx create mode 100644 demo/src/pages/editor/koni/components/EditorDetailPanel/FlowDetailPanel.tsx create mode 100644 demo/src/pages/editor/koni/components/EditorDetailPanel/KoniDetailPanel.tsx create mode 100644 demo/src/pages/editor/koni/components/EditorDetailPanel/MindDetailPanel.tsx create mode 100644 demo/src/pages/editor/koni/components/EditorDetailPanel/index.less create mode 100644 demo/src/pages/editor/koni/components/EditorDetailPanel/index.tsx create mode 100644 demo/src/pages/editor/koni/components/EditorItemPanel/FlowItemPanel.tsx create mode 100644 demo/src/pages/editor/koni/components/EditorItemPanel/KoniItemPanel.tsx create mode 100644 demo/src/pages/editor/koni/components/EditorItemPanel/index.less create mode 100644 demo/src/pages/editor/koni/components/EditorItemPanel/index.tsx create mode 100644 demo/src/pages/editor/koni/components/EditorMinimap/index.tsx create mode 100644 demo/src/pages/editor/koni/components/EditorToolbar/FlowToolbar.tsx create mode 100644 demo/src/pages/editor/koni/components/EditorToolbar/KoniToolbar.tsx create mode 100644 demo/src/pages/editor/koni/components/EditorToolbar/MindToolbar.tsx create mode 100644 demo/src/pages/editor/koni/components/EditorToolbar/ToolbarButton.tsx create mode 100644 demo/src/pages/editor/koni/components/EditorToolbar/index.less create mode 100644 demo/src/pages/editor/koni/components/EditorToolbar/index.tsx create mode 100644 demo/src/pages/editor/koni/index.less create mode 100644 demo/src/pages/editor/koni/index.tsx create mode 100644 demo/src/pages/editor/mind/common/IconFont/index.ts create mode 100644 demo/src/pages/editor/mind/components/EditorContextMenu/FlowContextMenu.tsx create mode 100644 demo/src/pages/editor/mind/components/EditorContextMenu/KoniContextMenu.tsx create mode 100644 demo/src/pages/editor/mind/components/EditorContextMenu/MenuItem.tsx create mode 100644 demo/src/pages/editor/mind/components/EditorContextMenu/MindContextMenu.tsx create mode 100644 demo/src/pages/editor/mind/components/EditorContextMenu/index.less create mode 100644 demo/src/pages/editor/mind/components/EditorContextMenu/index.tsx create mode 100644 demo/src/pages/editor/mind/components/EditorDetailPanel/DetailForm.tsx create mode 100644 demo/src/pages/editor/mind/components/EditorDetailPanel/FlowDetailPanel.tsx create mode 100644 demo/src/pages/editor/mind/components/EditorDetailPanel/KoniDetailPanel.tsx create mode 100644 demo/src/pages/editor/mind/components/EditorDetailPanel/MindDetailPanel.tsx create mode 100644 demo/src/pages/editor/mind/components/EditorDetailPanel/index.less create mode 100644 demo/src/pages/editor/mind/components/EditorDetailPanel/index.tsx create mode 100644 demo/src/pages/editor/mind/components/EditorItemPanel/FlowItemPanel.tsx create mode 100644 demo/src/pages/editor/mind/components/EditorItemPanel/KoniItemPanel.tsx create mode 100644 demo/src/pages/editor/mind/components/EditorItemPanel/index.less create mode 100644 demo/src/pages/editor/mind/components/EditorItemPanel/index.tsx create mode 100644 demo/src/pages/editor/mind/components/EditorMinimap/index.tsx create mode 100644 demo/src/pages/editor/mind/components/EditorToolbar/FlowToolbar.tsx create mode 100644 demo/src/pages/editor/mind/components/EditorToolbar/KoniToolbar.tsx create mode 100644 demo/src/pages/editor/mind/components/EditorToolbar/MindToolbar.tsx create mode 100644 demo/src/pages/editor/mind/components/EditorToolbar/ToolbarButton.tsx create mode 100644 demo/src/pages/editor/mind/components/EditorToolbar/index.less create mode 100644 demo/src/pages/editor/mind/components/EditorToolbar/index.tsx create mode 100644 demo/src/pages/editor/mind/index.less create mode 100644 demo/src/pages/editor/mind/index.tsx create mode 100644 demo/src/pages/editor/mind/worldCup2018.json create mode 100644 demo/src/pages/exception/403/index.tsx create mode 100644 demo/src/pages/exception/404/index.tsx create mode 100644 demo/src/pages/exception/500/index.tsx create mode 100644 demo/src/pages/form/advanced-form/_mock.ts create mode 100644 demo/src/pages/form/advanced-form/components/TableForm.tsx create mode 100644 demo/src/pages/form/advanced-form/index.tsx create mode 100644 demo/src/pages/form/advanced-form/service.ts create mode 100644 demo/src/pages/form/advanced-form/style.less create mode 100644 demo/src/pages/form/basic-form/_mock.ts create mode 100644 demo/src/pages/form/basic-form/index.tsx create mode 100644 demo/src/pages/form/basic-form/service.ts create mode 100644 demo/src/pages/form/basic-form/style.less create mode 100644 demo/src/pages/form/step-form/_mock.ts create mode 100644 demo/src/pages/form/step-form/data.d.ts create mode 100644 demo/src/pages/form/step-form/index.tsx create mode 100644 demo/src/pages/form/step-form/service.ts create mode 100644 demo/src/pages/form/step-form/style.less create mode 100644 demo/src/pages/list/basic-list/_mock.ts create mode 100644 demo/src/pages/list/basic-list/components/OperationModal.tsx create mode 100644 demo/src/pages/list/basic-list/data.d.ts create mode 100644 demo/src/pages/list/basic-list/index.tsx create mode 100644 demo/src/pages/list/basic-list/service.ts create mode 100644 demo/src/pages/list/basic-list/style.less create mode 100644 demo/src/pages/list/basic-list/utils/utils.less create mode 100644 demo/src/pages/list/card-list/_mock.ts create mode 100644 demo/src/pages/list/card-list/data.d.ts create mode 100644 demo/src/pages/list/card-list/index.tsx create mode 100644 demo/src/pages/list/card-list/service.ts create mode 100644 demo/src/pages/list/card-list/style.less create mode 100644 demo/src/pages/list/card-list/utils/utils.less create mode 100644 demo/src/pages/list/search/applications/_mock.ts create mode 100644 demo/src/pages/list/search/applications/components/StandardFormRow/index.less create mode 100644 demo/src/pages/list/search/applications/components/StandardFormRow/index.tsx create mode 100644 demo/src/pages/list/search/applications/components/TagSelect/index.less create mode 100644 demo/src/pages/list/search/applications/components/TagSelect/index.tsx create mode 100644 demo/src/pages/list/search/applications/data.d.ts create mode 100644 demo/src/pages/list/search/applications/index.tsx create mode 100644 demo/src/pages/list/search/applications/service.ts create mode 100644 demo/src/pages/list/search/applications/style.less create mode 100644 demo/src/pages/list/search/applications/utils/utils.less create mode 100644 demo/src/pages/list/search/articles/_mock.ts create mode 100644 demo/src/pages/list/search/articles/components/ArticleListContent/index.less create mode 100644 demo/src/pages/list/search/articles/components/ArticleListContent/index.tsx create mode 100644 demo/src/pages/list/search/articles/components/StandardFormRow/index.less create mode 100644 demo/src/pages/list/search/articles/components/StandardFormRow/index.tsx create mode 100644 demo/src/pages/list/search/articles/components/TagSelect/index.less create mode 100644 demo/src/pages/list/search/articles/components/TagSelect/index.tsx create mode 100644 demo/src/pages/list/search/articles/data.d.ts create mode 100644 demo/src/pages/list/search/articles/index.tsx create mode 100644 demo/src/pages/list/search/articles/service.ts create mode 100644 demo/src/pages/list/search/articles/style.less create mode 100644 demo/src/pages/list/search/index.tsx create mode 100644 demo/src/pages/list/search/projects/_mock.ts create mode 100644 demo/src/pages/list/search/projects/components/AvatarList/index.less create mode 100644 demo/src/pages/list/search/projects/components/AvatarList/index.tsx create mode 100644 demo/src/pages/list/search/projects/components/StandardFormRow/index.less create mode 100644 demo/src/pages/list/search/projects/components/StandardFormRow/index.tsx create mode 100644 demo/src/pages/list/search/projects/components/TagSelect/index.less create mode 100644 demo/src/pages/list/search/projects/components/TagSelect/index.tsx create mode 100644 demo/src/pages/list/search/projects/data.d.ts create mode 100644 demo/src/pages/list/search/projects/index.tsx create mode 100644 demo/src/pages/list/search/projects/service.ts create mode 100644 demo/src/pages/list/search/projects/style.less create mode 100644 demo/src/pages/list/search/projects/utils/utils.less create mode 100644 demo/src/pages/list/table-list/_mock.ts create mode 100644 demo/src/pages/list/table-list/components/CreateForm.tsx create mode 100644 demo/src/pages/list/table-list/components/UpdateForm.tsx create mode 100644 demo/src/pages/list/table-list/data.d.ts create mode 100644 demo/src/pages/list/table-list/index.tsx create mode 100644 demo/src/pages/list/table-list/service.ts create mode 100644 demo/src/pages/profile/advanced/_mock.ts create mode 100644 demo/src/pages/profile/advanced/data.d.ts create mode 100644 demo/src/pages/profile/advanced/index.tsx create mode 100644 demo/src/pages/profile/advanced/service.ts create mode 100644 demo/src/pages/profile/advanced/style.less create mode 100644 demo/src/pages/profile/basic/_mock.ts create mode 100644 demo/src/pages/profile/basic/data.d.ts create mode 100644 demo/src/pages/profile/basic/index.tsx create mode 100644 demo/src/pages/profile/basic/service.ts create mode 100644 demo/src/pages/profile/basic/style.less create mode 100644 demo/src/pages/result/fail/index.less create mode 100644 demo/src/pages/result/fail/index.tsx create mode 100644 demo/src/pages/result/success/index.less create mode 100644 demo/src/pages/result/success/index.tsx create mode 100644 demo/src/pages/user/Login/index.less create mode 100644 demo/src/pages/user/Login/index.tsx create mode 100644 demo/src/pages/user/register-result/index.tsx create mode 100644 demo/src/pages/user/register-result/style.less create mode 100644 demo/src/pages/user/register/_mock.ts create mode 100644 demo/src/pages/user/register/index.tsx create mode 100644 demo/src/pages/user/register/service.ts create mode 100644 demo/src/pages/user/register/style.less create mode 100644 demo/src/service-worker.js create mode 100644 demo/src/services/ant-design-pro/api.ts create mode 100644 demo/src/services/ant-design-pro/index.ts create mode 100644 demo/src/services/ant-design-pro/login.ts create mode 100644 demo/src/services/ant-design-pro/typings.d.ts create mode 100644 demo/src/services/swagger/index.ts create mode 100644 demo/src/services/swagger/pet.ts create mode 100644 demo/src/services/swagger/store.ts create mode 100644 demo/src/services/swagger/typings.d.ts create mode 100644 demo/src/services/swagger/user.ts create mode 100644 demo/src/typings.d.ts create mode 100644 demo/tests/run-tests.js create mode 100644 demo/tests/setupTests.js create mode 100644 demo/tsconfig.json diff --git a/demo/.editorconfig b/demo/.editorconfig new file mode 100644 index 00000000..7e3649ac --- /dev/null +++ b/demo/.editorconfig @@ -0,0 +1,16 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false + +[Makefile] +indent_style = tab diff --git a/demo/.eslintignore b/demo/.eslintignore new file mode 100644 index 00000000..8336e935 --- /dev/null +++ b/demo/.eslintignore @@ -0,0 +1,8 @@ +/lambda/ +/scripts +/config +.history +public +dist +.umi +mock \ No newline at end of file diff --git a/demo/.eslintrc.js b/demo/.eslintrc.js new file mode 100644 index 00000000..b882c20e --- /dev/null +++ b/demo/.eslintrc.js @@ -0,0 +1,8 @@ +module.exports = { + extends: [require.resolve('@umijs/fabric/dist/eslint')], + globals: { + ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION: true, + page: true, + REACT_APP_ENV: true, + }, +}; diff --git a/demo/.gitignore b/demo/.gitignore new file mode 100644 index 00000000..21ab9fb7 --- /dev/null +++ b/demo/.gitignore @@ -0,0 +1,40 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +**/node_modules +# roadhog-api-doc ignore +/src/utils/request-temp.js +_roadhog-api-doc + +# production +/dist + +# misc +.DS_Store +npm-debug.log* +yarn-error.log + +/coverage +.idea +yarn.lock +package-lock.json +pnpm-lock.yaml +*bak + + +# visual studio code +.history +*.log +functions/* +.temp/** + +# umi +.umi +.umi-production + +# screenshot +screenshot +.firebase +.eslintcache + +build diff --git a/demo/.husky/.gitignore b/demo/.husky/.gitignore new file mode 100644 index 00000000..31354ec1 --- /dev/null +++ b/demo/.husky/.gitignore @@ -0,0 +1 @@ +_ diff --git a/demo/.husky/commit-msg b/demo/.husky/commit-msg new file mode 100755 index 00000000..d50cdcf9 --- /dev/null +++ b/demo/.husky/commit-msg @@ -0,0 +1,7 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +# Export Git hook params +export GIT_PARAMS=$* + +npx --no-install fabric verify-commit diff --git a/demo/.husky/pre-commit b/demo/.husky/pre-commit new file mode 100755 index 00000000..d37daa07 --- /dev/null +++ b/demo/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/bin/sh +. "$(dirname "$0")/_/husky.sh" + +npx --no-install lint-staged diff --git a/demo/.prettierignore b/demo/.prettierignore new file mode 100644 index 00000000..d17efb44 --- /dev/null +++ b/demo/.prettierignore @@ -0,0 +1,23 @@ +**/*.svg +package.json +.umi +.umi-production +/dist +.dockerignore +.DS_Store +.eslintignore +*.png +*.toml +docker +.editorconfig +Dockerfile* +.gitignore +.prettierignore +LICENSE +.eslintcache +*.lock +yarn-error.log +.history +CNAME +/build +/public \ No newline at end of file diff --git a/demo/.prettierrc.js b/demo/.prettierrc.js new file mode 100644 index 00000000..7b597d78 --- /dev/null +++ b/demo/.prettierrc.js @@ -0,0 +1,5 @@ +const fabric = require('@umijs/fabric'); + +module.exports = { + ...fabric.prettier, +}; diff --git a/demo/.stylelintrc.js b/demo/.stylelintrc.js new file mode 100644 index 00000000..a1184de4 --- /dev/null +++ b/demo/.stylelintrc.js @@ -0,0 +1,3 @@ +module.exports = { + extends: [require.resolve('@umijs/fabric/dist/stylelint')], +}; diff --git a/demo/.vscode/extensions.json b/demo/.vscode/extensions.json new file mode 100644 index 00000000..33f300da --- /dev/null +++ b/demo/.vscode/extensions.json @@ -0,0 +1,8 @@ +{ + "recommendations": [ + "esbenp.prettier-vscode", + "dbaeumer.vscode-eslint", + "stylelint.vscode-stylelint", + "wangzy.sneak-mark" + ] +} diff --git a/demo/.vscode/settings.json b/demo/.vscode/settings.json new file mode 100644 index 00000000..a5d9d035 --- /dev/null +++ b/demo/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "editor.formatOnSave": true, + "prettier.requireConfig": true, + "editor.defaultFormatter": "esbenp.prettier-vscode" +} diff --git a/demo/README.md b/demo/README.md new file mode 100644 index 00000000..4c89a727 --- /dev/null +++ b/demo/README.md @@ -0,0 +1,57 @@ +# Ant Design Pro + +This project is initialized with [Ant Design Pro](https://pro.ant.design). Follow is the quick guide for how to use. + +## Environment Prepare + +Install `node_modules`: + +```bash +npm install +``` + +or + +```bash +yarn +``` + +## Provided Scripts + +Ant Design Pro provides some useful script to help you quick start and build with web project, code style check and test. + +Scripts provided in `package.json`. It's safe to modify or add additional script: + +### Start project + +```bash +npm start +``` + +### Build project + +```bash +npm run build +``` + +### Check code style + +```bash +npm run lint +``` + +You can also use script to auto fix some lint error: + +```bash +npm run lint:fix +``` + +### Test code + +```bash +npm test +``` + +## More + +You can view full document on our [official website](https://pro.ant.design). And welcome any feedback in our [github](https://github.com/ant-design/ant-design-pro). diff --git a/demo/config/config.dev.ts b/demo/config/config.dev.ts new file mode 100644 index 00000000..ab0e590f --- /dev/null +++ b/demo/config/config.dev.ts @@ -0,0 +1,15 @@ +// https://umijs.org/config/ +import { defineConfig } from 'umi'; + +export default defineConfig({ + plugins: [ + // https://github.com/zthxxx/react-dev-inspector + 'react-dev-inspector/plugins/umi/react-inspector', + ], + // https://github.com/zthxxx/react-dev-inspector#inspector-loader-props + inspectorConfig: { + exclude: [], + babelPlugins: [], + babelOptions: {}, + }, +}); diff --git a/demo/config/config.ts b/demo/config/config.ts new file mode 100644 index 00000000..21a024d2 --- /dev/null +++ b/demo/config/config.ts @@ -0,0 +1,358 @@ +// https://umijs.org/config/ +import { defineConfig } from 'umi'; +import { join } from 'path'; +import defaultSettings from './defaultSettings'; +import proxy from './proxy'; + +const { REACT_APP_ENV } = process.env; + +export default defineConfig({ + hash: true, + antd: {}, + dva: { + hmr: true, + }, + layout: { + // https://umijs.org/zh-CN/plugins/plugin-layout + locale: true, + siderWidth: 208, + ...defaultSettings, + }, + // https://umijs.org/zh-CN/plugins/plugin-locale + locale: { + // default zh-CN + default: 'zh-CN', + antd: true, + // default true, when it is true, will use `navigator.language` overwrite default + baseNavigator: true, + }, + dynamicImport: { + loading: '@ant-design/pro-layout/es/PageLoading', + }, + targets: { + ie: 11, + }, + // umi routes: https://umijs.org/docs/routing + routes: [ + { + path: '/user', + layout: false, + routes: [ + { + path: '/user/login', + layout: false, + name: 'login', + component: './user/Login', + }, + { + path: '/user', + redirect: '/user/login', + }, + { + name: 'register-result', + icon: 'smile', + path: '/user/register-result', + component: './user/register-result', + }, + { + name: 'register', + icon: 'smile', + path: '/user/register', + component: './user/register', + }, + { + component: '404', + }, + ], + }, + { + path: '/dashboard', + name: 'dashboard', + icon: 'dashboard', + routes: [ + { + path: '/dashboard', + redirect: '/dashboard/analysis', + }, + { + name: 'analysis', + icon: 'smile', + path: '/dashboard/analysis', + component: './dashboard/analysis', + }, + { + name: 'monitor', + icon: 'smile', + path: '/dashboard/monitor', + component: './dashboard/monitor', + }, + { + name: 'workplace', + icon: 'smile', + path: '/dashboard/workplace', + component: './dashboard/workplace', + }, + ], + }, + { + path: '/form', + icon: 'form', + name: 'form', + routes: [ + { + path: '/form', + redirect: '/form/basic-form', + }, + { + name: 'basic-form', + icon: 'smile', + path: '/form/basic-form', + component: './form/basic-form', + }, + { + name: 'step-form', + icon: 'smile', + path: '/form/step-form', + component: './form/step-form', + }, + { + name: 'advanced-form', + icon: 'smile', + path: '/form/advanced-form', + component: './form/advanced-form', + }, + ], + }, + { + path: '/list', + icon: 'table', + name: 'list', + routes: [ + { + path: '/list/search', + name: 'search-list', + component: './list/search', + routes: [ + { + path: '/list/search', + redirect: '/list/search/articles', + }, + { + name: 'articles', + icon: 'smile', + path: '/list/search/articles', + component: './list/search/articles', + }, + { + name: 'projects', + icon: 'smile', + path: '/list/search/projects', + component: './list/search/projects', + }, + { + name: 'applications', + icon: 'smile', + path: '/list/search/applications', + component: './list/search/applications', + }, + ], + }, + { + path: '/list', + redirect: '/list/table-list', + }, + { + name: 'table-list', + icon: 'smile', + path: '/list/table-list', + component: './list/table-list', + }, + { + name: 'basic-list', + icon: 'smile', + path: '/list/basic-list', + component: './list/basic-list', + }, + { + name: 'card-list', + icon: 'smile', + path: '/list/card-list', + component: './list/card-list', + }, + ], + }, + { + path: '/profile', + name: 'profile', + icon: 'profile', + routes: [ + { + path: '/profile', + redirect: '/profile/basic', + }, + { + name: 'basic', + icon: 'smile', + path: '/profile/basic', + component: './profile/basic', + }, + { + name: 'advanced', + icon: 'smile', + path: '/profile/advanced', + component: './profile/advanced', + }, + ], + }, + { + name: 'result', + icon: 'CheckCircleOutlined', + path: '/result', + routes: [ + { + path: '/result', + redirect: '/result/success', + }, + { + name: 'success', + icon: 'smile', + path: '/result/success', + component: './result/success', + }, + { + name: 'fail', + icon: 'smile', + path: '/result/fail', + component: './result/fail', + }, + ], + }, + { + name: 'exception', + icon: 'warning', + path: '/exception', + routes: [ + { + path: '/exception', + redirect: '/exception/403', + }, + { + name: '403', + icon: 'smile', + path: '/exception/403', + component: './exception/403', + }, + { + name: '404', + icon: 'smile', + path: '/exception/404', + component: './exception/404', + }, + { + name: '500', + icon: 'smile', + path: '/exception/500', + component: './exception/500', + }, + ], + }, + { + name: 'account', + icon: 'user', + path: '/account', + routes: [ + { + path: '/account', + redirect: '/account/center', + }, + { + name: 'center', + icon: 'smile', + path: '/account/center', + component: './account/center', + }, + { + name: 'settings', + icon: 'smile', + path: '/account/settings', + component: './account/settings', + }, + ], + }, + { + name: 'editor', + icon: 'highlight', + path: '/editor', + routes: [ + { + path: '/editor', + redirect: '/editor/flow', + }, + { + name: 'flow', + icon: 'smile', + path: '/editor/flow', + component: './editor/flow', + }, + { + name: 'mind', + icon: 'smile', + path: '/editor/mind', + component: './editor/mind', + }, + { + name: 'koni', + icon: 'smile', + path: '/editor/koni', + component: './editor/koni', + }, + ], + }, + { + path: '/', + redirect: '/dashboard/analysis', + }, + { + component: '404', + }, + ], + access: {}, + // Theme for antd: https://ant.design/docs/react/customize-theme-cn + theme: { + // 如果不想要 configProvide 动态设置主题需要把这个设置为 default + // 只有设置为 variable, 才能使用 configProvide 动态设置主色调 + // https://ant.design/docs/react/customize-theme-variable-cn + 'root-entry-name': 'variable', + }, + // esbuild is father build tools + // https://umijs.org/plugins/plugin-esbuild + esbuild: {}, + title: false, + ignoreMomentLocale: true, + proxy: proxy[REACT_APP_ENV || 'dev'], + manifest: { + basePath: '/', + }, + // Fast Refresh 热更新 + fastRefresh: {}, + openAPI: [ + { + requestLibPath: "import { request } from 'umi'", + // 或者使用在线的版本 + // schemaPath: "https://gw.alipayobjects.com/os/antfincdn/M%24jrzTTYJN/oneapi.json" + schemaPath: join(__dirname, 'oneapi.json'), + mock: false, + }, + { + requestLibPath: "import { request } from 'umi'", + schemaPath: 'https://gw.alipayobjects.com/os/antfincdn/CA1dOm%2631B/openapi.json', + projectName: 'swagger', + }, + ], + nodeModulesTransform: { + type: 'none', + }, + mfsu: {}, + webpack5: {}, + exportStatic: {}, +}); diff --git a/demo/config/defaultSettings.ts b/demo/config/defaultSettings.ts new file mode 100644 index 00000000..15397c6c --- /dev/null +++ b/demo/config/defaultSettings.ts @@ -0,0 +1,21 @@ +import { Settings as LayoutSettings } from '@ant-design/pro-layout'; + +const Settings: LayoutSettings & { + pwa?: boolean; + logo?: string; +} = { + navTheme: 'light', + // 拂晓蓝 + primaryColor: '#1890ff', + layout: 'mix', + contentWidth: 'Fluid', + fixedHeader: false, + fixSiderbar: true, + colorWeak: false, + title: 'Ant Design Pro', + pwa: false, + logo: 'https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg', + iconfontUrl: '', +}; + +export default Settings; diff --git a/demo/config/oneapi.json b/demo/config/oneapi.json new file mode 100644 index 00000000..c77d988b --- /dev/null +++ b/demo/config/oneapi.json @@ -0,0 +1,593 @@ +{ + "openapi": "3.0.1", + "info": { + "title": "Ant Design Pro", + "version": "1.0.0" + }, + "servers": [ + { + "url": "http://localhost:8000/" + }, + { + "url": "https://localhost:8000/" + } + ], + "paths": { + "/api/currentUser": { + "get": { + "tags": ["api"], + "description": "获取当前的用户", + "operationId": "currentUser", + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CurrentUser" + } + } + } + }, + "401": { + "description": "Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "x-swagger-router-controller": "api" + }, + "/api/login/captcha": { + "post": { + "description": "发送验证码", + "operationId": "getFakeCaptcha", + "tags": ["login"], + "parameters": [ + { + "name": "phone", + "in": "query", + "description": "手机号", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FakeCaptcha" + } + } + } + } + } + } + }, + "/api/login/outLogin": { + "post": { + "description": "登录接口", + "operationId": "outLogin", + "tags": ["login"], + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "401": { + "description": "Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "x-swagger-router-controller": "api" + }, + "/api/login/account": { + "post": { + "tags": ["login"], + "description": "登录接口", + "operationId": "login", + "requestBody": { + "description": "登录系统", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginParams" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LoginResult" + } + } + } + }, + "401": { + "description": "Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "x-codegen-request-body-name": "body" + }, + "x-swagger-router-controller": "api" + }, + "/api/notices": { + "summary": "getNotices", + "description": "NoticeIconItem", + "get": { + "tags": ["api"], + "operationId": "getNotices", + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NoticeIconList" + } + } + } + } + } + } + }, + "/api/rule": { + "get": { + "tags": ["rule"], + "description": "获取规则列表", + "operationId": "rule", + "parameters": [ + { + "name": "current", + "in": "query", + "description": "当前的页码", + "schema": { + "type": "number" + } + }, + { + "name": "pageSize", + "in": "query", + "description": "页面的容量", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RuleList" + } + } + } + }, + "401": { + "description": "Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "post": { + "tags": ["rule"], + "description": "新建规则", + "operationId": "addRule", + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RuleListItem" + } + } + } + }, + "401": { + "description": "Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "put": { + "tags": ["rule"], + "description": "新建规则", + "operationId": "updateRule", + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RuleListItem" + } + } + } + }, + "401": { + "description": "Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "delete": { + "tags": ["rule"], + "description": "删除规则", + "operationId": "removeRule", + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "401": { + "description": "Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + } + } + }, + "x-swagger-router-controller": "api" + }, + "/swagger": { + "x-swagger-pipe": "swagger_raw" + } + }, + "components": { + "schemas": { + "CurrentUser": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "userid": { + "type": "string" + }, + "email": { + "type": "string" + }, + "signature": { + "type": "string" + }, + "title": { + "type": "string" + }, + "group": { + "type": "string" + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "label": { + "type": "string" + } + } + } + }, + "notifyCount": { + "type": "integer", + "format": "int32" + }, + "unreadCount": { + "type": "integer", + "format": "int32" + }, + "country": { + "type": "string" + }, + "access": { + "type": "string" + }, + "geographic": { + "type": "object", + "properties": { + "province": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "key": { + "type": "string" + } + } + }, + "city": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "key": { + "type": "string" + } + } + } + } + }, + "address": { + "type": "string" + }, + "phone": { + "type": "string" + } + } + }, + "LoginResult": { + "type": "object", + "properties": { + "status": { + "type": "string" + }, + "type": { + "type": "string" + }, + "currentAuthority": { + "type": "string" + } + } + }, + "PageParams": { + "type": "object", + "properties": { + "current": { + "type": "number" + }, + "pageSize": { + "type": "number" + } + } + }, + "RuleListItem": { + "type": "object", + "properties": { + "key": { + "type": "integer", + "format": "int32" + }, + "disabled": { + "type": "boolean" + }, + "href": { + "type": "string" + }, + "avatar": { + "type": "string" + }, + "name": { + "type": "string" + }, + "owner": { + "type": "string" + }, + "desc": { + "type": "string" + }, + "callNo": { + "type": "integer", + "format": "int32" + }, + "status": { + "type": "integer", + "format": "int32" + }, + "updatedAt": { + "type": "string", + "format": "datetime" + }, + "createdAt": { + "type": "string", + "format": "datetime" + }, + "progress": { + "type": "integer", + "format": "int32" + } + } + }, + "RuleList": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RuleListItem" + } + }, + "total": { + "type": "integer", + "description": "列表的内容总数", + "format": "int32" + }, + "success": { + "type": "boolean" + } + } + }, + "FakeCaptcha": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "status": { + "type": "string" + } + } + }, + "LoginParams": { + "type": "object", + "properties": { + "username": { + "type": "string" + }, + "password": { + "type": "string" + }, + "autoLogin": { + "type": "boolean" + }, + "type": { + "type": "string" + } + } + }, + "ErrorResponse": { + "required": ["errorCode"], + "type": "object", + "properties": { + "errorCode": { + "type": "string", + "description": "业务约定的错误码" + }, + "errorMessage": { + "type": "string", + "description": "业务上的错误信息" + }, + "success": { + "type": "boolean", + "description": "业务上的请求是否成功" + } + } + }, + "NoticeIconList": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NoticeIconItem" + } + }, + "total": { + "type": "integer", + "description": "列表的内容总数", + "format": "int32" + }, + "success": { + "type": "boolean" + } + } + }, + "NoticeIconItemType": { + "title": "NoticeIconItemType", + "description": "已读未读列表的枚举", + "type": "string", + "properties": {}, + "enum": ["notification", "message", "event"] + }, + "NoticeIconItem": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "extra": { + "type": "string", + "format": "any" + }, + "key": { "type": "string" }, + "read": { + "type": "boolean" + }, + "avatar": { + "type": "string" + }, + "title": { + "type": "string" + }, + "status": { + "type": "string" + }, + "datetime": { + "type": "string", + "format": "date" + }, + "description": { + "type": "string" + }, + "type": { + "extensions": { + "x-is-enum": true + }, + "$ref": "#/components/schemas/NoticeIconItemType" + } + } + } + } + } +} diff --git a/demo/config/proxy.ts b/demo/config/proxy.ts new file mode 100644 index 00000000..a8194b7e --- /dev/null +++ b/demo/config/proxy.ts @@ -0,0 +1,34 @@ +/** + * 在生产环境 代理是无法生效的,所以这里没有生产环境的配置 + * ------------------------------- + * The agent cannot take effect in the production environment + * so there is no configuration of the production environment + * For details, please see + * https://pro.ant.design/docs/deploy + */ +export default { + dev: { + // localhost:8000/api/** -> https://preview.pro.ant.design/api/** + '/api/': { + // 要代理的地址 + target: 'https://preview.pro.ant.design', + // 配置了这个可以从 http 代理到 https + // 依赖 origin 的功能可能需要这个,比如 cookie + changeOrigin: true, + }, + }, + test: { + '/api/': { + target: 'https://proapi.azurewebsites.net', + changeOrigin: true, + pathRewrite: { '^': '' }, + }, + }, + pre: { + '/api/': { + target: 'your pre url', + changeOrigin: true, + pathRewrite: { '^': '' }, + }, + }, +}; diff --git a/demo/config/routes.ts b/demo/config/routes.ts new file mode 100644 index 00000000..92b61fbe --- /dev/null +++ b/demo/config/routes.ts @@ -0,0 +1,53 @@ +export default [ + { + path: '/user', + layout: false, + routes: [ + { + name: 'login', + path: '/user/login', + component: './user/Login', + }, + { + component: './404', + }, + ], + }, + { + path: '/welcome', + name: 'welcome', + icon: 'smile', + component: './Welcome', + }, + { + path: '/admin', + name: 'admin', + icon: 'crown', + access: 'canAdmin', + component: './Admin', + routes: [ + { + path: '/admin/sub-page', + name: 'sub-page', + icon: 'smile', + component: './Welcome', + }, + { + component: './404', + }, + ], + }, + { + name: 'list.table-list', + icon: 'table', + path: '/list', + component: './TableList', + }, + { + path: '/', + redirect: '/welcome', + }, + { + component: './404', + }, +]; diff --git a/demo/jest.config.js b/demo/jest.config.js new file mode 100644 index 00000000..47295738 --- /dev/null +++ b/demo/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + testURL: 'http://localhost:8000', + verbose: false, + extraSetupFiles: ['./tests/setupTests.js'], + globals: { + ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION: false, + localStorage: null, + }, +}; diff --git a/demo/jsconfig.json b/demo/jsconfig.json new file mode 100644 index 00000000..197bee5d --- /dev/null +++ b/demo/jsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "jsx": "react-jsx", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/demo/mock/listTableList.ts b/demo/mock/listTableList.ts new file mode 100644 index 00000000..08ed86de --- /dev/null +++ b/demo/mock/listTableList.ts @@ -0,0 +1,174 @@ +import { Request, Response } from 'express'; +import moment from 'moment'; +import { parse } from 'url'; + +// mock tableListDataSource +const genList = (current: number, pageSize: number) => { + const tableListDataSource: API.RuleListItem[] = []; + + for (let i = 0; i < pageSize; i += 1) { + const index = (current - 1) * 10 + i; + tableListDataSource.push({ + key: index, + disabled: i % 6 === 0, + href: 'https://ant.design', + avatar: [ + 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + ][i % 2], + name: `TradeCode ${index}`, + owner: '曲丽丽', + desc: '这是一段描述', + callNo: Math.floor(Math.random() * 1000), + status: Math.floor(Math.random() * 10) % 4, + updatedAt: moment().format('YYYY-MM-DD'), + createdAt: moment().format('YYYY-MM-DD'), + progress: Math.ceil(Math.random() * 100), + }); + } + tableListDataSource.reverse(); + return tableListDataSource; +}; + +let tableListDataSource = genList(1, 100); + +function getRule(req: Request, res: Response, u: string) { + let realUrl = u; + if (!realUrl || Object.prototype.toString.call(realUrl) !== '[object String]') { + realUrl = req.url; + } + const { current = 1, pageSize = 10 } = req.query; + const params = parse(realUrl, true).query as unknown as API.PageParams & + API.RuleListItem & { + sorter: any; + filter: any; + }; + + let dataSource = [...tableListDataSource].slice( + ((current as number) - 1) * (pageSize as number), + (current as number) * (pageSize as number), + ); + if (params.sorter) { + const sorter = JSON.parse(params.sorter); + dataSource = dataSource.sort((prev, next) => { + let sortNumber = 0; + Object.keys(sorter).forEach((key) => { + if (sorter[key] === 'descend') { + if (prev[key] - next[key] > 0) { + sortNumber += -1; + } else { + sortNumber += 1; + } + return; + } + if (prev[key] - next[key] > 0) { + sortNumber += 1; + } else { + sortNumber += -1; + } + }); + return sortNumber; + }); + } + if (params.filter) { + const filter = JSON.parse(params.filter as any) as { + [key: string]: string[]; + }; + if (Object.keys(filter).length > 0) { + dataSource = dataSource.filter((item) => { + return Object.keys(filter).some((key) => { + if (!filter[key]) { + return true; + } + if (filter[key].includes(`${item[key]}`)) { + return true; + } + return false; + }); + }); + } + } + + if (params.name) { + dataSource = dataSource.filter((data) => data?.name?.includes(params.name || '')); + } + const result = { + data: dataSource, + total: tableListDataSource.length, + success: true, + pageSize, + current: parseInt(`${params.current}`, 10) || 1, + }; + + return res.json(result); +} + +function postRule(req: Request, res: Response, u: string, b: Request) { + let realUrl = u; + if (!realUrl || Object.prototype.toString.call(realUrl) !== '[object String]') { + realUrl = req.url; + } + + const body = (b && b.body) || req.body; + const { method, name, desc, key } = body; + + switch (method) { + /* eslint no-case-declarations:0 */ + case 'delete': + tableListDataSource = tableListDataSource.filter((item) => key.indexOf(item.key) === -1); + break; + case 'post': + (() => { + const i = Math.ceil(Math.random() * 10000); + const newRule: API.RuleListItem = { + key: tableListDataSource.length, + href: 'https://ant.design', + avatar: [ + 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + ][i % 2], + name, + owner: '曲丽丽', + desc, + callNo: Math.floor(Math.random() * 1000), + status: Math.floor(Math.random() * 10) % 2, + updatedAt: moment().format('YYYY-MM-DD'), + createdAt: moment().format('YYYY-MM-DD'), + progress: Math.ceil(Math.random() * 100), + }; + tableListDataSource.unshift(newRule); + return res.json(newRule); + })(); + return; + + case 'update': + (() => { + let newRule = {}; + tableListDataSource = tableListDataSource.map((item) => { + if (item.key === key) { + newRule = { ...item, desc, name }; + return { ...item, desc, name }; + } + return item; + }); + return res.json(newRule); + })(); + return; + default: + break; + } + + const result = { + list: tableListDataSource, + pagination: { + total: tableListDataSource.length, + }, + }; + + res.json(result); +} + +export default { + 'GET /api/rule': getRule, + 'POST /api/rule': postRule, +}; diff --git a/demo/mock/notices.ts b/demo/mock/notices.ts new file mode 100644 index 00000000..732dd584 --- /dev/null +++ b/demo/mock/notices.ts @@ -0,0 +1,107 @@ +import { Request, Response } from 'express'; + +const getNotices = (req: Request, res: Response) => { + res.json({ + data: [ + { + id: '000000001', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png', + title: '你收到了 14 份新周报', + datetime: '2017-08-09', + type: 'notification', + }, + { + id: '000000002', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png', + title: '你推荐的 曲妮妮 已通过第三轮面试', + datetime: '2017-08-08', + type: 'notification', + }, + { + id: '000000003', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png', + title: '这种模板可以区分多种通知类型', + datetime: '2017-08-07', + read: true, + type: 'notification', + }, + { + id: '000000004', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png', + title: '左侧图标用于区分不同的类型', + datetime: '2017-08-07', + type: 'notification', + }, + { + id: '000000005', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png', + title: '内容不要超过两行字,超出时自动截断', + datetime: '2017-08-07', + type: 'notification', + }, + { + id: '000000006', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg', + title: '曲丽丽 评论了你', + description: '描述信息描述信息描述信息', + datetime: '2017-08-07', + type: 'message', + clickClose: true, + }, + { + id: '000000007', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg', + title: '朱偏右 回复了你', + description: '这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像', + datetime: '2017-08-07', + type: 'message', + clickClose: true, + }, + { + id: '000000008', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg', + title: '标题', + description: '这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像', + datetime: '2017-08-07', + type: 'message', + clickClose: true, + }, + { + id: '000000009', + title: '任务名称', + description: '任务需要在 2017-01-12 20:00 前启动', + extra: '未开始', + status: 'todo', + type: 'event', + }, + { + id: '000000010', + title: '第三方紧急代码变更', + description: '冠霖提交于 2017-01-06,需在 2017-01-07 前完成代码变更任务', + extra: '马上到期', + status: 'urgent', + type: 'event', + }, + { + id: '000000011', + title: '信息安全考试', + description: '指派竹尔于 2017-01-09 前完成更新并发布', + extra: '已耗时 8 天', + status: 'doing', + type: 'event', + }, + { + id: '000000012', + title: 'ABCD 版本发布', + description: '冠霖提交于 2017-01-06,需在 2017-01-07 前完成代码变更任务', + extra: '进行中', + status: 'processing', + type: 'event', + }, + ], + }); +}; + +export default { + 'GET /api/notices': getNotices, +}; diff --git a/demo/mock/route.ts b/demo/mock/route.ts new file mode 100644 index 00000000..418d10f1 --- /dev/null +++ b/demo/mock/route.ts @@ -0,0 +1,5 @@ +export default { + '/api/auth_routes': { + '/form/advanced-form': { authority: ['admin', 'user'] }, + }, +}; diff --git a/demo/mock/user.ts b/demo/mock/user.ts new file mode 100644 index 00000000..75edd340 --- /dev/null +++ b/demo/mock/user.ts @@ -0,0 +1,203 @@ +import { Request, Response } from 'express'; + +const waitTime = (time: number = 100) => { + return new Promise((resolve) => { + setTimeout(() => { + resolve(true); + }, time); + }); +}; + +async function getFakeCaptcha(req: Request, res: Response) { + await waitTime(2000); + return res.json('captcha-xxx'); +} + +const { ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION } = process.env; + +/** + * 当前用户的权限,如果为空代表没登录 + * current user access, if is '', user need login + * 如果是 pro 的预览,默认是有权限的 + */ +let access = ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION === 'site' ? 'admin' : ''; + +const getAccess = () => { + return access; +}; + +// 代码中会兼容本地 service mock 以及部署站点的静态数据 +export default { + // 支持值为 Object 和 Array + 'GET /api/currentUser': (req: Request, res: Response) => { + if (!getAccess()) { + res.status(401).send({ + data: { + isLogin: false, + }, + errorCode: '401', + errorMessage: '请先登录!', + success: true, + }); + return; + } + res.send({ + success: true, + data: { + name: 'Serati Ma', + avatar: 'https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png', + userid: '00000001', + email: 'antdesign@alipay.com', + signature: '海纳百川,有容乃大', + title: '交互专家', + group: '蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED', + tags: [ + { + key: '0', + label: '很有想法的', + }, + { + key: '1', + label: '专注设计', + }, + { + key: '2', + label: '辣~', + }, + { + key: '3', + label: '大长腿', + }, + { + key: '4', + label: '川妹子', + }, + { + key: '5', + label: '海纳百川', + }, + ], + notifyCount: 12, + unreadCount: 11, + country: 'China', + access: getAccess(), + geographic: { + province: { + label: '浙江省', + key: '330000', + }, + city: { + label: '杭州市', + key: '330100', + }, + }, + address: '西湖区工专路 77 号', + phone: '0752-268888888', + }, + }); + }, + // GET POST 可省略 + 'GET /api/users': [ + { + key: '1', + name: 'John Brown', + age: 32, + address: 'New York No. 1 Lake Park', + }, + { + key: '2', + name: 'Jim Green', + age: 42, + address: 'London No. 1 Lake Park', + }, + { + key: '3', + name: 'Joe Black', + age: 32, + address: 'Sidney No. 1 Lake Park', + }, + ], + 'POST /api/login/account': async (req: Request, res: Response) => { + const { password, username, type } = req.body; + await waitTime(2000); + if (password === 'ant.design' && username === 'admin') { + res.send({ + status: 'ok', + type, + currentAuthority: 'admin', + }); + access = 'admin'; + return; + } + if (password === 'ant.design' && username === 'user') { + res.send({ + status: 'ok', + type, + currentAuthority: 'user', + }); + access = 'user'; + return; + } + if (type === 'mobile') { + res.send({ + status: 'ok', + type, + currentAuthority: 'admin', + }); + access = 'admin'; + return; + } + + res.send({ + status: 'error', + type, + currentAuthority: 'guest', + }); + access = 'guest'; + }, + 'POST /api/login/outLogin': (req: Request, res: Response) => { + access = ''; + res.send({ data: {}, success: true }); + }, + 'POST /api/register': (req: Request, res: Response) => { + res.send({ status: 'ok', currentAuthority: 'user', success: true }); + }, + 'GET /api/500': (req: Request, res: Response) => { + res.status(500).send({ + timestamp: 1513932555104, + status: 500, + error: 'error', + message: 'error', + path: '/base/category/list', + }); + }, + 'GET /api/404': (req: Request, res: Response) => { + res.status(404).send({ + timestamp: 1513932643431, + status: 404, + error: 'Not Found', + message: 'No message available', + path: '/base/category/list/2121212', + }); + }, + 'GET /api/403': (req: Request, res: Response) => { + res.status(403).send({ + timestamp: 1513932555104, + status: 403, + error: 'Forbidden', + message: 'Forbidden', + path: '/base/category/list', + }); + }, + 'GET /api/401': (req: Request, res: Response) => { + res.status(401).send({ + timestamp: 1513932555104, + status: 401, + error: 'Unauthorized', + message: 'Unauthorized', + path: '/base/category/list', + }); + }, + + 'GET /api/login/captcha': getFakeCaptcha, +}; diff --git a/demo/package.json b/demo/package.json new file mode 100644 index 00000000..b4f1b8d7 --- /dev/null +++ b/demo/package.json @@ -0,0 +1,113 @@ +{ + "name": "ant-design-pro", + "version": "5.2.0", + "private": true, + "description": "An out-of-box UI solution for enterprise applications", + "scripts": { + "analyze": "cross-env ANALYZE=1 umi build", + "build": "umi build", + "deploy": "npm run build && npm run gh-pages", + "dev": "npm run start:dev", + "gh-pages": "gh-pages -d dist", + "i18n-remove": "pro i18n-remove --locale=zh-CN --write", + "postinstall": "umi g tmp", + "lint": "umi g tmp && npm run lint:js && npm run lint:style && npm run lint:prettier && npm run tsc", + "lint-staged": "lint-staged", + "lint-staged:js": "eslint --ext .js,.jsx,.ts,.tsx ", + "lint:fix": "eslint --fix --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src && npm run lint:style", + "lint:js": "eslint --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src", + "lint:prettier": "prettier -c --write \"src/**/*\" --end-of-line auto", + "lint:style": "stylelint --fix \"src/**/*.less\" --syntax less", + "openapi": "umi openapi", + "playwright": "playwright install && playwright test", + "prepare": "husky install", + "prettier": "prettier -c --write \"src/**/*\"", + "serve": "umi-serve", + "start": "cross-env UMI_ENV=dev umi dev", + "start:dev": "cross-env REACT_APP_ENV=dev MOCK=none UMI_ENV=dev umi dev", + "start:no-mock": "cross-env MOCK=none UMI_ENV=dev umi dev", + "start:no-ui": "cross-env UMI_UI=none UMI_ENV=dev umi dev", + "start:pre": "cross-env REACT_APP_ENV=pre UMI_ENV=dev umi dev", + "start:test": "cross-env REACT_APP_ENV=test MOCK=none UMI_ENV=dev umi dev", + "test": "umi test", + "test:component": "umi test ./src/components", + "test:e2e": "node ./tests/run-tests.js", + "tsc": "tsc --noEmit" + }, + "lint-staged": { + "**/*.less": "stylelint --syntax less", + "**/*.{js,jsx,ts,tsx}": "npm run lint-staged:js", + "**/*.{js,jsx,tsx,ts,less,md,json}": ["prettier --write"] + }, + "browserslist": ["> 1%", "last 2 versions", "not ie <= 10"], + "dependencies": { + "@ant-design/charts": "^0.9.4", + "@ant-design/icons": "^4.7.0", + "@ant-design/pro-card": "^1.19.0", + "@ant-design/pro-descriptions": "^1.10.0", + "@ant-design/pro-form": "^1.64.0", + "@ant-design/pro-layout": "^6.35.0", + "@ant-design/pro-table": "^2.71.0", + "@antv/data-set": "^0.11.0", + "@antv/l7": "^2.3.7", + "@antv/l7-maps": "^2.3.7", + "@antv/l7-react": "^2.1.9", + "@umijs/route-utils": "^2.0.0", + "ahooks": "^2.0.0", + "antd": "^4.19.0", + "bizcharts": "^3.5.3-beta.0", + "bizcharts-plugin-slider": "^2.1.1-beta.1", + "classnames": "^2.3.0", + "gg-editor": "^2.0.2", + "lodash": "^4.17.0", + "lodash-decorators": "^6.0.0", + "moment": "^2.29.0", + "numeral": "^2.0.6", + "nzh": "^1.0.3", + "omit.js": "^2.0.2", + "rc-menu": "^9.1.0", + "rc-util": "^5.16.0", + "react": "^17.0.0", + "react-dev-inspector": "^1.7.0", + "react-dom": "^17.0.0", + "react-fittext": "^1.0.0", + "react-helmet-async": "^1.2.0", + "react-router": "^4.3.1", + "umi": "^3.5.0", + "umi-serve": "^1.9.10" + }, + "devDependencies": { + "@ant-design/pro-cli": "^2.1.0", + "@playwright/test": "^1.17.0", + "@types/express": "^4.17.0", + "@types/history": "^4.7.0", + "@types/jest": "^26.0.0", + "@types/lodash": "^4.14.0", + "@types/react": "^17.0.0", + "@types/react-dom": "^17.0.0", + "@types/react-helmet": "^6.1.0", + "@umijs/fabric": "^2.8.0", + "@umijs/openapi": "^1.3.0", + "@umijs/plugin-blocks": "^2.2.0", + "@umijs/plugin-esbuild": "^1.4.0", + "@umijs/plugin-openapi": "^1.3.0", + "@umijs/preset-ant-design-pro": "^1.3.0", + "@umijs/preset-dumi": "^1.1.0", + "@umijs/preset-react": "^2.1.0", + "cross-env": "^7.0.0", + "cross-port-killer": "^1.3.0", + "detect-installer": "^1.0.0", + "eslint": "^7.32.0", + "gh-pages": "^3.2.0", + "husky": "^7.0.4", + "jsdom-global": "^3.0.0", + "lint-staged": "^10.0.0", + "mockjs": "^1.1.0", + "prettier": "^2.5.0", + "stylelint": "^13.0.0", + "swagger-ui-react": "^3.52.0", + "typescript": "^4.5.0", + "umi-serve": "^1.9.10" + }, + "engines": { "node": ">=12.0.0" } +} diff --git a/demo/playwright.config.ts b/demo/playwright.config.ts new file mode 100644 index 00000000..ec1b31db --- /dev/null +++ b/demo/playwright.config.ts @@ -0,0 +1,22 @@ +// playwright.config.ts +import type { PlaywrightTestConfig } from '@playwright/test'; +import { devices } from '@playwright/test'; + +const config: PlaywrightTestConfig = { + forbidOnly: !!process.env.CI, + retries: process.env.CI ? 2 : 0, + use: { + trace: 'on-first-retry', + }, + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + { + name: 'firefox', + use: { ...devices['Desktop Firefox'] }, + }, + ], +}; +export default config; diff --git a/demo/public/CNAME b/demo/public/CNAME new file mode 100644 index 00000000..30c2d4d3 --- /dev/null +++ b/demo/public/CNAME @@ -0,0 +1 @@ +preview.pro.ant.design \ No newline at end of file diff --git a/demo/public/favicon.ico b/demo/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..e2e93252988b5bed120ddeb168eb577bf0caa881 GIT binary patch literal 4286 zcmeHLO(?8k6#ga#Gs=ufvobTd=q@y~nOLdYlqL%nQY4WqC`)z}3y~cqOAAF4VkQd~ z^3$wrC}~D1l%!eMp!|gA&U5sN?~b{2>)yNg-s#Lc-+9k_p7Y<=XqqYcDJs(Vt%dBG z=F~Lpdy*pd!Y zozZT}udJ-#| zqiAVq0sT@kAMMobbULxOw+F6{j*egO8CQ?TgTuo^+}_@zrlv;l$*-)e#PRVl?(Xgo zi9`?zg>ZFsh0DuJ)Ya9!von7LPN@OfP9IfH_4tet&&I~a#O{TK1<3*LO-xJ( zZ*Fc5%v&m4#Z&mZySs8{XJ-fV^Yh@{p`ju8d_J)w6+U%`!(qAC+uJK~qg_o+O|QC` zTVg0Y{jSHqzP^^&G0t4^cwF+$`egj?@9$AtTMLuPB>7!lUKY8&zP?xd=H_PM(U;HS ztNi!(_oJes0<5X6tu4{BxVR{FO)_x3UauFkv$I%RTSHe@7dAIHF+4mhc?|>t(!XbCXVQZk z8yje7Xh2R*&WCwdw&?N4$H!4$Uyq)i9_;V$3;y)^-LKhmkv{Z#(CP^-7Wn# zI5-H>z`y`nTU%u=f7Tbh-mg5fPT0G8`Wx6^vD1(>-r0;AFlyjWYC!!D@UQlt)%}4^ literal 0 HcmV?d00001 diff --git a/demo/public/icons/icon-128x128.png b/demo/public/icons/icon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..48d0e2339a60a637b94319c65e8654289b4f4b6c GIT binary patch literal 1329 zcmV-11C0002qP)t-s01zMl z|Nj6D8~_Fu01Fxg6ePmN$p8o!Wo~x>2^n*Hg!uURG(b#MUupdO{0J2!4IC;FATIs> z{@dN(0umtr1r+b_@!;a*CNn?_87S=S?pR`MN>yMYFg?=M*UQe)wYk2qw7Hs~re<$= zUubdX=<2(_!=9w6l9``_ijrw^dn`Fc6(TV7_4V=c^R2SBrmV4+ouiMHoQsl~euj;D zf{I&ZZXPQ+87DQ^+ugv!$3;(CLQPmWL{HY)+rGlaqNuHRe}`^&fKXdyK1x+FK1#;P z&4`be_4fDTmuWjt2mKnbI+d3dfa z_PK3Vs;zn;Ot~u#==o*X;a^nmOa{(_o(tmupuw*`!> z#lUp|BbBD0;J$!S0To9DO4Z9XkCjq#?=s{WNE{XLCFmLibLLfxLm3nt7Wj-&k{L;X zo_Y$L6(Ax^@lhJo2uNHK09we3_>jt`DV`HX8L^}WDJO|ULbS4T1b_}iycq`oGqNH4 zQJi@^@H`%ly#;k8%FIH(J#9^VH>(ITJX3)9M7)?mVD;pNM){2bV!rABC{yFeZXJ$q ztx`Yw*~Rj#FGR_Att-g zD?cOlXM^rD8S|s+a(LB7MePP8cKc zywqQW@o0gm8Qu`-)UW-9#K*uQ5WQT5&CGnc%phPyF4p1{wj=@#5xikX3uI#(QrZ2A z66>Nxz+a;r*Km#iEGXxR4BFJu%9#^UG{?XqFlA~7sH!J&2X_C6*P7#50#^tYfm`)p zW2Pupno-5;QoKQ)pCj;SS_MKc4Ai#W7h-YyLi$8b7l@8b3KjwX8wCk}6<4mh7hj6_ z@bnBUa)|InAVBSV)+C{3Cf$?e`b2@nQysp0$(swOoN^Eg(SO9p-Q1JJAAwzQCMaKm&bGV`U^9&pp0Gf^+nkRf5 zTo3@>xi{%p{gIpTF5iJBic@aIws^IC=-v{M~W@Y%aj8G0o!r2b|HdROb8D$LP+n;FWCW`~3a=G(k;6PFes57kh(>00a~S6Cwx} zCE()Z^7Hf|E zp{K0H$jr97ziM-QXK;BCA1!ozgl>0$_4f8XNmSCn^FkCmKwfQVshbU{p46e2L| z?Ct65?BnI;*4f+4&(glZ#fXoVgo~3^UusNOVjC$ov9`LWtg%K>TsK2c$;{8e#mKwA z!>qBksjjnFVr-b6q?4MUQCw!>t&JT300tCEL_t(|+U?tESK2@nfZ>~&tE5s!683!u zK~Xjr+;FLD`~QDWsaSMof{9Cdrsv$}Q$GacB{NB8tUw4Mgb+dqA%qY@2qA(L2bqdsgXsNTkuvsd$l2J=n5?~ND zV51VpX8=z3{QjGMB}&;~4lO{w(%Zazp$0@daWIEhfP~dcYQd#z&@Au`02`W0K*FSZ zfqww-)R9s!Ht2yOKmf3z60nW%2IP#}oH2Xl0XAm~+{S+rP&t$X9^nbbm-x&1;@!yj zY%9B7sWA>ZWO1jKtCah(e))TD=Eenv9so{D4rn_thqYd2VK|ELzaOufx!t$^NZw>p z+Iyj>U-gQu^kN;GPyD#d{Hh5IJ3uJYc+Z77Ufo$Ggo+WA3Y*@1Ky13)LZP31QSeOBPQ+XWH1FRE< znBBKzO$T4zWLDa@R>>EuJj^qYQEmht0qwfj(!SqQ@iKSEQ|m2>2OGl+_^GUFJOcJ= zXWHkFZpC2%v9sp4{dDSJXp{It8QP8>kQnV+s>T(A1*ey{eEoDWoB-?=l!qbE1M&?^ zlg>TQVZNQW0vG^>5+Gs?WoT;w-lorADbq%mw`k7}=L`%i*#i$2a3L12&mCI9?2mZ} z0W6}7?qr1p3pjZ?4xKwIs2_Fw@&LQuwzS(*uz)OwIWgMMHdb!T{tPE4SL`S{H8xBn!v4)5iQu&kynG zu&g>v%A749U2|<^9&fVG1>_^~CFZ7LP5t_J?7+%^=uNif%+;?)oeFwB$`&F5UWnO^ z@}M}gKew%NvbE6ZWlDEPmWMOGGN93O87@!W;veOx{0)tnve;1G63u~Z#6xV7>iY035`Xj%Y> z^Q5IJ+!Y6p_dlYRYQ(^}0Dwm;s0$Yi48Tdj3g$4vO$-3uKeU2KKGd0O0O0VXbm7s4;+l9&n%p_`cvI z?LB&meH%ahXIS9}0Jn2n$9YS(u{W#$gO9RPz0KE#GlYO}vMs$dg#n^%CpUU*6%xDq zjs0(lqaT-@s*4=qi*zHU+H4m-VgiXywKHFAtzxV0RWJzsovKI0FJxD0TBWR9R(cUae(Kj zsHF%%MItH28Xp(4*{bSm0T9Fm0Q3xia~uV&0pKeFz=jn7(rEx(_sVL}lf@aG=xQ21 z0F-Q4EcX2Td}n9x&+_W8>Dj@bW1Zc-_04UCC6!U}srDWLO4_FE!gBaD92g8{VR7ke zeM?AW92o=O(D2yXclnR)y=d4(E-o&bT05P*g06FjUtV6efBWI#2OS@uWaJd^OFd|4 zX;(M2f>E+f{F>2!?AX@%T}(mq>gp=@<7Y-5siUJ~-_R&H)yX)dzBXt+ zw3(irC-{#uAUx*V_rCAF0|y6(^qk`23R+NfVtI9aeo@&CE(t4VpY6XpJmUB8uHDiy zwv9=Ab9i`ka&k&{ODsM)GxBB9kG{dJ?Y|`SJP2xb|L_=>Cn3tZ=GbsG#NjrD{p8lZ+I*;#ZnN-&`)3V#iUD zMPI6J3dwTaR#efm@D7ZSx~Kc$)0fQLLZ9GgMwTwT5=zbJZ|@6AUcO3G4f|Pz+YOkF zhRS^y7A`o43kXqaS`P?+li?F^ab$DRnFBz%pmtx;FkotX)-fdI0SkIBo$3`kjGW}D zZoDeqLtS3Q2M@@N^6~Cb6R{D+s3aFqxA6=o*eHod92P`F`24wEin51>RC@xG+Cw7; zO)`T9mP{{KyOZ{F0<#_c5Bhd4GTu4*uXH<{{3_)6x4r)lr){`JohSKG%?$A}zhMc= zW|@O)q8WsJQ6EdzmKROG;U@_#(HhDuk8bo;Ho`*6l-2u9HLE*dOv$E=6gvnZLNCqP zprds6w}?9hZO+b`b-ggB&>$s;nRQSt|AE@)FA7Ls_I33&;P}~m=VyWbcR}f(OIN21 zGvpB_DYkJ<3MQsNhOEYodj;5({(pE0$4P!F$)xqVIwo83~69g=48RK+49na7Q(C zC7>Jw*DbzEje?QUe|LGt3nX|7Uz)%oP2zR&b4Op@R)(SMB<|5c3@$a63w&>G*}*

*C7T$?5!b= z&nPVm(<;~Sw_*kJlio|*qhI8#F?9y#@jvQ4Y?j2~r_a^)YoQ-co4WFOwF)i5mFnrV zp3rz^`K|nrI`guQ$X^%JuCI5qSS(}Tc|%+~o}P6dC={o1Q&<)3lnFnXE=l2Po$K4W zYZ0|2<3Cp|&)NE>;p=Muwg#BLXuboTJ(mwtjLbtdOE_A4n^}l29p9@>4vpS+t*^qG zb2Uo-W$@vKeR}iztf6tJTUh8=^kh_EBe^3f?1b(p_oBq&dpqW$pAyBB**bIt4BhwK zX02JE@mc}FExq0q+5_8B#EP&@;6-lx4t~)@$HBEBXnIqX0E$mhb$(} zt|vYUzekLn0SQ;Cd)J1 zXF3gv$u52+$>oQVvh7DxPpKeWD4yJgdWQQ`D#($Z=j%Df!iAxvR)-y7Ie5nI39+zG z4a3_4mE;SBh@MK8p%(n|yGj>Ao>j51ETLI#vuUt#g|%FDZG}&kbEb(|*9!RyL&U?| zvNnv+oEL_*R{Mw_;x+O`vNWUXL6>@M)sQr_lmlng7?sCaDH0YaGf%+R1ZM}9#$j$3 zi}N01^7uoRgvG74Fxi{415}={tg=gDHuqwR$1?9qlK<#~ zLG@an>_SlEY6+k8PD+S)C&NU7!~`$+Sin{JS2aLn_Jm#q|8H%OnLqt&n-f~C7KW9K z>QxTE1D!cV+(E>-8N#r>Aw98T*8=odDM_y2&?=ag7-=Rj&p%xvU zq=o{%T2@T(b@VqinV#`~IN4t3^z$HE=3~ZiDQ=xP6Gt)g;q1Wv2N&CBx=Ndw5 z6U*fS@;@VBF^MGsyag~+Eq&2UZ@5SG$!SM2ckBL!E1lBg>*t^{Lqn=cK^-Rhc#S(% zuAqbI(^+PqN#)t&5xr~v&*Y$qZ$3Yz)nRe`ZZcJUU8hd=)9$7 z6n-k7p||Esq}igp(IoxtD&_5A!OwcTvM3p-HHJGcVh|>N13O;!W%RXd{Y6@BEp1Jz zHCH!~H~lR%<3E0b>}>_dD6Ef8r_)LSp}O5L`DerkKk|Jc@n6*BmU&r@TKhG$-x=>`wv*Vj%M=6<7!P7~3+)?^D>AA~&^F+{mzBAMLh zuTiItS}IqcPpj-t;W15ahnBV9rHnrShN-@GCY+EyXV6Gass&4cM~^;F?z{3+SXKe7 zX8rBU7Fc!Kr5M!K@lDd)Bl)VMR)yb6;AHxpH?Q1Bx14XQy~`&ggyC$4u>az;q|C7G ziTI-A3y9BZbxP7rW4_G!ju{^(NOZstl}tvVR+j8_B`~)2cWn2~;amI9u@_9oSC+Xc z_+DcYbc7S~MIl7Fjk6qEWXDo6>n5U0O4P_k15Z^c%P@0?*Oaj8%BIU*uy|Vgi@eqH zPKZqrW$wXWQ9=QoQrY4VBCFzACRJhEv+U(FOmx1_uwVirtukLVbyF&%?xKU6D>Yot zj6ZW-1$@|ASwJlAu1;!K9!5uPdov-?7RK^;L%bs%6z9abcvP!i20^{1|g}`{&O=}R+#D;J+z#Fj(x6k%xY0!5_DrzSsTCn;pu^6 zIZV~_c4b?yxFutJZTc`BT4+(N21dx%Bxx5_=*+^Gl`PCmvS7QnNZUr>RqS>smtAo7 z%1fV4h6YI+Y2X$?ZuQmeFj!XWfPJxAc1<0;;3C|?V?=BITB{AnSkYW;+Vbas9ODwo zC?uf|l|KjLdt@iP*&!CGbh&OT1l3&s3RD|7knGOc{T%o)WLqmqSnTE5-M^OKN+8ct1C(XwQJJg%OozV)cJ^w# zVxbg~z7OMwn+eEPaBRR0KIDX14Kb^G-Strc8r6QmoINnF;F1;|U5n3%rdT9(U0dcP zI*}ZU>2wFp1u1KmK2cwSwk|=oZ8?l*@yIPBD3BPN(BINzFh#VAKBpVxZ71*JgwpWXLZfS%KkGa_tQn0bX5)h8 z6Q7LGdb=)NQ}a}>SD{8~!ga|bE*aS_Nxg_+ojhQ1{b@sVzaX)Z{rV-1%Qa*ioSy65 zb4ke$#&Mf>xuBg{&aCGNbhbOGbN4XT4?qQpRW^!2z;9eCH6fH7)+qpWe;n~*tCIq= z&w&jc@_tBWRiS3IyovPwt~fl#1Z-%o%T_B%)sO*FrOIkz-1r$#mr+&N2J06a?u1<~QB}EoR?wnU)c32Ew0(EP^w=K@< zM;7MeoWTwa-$09MwD#{-p5K@kGTM6q@*9`~NBz#snAQt$W%fZr`qk|A%IEM4|B(?x zOpx+g1-*Q?a%JHpKf|Cs>MCBj^^EmKDb?*U1(_uF({whek67oi^wL)^XH3=`&u$U^ z*K&AEIc$ISs)O2r7emK9XW_i^6Jxw-Ug6tIn{3gqAYG+j_U1<)>HovW7l7Z>STIh4 z7OH$pfQM^<6ZPN`%FY^PFKzq89tYsIi0BGroup 28 Copy 5Created with Sketch. \ No newline at end of file diff --git a/demo/public/pro_icon.svg b/demo/public/pro_icon.svg new file mode 100644 index 00000000..e075b78d --- /dev/null +++ b/demo/public/pro_icon.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/demo/src/access.ts b/demo/src/access.ts new file mode 100644 index 00000000..e823e24b --- /dev/null +++ b/demo/src/access.ts @@ -0,0 +1,9 @@ +/** + * @see https://umijs.org/zh-CN/plugins/plugin-access + * */ +export default function access(initialState: { currentUser?: API.CurrentUser } | undefined) { + const { currentUser } = initialState ?? {}; + return { + canAdmin: currentUser && currentUser.access === 'admin', + }; +} diff --git a/demo/src/app.tsx b/demo/src/app.tsx new file mode 100644 index 00000000..58571014 --- /dev/null +++ b/demo/src/app.tsx @@ -0,0 +1,108 @@ +import type { Settings as LayoutSettings } from '@ant-design/pro-layout'; +import { SettingDrawer } from '@ant-design/pro-layout'; +import { PageLoading } from '@ant-design/pro-layout'; +import type { RunTimeLayoutConfig } from 'umi'; +import { history, Link } from 'umi'; +import RightContent from '@/components/RightContent'; +import Footer from '@/components/Footer'; +import { currentUser as queryCurrentUser } from './services/ant-design-pro/api'; +import { BookOutlined, LinkOutlined } from '@ant-design/icons'; +import defaultSettings from '../config/defaultSettings'; + +const isDev = process.env.NODE_ENV === 'development'; +const loginPath = '/user/login'; + +/** 获取用户信息比较慢的时候会展示一个 loading */ +export const initialStateConfig = { + loading: , +}; + +/** + * @see https://umijs.org/zh-CN/plugins/plugin-initial-state + * */ +export async function getInitialState(): Promise<{ + settings?: Partial; + currentUser?: API.CurrentUser; + loading?: boolean; + fetchUserInfo?: () => Promise; +}> { + const fetchUserInfo = async () => { + try { + const msg = await queryCurrentUser(); + return msg.data; + } catch (error) { + history.push(loginPath); + } + return undefined; + }; + // 如果不是登录页面,执行 + if (history.location.pathname !== loginPath) { + const currentUser = await fetchUserInfo(); + return { + fetchUserInfo, + currentUser, + settings: defaultSettings, + }; + } + return { + fetchUserInfo, + settings: defaultSettings, + }; +} + +// ProLayout 支持的api https://procomponents.ant.design/components/layout +export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) => { + return { + rightContentRender: () => , + disableContentMargin: false, + waterMarkProps: { + content: initialState?.currentUser?.name, + }, + footerRender: () =>

, + onPageChange: () => { + const { location } = history; + // 如果没有登录,重定向到 login + if (!initialState?.currentUser && location.pathname !== loginPath) { + history.push(loginPath); + } + }, + links: isDev + ? [ + + + OpenAPI 文档 + , + + + 业务组件文档 + , + ] + : [], + menuHeaderRender: undefined, + // 自定义 403 页面 + // unAccessible:
unAccessible
, + // 增加一个 loading 的状态 + childrenRender: (children, props) => { + // if (initialState?.loading) return ; + return ( + <> + {children} + {!props.location?.pathname?.includes('/login') && ( + { + setInitialState((preInitialState) => ({ + ...preInitialState, + settings, + })); + }} + /> + )} + + ); + }, + ...initialState?.settings, + }; +}; diff --git a/demo/src/components/Footer/index.tsx b/demo/src/components/Footer/index.tsx new file mode 100644 index 00000000..4336de96 --- /dev/null +++ b/demo/src/components/Footer/index.tsx @@ -0,0 +1,41 @@ +import { useIntl } from 'umi'; +import { GithubOutlined } from '@ant-design/icons'; +import { DefaultFooter } from '@ant-design/pro-layout'; + +const Footer: React.FC = () => { + const intl = useIntl(); + const defaultMessage = intl.formatMessage({ + id: 'app.copyright.produced', + defaultMessage: '蚂蚁集团体验技术部出品', + }); + + const currentYear = new Date().getFullYear(); + + return ( + , + href: 'https://github.com/ant-design/ant-design-pro', + blankTarget: true, + }, + { + key: 'Ant Design', + title: 'Ant Design', + href: 'https://ant.design', + blankTarget: true, + }, + ]} + /> + ); +}; + +export default Footer; diff --git a/demo/src/components/HeaderDropdown/index.less b/demo/src/components/HeaderDropdown/index.less new file mode 100644 index 00000000..f583513f --- /dev/null +++ b/demo/src/components/HeaderDropdown/index.less @@ -0,0 +1,16 @@ +@import (reference) '~antd/es/style/themes/index'; + +.container > * { + background-color: @popover-bg; + border-radius: 4px; + box-shadow: @shadow-1-down; +} + +@media screen and (max-width: @screen-xs) { + .container { + width: 100% !important; + } + .container > * { + border-radius: 0 !important; + } +} diff --git a/demo/src/components/HeaderDropdown/index.tsx b/demo/src/components/HeaderDropdown/index.tsx new file mode 100644 index 00000000..45af90ae --- /dev/null +++ b/demo/src/components/HeaderDropdown/index.tsx @@ -0,0 +1,17 @@ +import type { DropDownProps } from 'antd/es/dropdown'; +import { Dropdown } from 'antd'; +import React from 'react'; +import classNames from 'classnames'; +import styles from './index.less'; + +export type HeaderDropdownProps = { + overlayClassName?: string; + overlay: React.ReactNode | (() => React.ReactNode) | any; + placement?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topCenter' | 'topRight' | 'bottomCenter'; +} & Omit; + +const HeaderDropdown: React.FC = ({ overlayClassName: cls, ...restProps }) => ( + +); + +export default HeaderDropdown; diff --git a/demo/src/components/HeaderSearch/index.less b/demo/src/components/HeaderSearch/index.less new file mode 100644 index 00000000..7dc3eaa0 --- /dev/null +++ b/demo/src/components/HeaderSearch/index.less @@ -0,0 +1,25 @@ +@import (reference) '~antd/es/style/themes/index'; + +.headerSearch { + display: inline-flex; + align-items: center; + .input { + width: 0; + min-width: 0; + overflow: hidden; + background: transparent; + border-radius: 0; + transition: width 0.3s, margin-left 0.3s; + :global(.ant-select-selection) { + background: transparent; + } + input { + box-shadow: none !important; + } + + &.show { + width: 210px; + margin-left: 8px; + } + } +} diff --git a/demo/src/components/HeaderSearch/index.tsx b/demo/src/components/HeaderSearch/index.tsx new file mode 100644 index 00000000..d282de14 --- /dev/null +++ b/demo/src/components/HeaderSearch/index.tsx @@ -0,0 +1,102 @@ +import { SearchOutlined } from '@ant-design/icons'; +import type { InputRef } from 'antd'; +import { AutoComplete, Input } from 'antd'; +import useMergedState from 'rc-util/es/hooks/useMergedState'; +import type { AutoCompleteProps } from 'antd/es/auto-complete'; +import React, { useRef } from 'react'; + +import classNames from 'classnames'; +import styles from './index.less'; + +export type HeaderSearchProps = { + onSearch?: (value?: string) => void; + onChange?: (value?: string) => void; + onVisibleChange?: (b: boolean) => void; + className?: string; + placeholder?: string; + options: AutoCompleteProps['options']; + defaultVisible?: boolean; + visible?: boolean; + defaultValue?: string; + value?: string; +}; + +const HeaderSearch: React.FC = (props) => { + const { + className, + defaultValue, + onVisibleChange, + placeholder, + visible, + defaultVisible, + ...restProps + } = props; + + const inputRef = useRef(null); + + const [value, setValue] = useMergedState(defaultValue, { + value: props.value, + onChange: props.onChange, + }); + + const [searchMode, setSearchMode] = useMergedState(defaultVisible ?? false, { + value: props.visible, + onChange: onVisibleChange, + }); + + const inputClass = classNames(styles.input, { + [styles.show]: searchMode, + }); + return ( +
{ + setSearchMode(true); + if (searchMode && inputRef.current) { + inputRef.current.focus(); + } + }} + onTransitionEnd={({ propertyName }) => { + if (propertyName === 'width' && !searchMode) { + if (onVisibleChange) { + onVisibleChange(searchMode); + } + } + }} + > + + setValue(completeValue)} + > + { + if (e.key === 'Enter') { + if (restProps.onSearch) { + restProps.onSearch(value); + } + } + }} + onBlur={() => { + setSearchMode(false); + }} + /> + +
+ ); +}; + +export default HeaderSearch; diff --git a/demo/src/components/NoticeIcon/NoticeIcon.tsx b/demo/src/components/NoticeIcon/NoticeIcon.tsx new file mode 100644 index 00000000..7a530c05 --- /dev/null +++ b/demo/src/components/NoticeIcon/NoticeIcon.tsx @@ -0,0 +1,126 @@ +import { BellOutlined } from '@ant-design/icons'; +import { Badge, Spin, Tabs } from 'antd'; +import useMergedState from 'rc-util/es/hooks/useMergedState'; +import React from 'react'; +import classNames from 'classnames'; +import type { NoticeIconTabProps } from './NoticeList'; +import NoticeList from './NoticeList'; +import HeaderDropdown from '../HeaderDropdown'; +import styles from './index.less'; + +const { TabPane } = Tabs; + +export type NoticeIconProps = { + count?: number; + bell?: React.ReactNode; + className?: string; + loading?: boolean; + onClear?: (tabName: string, tabKey: string) => void; + onItemClick?: (item: API.NoticeIconItem, tabProps: NoticeIconTabProps) => void; + onViewMore?: (tabProps: NoticeIconTabProps, e: MouseEvent) => void; + onTabChange?: (tabTile: string) => void; + style?: React.CSSProperties; + onPopupVisibleChange?: (visible: boolean) => void; + popupVisible?: boolean; + clearText?: string; + viewMoreText?: string; + clearClose?: boolean; + emptyImage?: string; + children?: React.ReactElement[]; +}; + +const NoticeIcon: React.FC & { + Tab: typeof NoticeList; +} = (props) => { + const getNotificationBox = (): React.ReactNode => { + const { + children, + loading, + onClear, + onTabChange, + onItemClick, + onViewMore, + clearText, + viewMoreText, + } = props; + if (!children) { + return null; + } + const panes: React.ReactNode[] = []; + React.Children.forEach(children, (child: React.ReactElement): void => { + if (!child) { + return; + } + const { list, title, count, tabKey, showClear, showViewMore } = child.props; + const len = list && list.length ? list.length : 0; + const msgCount = count || count === 0 ? count : len; + const tabTitle: string = msgCount > 0 ? `${title} (${msgCount})` : title; + panes.push( + + onClear && onClear(title, tabKey)} + onClick={(item): void => onItemClick && onItemClick(item, child.props)} + onViewMore={(event): void => onViewMore && onViewMore(child.props, event)} + showClear={showClear} + showViewMore={showViewMore} + title={title} + /> + , + ); + }); + return ( + <> + + + {panes} + + + + ); + }; + + const { className, count, bell } = props; + + const [visible, setVisible] = useMergedState(false, { + value: props.popupVisible, + onChange: props.onPopupVisibleChange, + }); + const noticeButtonClass = classNames(className, styles.noticeButton); + const notificationBox = getNotificationBox(); + const NoticeBellIcon = bell || ; + const trigger = ( + + + {NoticeBellIcon} + + + ); + if (!notificationBox) { + return trigger; + } + + return ( + + {trigger} + + ); +}; + +NoticeIcon.defaultProps = { + emptyImage: 'https://gw.alipayobjects.com/zos/rmsportal/wAhyIChODzsoKIOBHcBk.svg', +}; + +NoticeIcon.Tab = NoticeList; + +export default NoticeIcon; diff --git a/demo/src/components/NoticeIcon/NoticeList.less b/demo/src/components/NoticeIcon/NoticeList.less new file mode 100755 index 00000000..c87fece4 --- /dev/null +++ b/demo/src/components/NoticeIcon/NoticeList.less @@ -0,0 +1,103 @@ +@import (reference) '~antd/es/style/themes/index'; + +.list { + max-height: 400px; + overflow: auto; + &::-webkit-scrollbar { + display: none; + } + .item { + padding-right: 24px; + padding-left: 24px; + overflow: hidden; + cursor: pointer; + transition: all 0.3s; + + .meta { + width: 100%; + } + + .avatar { + margin-top: 4px; + background: @component-background; + } + .iconElement { + font-size: 32px; + } + + &.read { + opacity: 0.4; + } + &:last-child { + border-bottom: 0; + } + &:hover { + background: @primary-1; + } + .title { + margin-bottom: 8px; + font-weight: normal; + } + .description { + font-size: 12px; + line-height: @line-height-base; + } + .datetime { + margin-top: 4px; + font-size: 12px; + line-height: @line-height-base; + } + .extra { + float: right; + margin-top: -1.5px; + margin-right: 0; + color: @text-color-secondary; + font-weight: normal; + } + } + .loadMore { + padding: 8px 0; + color: @primary-6; + text-align: center; + cursor: pointer; + &.loadedAll { + color: rgba(0, 0, 0, 0.25); + cursor: unset; + } + } +} + +.notFound { + padding: 73px 0 88px; + color: @text-color-secondary; + text-align: center; + img { + display: inline-block; + height: 76px; + margin-bottom: 16px; + } +} + +.bottomBar { + height: 46px; + color: @text-color; + line-height: 46px; + text-align: center; + border-top: 1px solid @border-color-split; + border-radius: 0 0 @border-radius-base @border-radius-base; + transition: all 0.3s; + div { + display: inline-block; + width: 50%; + cursor: pointer; + transition: all 0.3s; + user-select: none; + + &:only-child { + width: 100%; + } + &:not(:only-child):last-child { + border-left: 1px solid @border-color-split; + } + } +} diff --git a/demo/src/components/NoticeIcon/NoticeList.tsx b/demo/src/components/NoticeIcon/NoticeList.tsx new file mode 100644 index 00000000..5face399 --- /dev/null +++ b/demo/src/components/NoticeIcon/NoticeList.tsx @@ -0,0 +1,113 @@ +import { Avatar, List } from 'antd'; + +import React from 'react'; +import classNames from 'classnames'; +import styles from './NoticeList.less'; + +export type NoticeIconTabProps = { + count?: number; + showClear?: boolean; + showViewMore?: boolean; + style?: React.CSSProperties; + title: string; + tabKey: API.NoticeIconItemType; + onClick?: (item: API.NoticeIconItem) => void; + onClear?: () => void; + emptyText?: string; + clearText?: string; + viewMoreText?: string; + list: API.NoticeIconItem[]; + onViewMore?: (e: any) => void; +}; +const NoticeList: React.FC = ({ + list = [], + onClick, + onClear, + title, + onViewMore, + emptyText, + showClear = true, + clearText, + viewMoreText, + showViewMore = false, +}) => { + if (!list || list.length === 0) { + return ( +
+ not found +
{emptyText}
+
+ ); + } + return ( +
+ + className={styles.list} + dataSource={list} + renderItem={(item, i) => { + const itemCls = classNames(styles.item, { + [styles.read]: item.read, + }); + // eslint-disable-next-line no-nested-ternary + const leftIcon = item.avatar ? ( + typeof item.avatar === 'string' ? ( + + ) : ( + {item.avatar} + ) + ) : null; + + return ( + { + onClick?.(item); + }} + > + + {item.title} +
{item.extra}
+
+ } + description={ +
+
{item.description}
+
{item.datetime}
+
+ } + /> + + ); + }} + /> +
+ {showClear ? ( +
+ {clearText} {title} +
+ ) : null} + {showViewMore ? ( +
{ + if (onViewMore) { + onViewMore(e); + } + }} + > + {viewMoreText} +
+ ) : null} +
+
+ ); +}; + +export default NoticeList; diff --git a/demo/src/components/NoticeIcon/index.less b/demo/src/components/NoticeIcon/index.less new file mode 100644 index 00000000..a2e44f15 --- /dev/null +++ b/demo/src/components/NoticeIcon/index.less @@ -0,0 +1,35 @@ +@import (reference) '~antd/es/style/themes/index'; + +.popover { + position: relative; + width: 336px; +} + +.noticeButton { + display: inline-block; + cursor: pointer; + transition: all 0.3s; +} +.icon { + padding: 4px; + vertical-align: middle; +} + +.badge { + font-size: 16px; +} + +.tabs { + :global { + .ant-tabs-nav-list { + margin: auto; + } + + .ant-tabs-nav-scroll { + text-align: center; + } + .ant-tabs-nav { + margin-bottom: 0; + } + } +} diff --git a/demo/src/components/NoticeIcon/index.tsx b/demo/src/components/NoticeIcon/index.tsx new file mode 100644 index 00000000..326a363b --- /dev/null +++ b/demo/src/components/NoticeIcon/index.tsx @@ -0,0 +1,153 @@ +import { useEffect, useState } from 'react'; +import { Tag, message } from 'antd'; +import { groupBy } from 'lodash'; +import moment from 'moment'; +import { useModel, useRequest } from 'umi'; +import { getNotices } from '@/services/ant-design-pro/api'; + +import NoticeIcon from './NoticeIcon'; +import styles from './index.less'; + +export type GlobalHeaderRightProps = { + fetchingNotices?: boolean; + onNoticeVisibleChange?: (visible: boolean) => void; + onNoticeClear?: (tabName?: string) => void; +}; + +const getNoticeData = (notices: API.NoticeIconItem[]): Record => { + if (!notices || notices.length === 0 || !Array.isArray(notices)) { + return {}; + } + + const newNotices = notices.map((notice) => { + const newNotice = { ...notice }; + + if (newNotice.datetime) { + newNotice.datetime = moment(notice.datetime as string).fromNow(); + } + + if (newNotice.id) { + newNotice.key = newNotice.id; + } + + if (newNotice.extra && newNotice.status) { + const color = { + todo: '', + processing: 'blue', + urgent: 'red', + doing: 'gold', + }[newNotice.status]; + newNotice.extra = ( + + {newNotice.extra} + + ) as any; + } + + return newNotice; + }); + return groupBy(newNotices, 'type'); +}; + +const getUnreadData = (noticeData: Record) => { + const unreadMsg: Record = {}; + Object.keys(noticeData).forEach((key) => { + const value = noticeData[key]; + + if (!unreadMsg[key]) { + unreadMsg[key] = 0; + } + + if (Array.isArray(value)) { + unreadMsg[key] = value.filter((item) => !item.read).length; + } + }); + return unreadMsg; +}; + +const NoticeIconView: React.FC = () => { + const { initialState } = useModel('@@initialState'); + const { currentUser } = initialState || {}; + const [notices, setNotices] = useState([]); + const { data } = useRequest(getNotices); + + useEffect(() => { + setNotices(data || []); + }, [data]); + + const noticeData = getNoticeData(notices); + const unreadMsg = getUnreadData(noticeData || {}); + + const changeReadState = (id: string) => { + setNotices( + notices.map((item) => { + const notice = { ...item }; + if (notice.id === id) { + notice.read = true; + } + return notice; + }), + ); + }; + + const clearReadState = (title: string, key: string) => { + setNotices( + notices.map((item) => { + const notice = { ...item }; + if (notice.type === key) { + notice.read = true; + } + return notice; + }), + ); + message.success(`${'清空了'} ${title}`); + }; + + return ( + { + changeReadState(item.id!); + }} + onClear={(title: string, key: string) => clearReadState(title, key)} + loading={false} + clearText="清空" + viewMoreText="查看更多" + onViewMore={() => message.info('Click on view more')} + clearClose + > + + + + + ); +}; + +export default NoticeIconView; diff --git a/demo/src/components/RightContent/AvatarDropdown.tsx b/demo/src/components/RightContent/AvatarDropdown.tsx new file mode 100644 index 00000000..fc768c29 --- /dev/null +++ b/demo/src/components/RightContent/AvatarDropdown.tsx @@ -0,0 +1,103 @@ +import React, { useCallback } from 'react'; +import { LogoutOutlined, SettingOutlined, UserOutlined } from '@ant-design/icons'; +import { Avatar, Menu, Spin } from 'antd'; +import { history, useModel } from 'umi'; +import { stringify } from 'querystring'; +import HeaderDropdown from '../HeaderDropdown'; +import styles from './index.less'; +import { outLogin } from '@/services/ant-design-pro/api'; +import type { MenuInfo } from 'rc-menu/lib/interface'; + +export type GlobalHeaderRightProps = { + menu?: boolean; +}; + +/** + * 退出登录,并且将当前的 url 保存 + */ +const loginOut = async () => { + await outLogin(); + const { query = {}, search, pathname } = history.location; + const { redirect } = query; + // Note: There may be security issues, please note + if (window.location.pathname !== '/user/login' && !redirect) { + history.replace({ + pathname: '/user/login', + search: stringify({ + redirect: pathname + search, + }), + }); + } +}; + +const AvatarDropdown: React.FC = ({ menu }) => { + const { initialState, setInitialState } = useModel('@@initialState'); + + const onMenuClick = useCallback( + (event: MenuInfo) => { + const { key } = event; + if (key === 'logout') { + setInitialState((s) => ({ ...s, currentUser: undefined })); + loginOut(); + return; + } + history.push(`/account/${key}`); + }, + [setInitialState], + ); + + const loading = ( + + + + ); + + if (!initialState) { + return loading; + } + + const { currentUser } = initialState; + + if (!currentUser || !currentUser.name) { + return loading; + } + + const menuHeaderDropdown = ( + + {menu && ( + + + 个人中心 + + )} + {menu && ( + + + 个人设置 + + )} + {menu && } + + + + 退出登录 + + + ); + return ( + + + + {currentUser.name} + + + ); +}; + +export default AvatarDropdown; diff --git a/demo/src/components/RightContent/index.less b/demo/src/components/RightContent/index.less new file mode 100644 index 00000000..6d6f1986 --- /dev/null +++ b/demo/src/components/RightContent/index.less @@ -0,0 +1,84 @@ +@import (reference) '~antd/es/style/themes/index'; + +@pro-header-hover-bg: rgba(0, 0, 0, 0.025); + +.menu { + :global(.anticon) { + margin-right: 8px; + } + :global(.ant-dropdown-menu-item) { + min-width: 160px; + } +} + +.right { + display: flex; + float: right; + height: 48px; + margin-left: auto; + overflow: hidden; + .action { + display: flex; + align-items: center; + height: 48px; + padding: 0 12px; + cursor: pointer; + transition: all 0.3s; + > span { + vertical-align: middle; + } + &:hover { + background: @pro-header-hover-bg; + } + &:global(.opened) { + background: @pro-header-hover-bg; + } + } + .search { + padding: 0 12px; + &:hover { + background: transparent; + } + } + .account { + .avatar { + margin-right: 8px; + color: @primary-color; + vertical-align: top; + background: rgba(255, 255, 255, 0.85); + } + } +} + +.dark { + .action { + &:hover { + background: #252a3d; + } + &:global(.opened) { + background: #252a3d; + } + } +} + +@media only screen and (max-width: @screen-md) { + :global(.ant-divider-vertical) { + vertical-align: unset; + } + .name { + display: none; + } + .right { + position: absolute; + top: 0; + right: 12px; + .account { + .avatar { + margin-right: 0; + } + } + .search { + display: none; + } + } +} diff --git a/demo/src/components/RightContent/index.tsx b/demo/src/components/RightContent/index.tsx new file mode 100644 index 00000000..6e478abb --- /dev/null +++ b/demo/src/components/RightContent/index.tsx @@ -0,0 +1,68 @@ +import { Space } from 'antd'; +import { QuestionCircleOutlined } from '@ant-design/icons'; +import React from 'react'; +import { useModel, SelectLang } from 'umi'; +import Avatar from './AvatarDropdown'; +import HeaderSearch from '../HeaderSearch'; +import styles from './index.less'; +import NoticeIconView from '../NoticeIcon'; + +export type SiderTheme = 'light' | 'dark'; + +const GlobalHeaderRight: React.FC = () => { + const { initialState } = useModel('@@initialState'); + + if (!initialState || !initialState.settings) { + return null; + } + + const { navTheme, layout } = initialState.settings; + let className = styles.right; + + if ((navTheme === 'dark' && layout === 'top') || layout === 'mix') { + className = `${styles.right} ${styles.dark}`; + } + + return ( + + umi ui, + value: 'umi ui', + }, + { + label: Ant Design, + value: 'Ant Design', + }, + { + label: Pro Table, + value: 'Pro Table', + }, + { + label: Pro Layout, + value: 'Pro Layout', + }, + ]} // onSearch={value => { + // console.log('input', value); + // }} + /> + { + window.open('https://pro.ant.design/docs/getting-started'); + }} + > + + + + + + + ); +}; + +export default GlobalHeaderRight; diff --git a/demo/src/components/index.md b/demo/src/components/index.md new file mode 100644 index 00000000..408da93a --- /dev/null +++ b/demo/src/components/index.md @@ -0,0 +1,272 @@ +--- +title: 业务组件 +sidemenu: false +--- + +> 此功能由[dumi](https://d.umijs.org/zh-CN/guide/advanced#umi-%E9%A1%B9%E7%9B%AE%E9%9B%86%E6%88%90%E6%A8%A1%E5%BC%8F)提供,dumi 是一个 📖 为组件开发场景而生的文档工具,用过的都说好。 + +# 业务组件 + +这里列举了 Pro 中所有用到的组件,这些组件不适合作为组件库,但是在业务中却真实需要。所以我们准备了这个文档,来指导大家是否需要使用这个组件。 + +## Footer 页脚组件 + +这个组件自带了一些 Pro 的配置,你一般都需要改掉它的信息。 + +```tsx +/** + * background: '#f0f2f5' + */ +import React from 'react'; +import Footer from '@/components/Footer'; + +export default () =>
; +``` + +## HeaderDropdown 头部下拉列表 + +HeaderDropdown 是 antd Dropdown 的封装,但是增加了移动端的特殊处理,用法也是相同的。 + +```tsx +/** + * background: '#f0f2f5' + */ +import { Button, Menu } from 'antd'; +import React from 'react'; +import HeaderDropdown from '@/components/HeaderDropdown'; + +export default () => { + const menuHeaderDropdown = ( + + 个人中心 + 个人设置 + + 退出登录 + + ); + return ( + + + + ); +}; +``` + +## HeaderSearch 头部搜索框 + +一个带补全数据的输入框,支持收起和展开 Input + +```tsx +/** + * background: '#f0f2f5' + */ +import { Button, Menu } from 'antd'; +import React from 'react'; +import HeaderSearch from '@/components/HeaderSearch'; + +export default () => { + return ( + { + console.log('input', value); + }} + /> + ); +}; +``` + +### API + +| 参数 | 说明 | 类型 | 默认值 | +| --------------- | ---------------------------------- | ---------------------------- | ------ | +| value | 输入框的值 | `string` | - | +| onChange | 值修改后触发 | `(value?: string) => void` | - | +| onSearch | 查询后触发 | `(value?: string) => void` | - | +| options | 选项菜单的的列表 | `{label,value}[]` | - | +| defaultVisible | 输入框默认是否显示,只有第一次生效 | `boolean` | - | +| visible | 输入框是否显示 | `boolean` | - | +| onVisibleChange | 输入框显示隐藏的回调函数 | `(visible: boolean) => void` | - | + +## NoticeIcon 通知工具 + +通知工具提供一个展示多种通知信息的界面。 + +```tsx +/** + * background: '#f0f2f5' + */ +import { message } from 'antd'; +import React from 'react'; +import NoticeIcon from '@/components/NoticeIcon/NoticeIcon'; + +export default () => { + const list = [ + { + id: '000000001', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png', + title: '你收到了 14 份新周报', + datetime: '2017-08-09', + type: 'notification', + }, + { + id: '000000002', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png', + title: '你推荐的 曲妮妮 已通过第三轮面试', + datetime: '2017-08-08', + type: 'notification', + }, + ]; + return ( + { + message.info(`${item.title} 被点击了`); + }} + onClear={(title: string, key: string) => message.info('点击了清空更多')} + loading={false} + clearText="清空" + viewMoreText="查看更多" + onViewMore={() => message.info('点击了查看更多')} + clearClose + > + + + + + ); +}; +``` + +### NoticeIcon API + +| 参数 | 说明 | 类型 | 默认值 | +| --- | --- | --- | --- | +| count | 有多少未读通知 | `number` | - | +| bell | 铃铛的图表 | `ReactNode` | - | +| onClear | 点击清空数据按钮 | `(tabName: string, tabKey: string) => void` | - | +| onItemClick | 未读消息列被点击 | `(item: API.NoticeIconData, tabProps: NoticeIconTabProps) => void` | - | +| onViewMore | 查看更多的按钮点击 | `(tabProps: NoticeIconTabProps, e: MouseEvent) => void` | - | +| onTabChange | 通知 Tab 的切换 | `(tabTile: string) => void;` | - | +| popupVisible | 通知显示是否展示 | `boolean` | - | +| onPopupVisibleChange | 通知信息显示隐藏的回调函数 | `(visible: boolean) => void` | - | +| clearText | 清空按钮的文字 | `string` | - | +| viewMoreText | 查看更多的按钮文字 | `string` | - | +| clearClose | 展示清空按钮 | `boolean` | - | +| emptyImage | 列表为空时的兜底展示 | `ReactNode` | - | + +### NoticeIcon.Tab API + +| 参数 | 说明 | 类型 | 默认值 | +| ------------ | ------------------ | ------------------------------------ | ------ | +| count | 有多少未读通知 | `number` | - | +| title | 通知 Tab 的标题 | `ReactNode` | - | +| showClear | 展示清除按钮 | `boolean` | `true` | +| showViewMore | 展示加载更 | `boolean` | `true` | +| tabKey | Tab 的唯一 key | `string` | - | +| onClick | 子项的单击事件 | `(item: API.NoticeIconData) => void` | - | +| onClear | 清楚按钮的点击 | `()=>void` | - | +| emptyText | 为空的时候测试 | `()=>void` | - | +| viewMoreText | 查看更多的按钮文字 | `string` | - | +| onViewMore | 查看更多的按钮点击 | `( e: MouseEvent) => void` | - | +| list | 通知信息的列表 | `API.NoticeIconData` | - | + +### NoticeIconData + +```tsx | pure +export interface NoticeIconData { + id: string; + key: string; + avatar: string; + title: string; + datetime: string; + type: string; + read?: boolean; + description: string; + clickClose?: boolean; + extra: any; + status: string; +} +``` + +## RightContent + +RightContent 是以上几个组件的组合,同时新增了 plugins 的 `SelectLang` 插件。 + +```tsx | pure + + umi ui, value: 'umi ui' }, + { + label: Ant Design, + value: 'Ant Design', + }, + { + label: Pro Table, + value: 'Pro Table', + }, + { + label: Pro Layout, + value: 'Pro Layout', + }, + ]} + /> + + { + window.location.href = 'https://pro.ant.design/docs/getting-started'; + }} + > + + + + + {REACT_APP_ENV && ( + + {REACT_APP_ENV} + + )} + + +``` diff --git a/demo/src/e2e/baseLayout.e2e.spec.ts b/demo/src/e2e/baseLayout.e2e.spec.ts new file mode 100644 index 00000000..e1d62c71 --- /dev/null +++ b/demo/src/e2e/baseLayout.e2e.spec.ts @@ -0,0 +1,45 @@ +import type { Page } from '@playwright/test'; +import { test, expect } from '@playwright/test'; +const { uniq } = require('lodash'); +const RouterConfig = require('../../config/routes').default; + +const BASE_URL = `http://localhost:${process.env.PORT || 8001}`; + +function formatter(routes: any, parentPath = ''): string[] { + const fixedParentPath = parentPath.replace(/\/{1,}/g, '/'); + let result: string[] = []; + routes.forEach((item: { path: string; routes: string }) => { + if (item.path && !item.path.startsWith('/')) { + result.push(`${fixedParentPath}/${item.path}`.replace(/\/{1,}/g, '/')); + } + if (item.path && item.path.startsWith('/')) { + result.push(`${item.path}`.replace(/\/{1,}/g, '/')); + } + if (item.routes) { + result = result.concat( + formatter(item.routes, item.path ? `${fixedParentPath}/${item.path}` : parentPath), + ); + } + }); + return uniq(result.filter((item) => !!item)); +} + +const testPage = (path: string, page: Page) => async () => { + await page.evaluate(() => { + localStorage.setItem('antd-pro-authority', '["admin"]'); + }); + await page.goto(`${BASE_URL}${path}`); + await page.waitForSelector('footer', { + timeout: 2000, + }); + const haveFooter = await page.evaluate(() => document.getElementsByTagName('footer').length > 0); + expect(haveFooter).toBeTruthy(); +}; + +const routers = formatter(RouterConfig); + +routers.forEach((route) => { + test(`test route page ${route}`, async ({ page }) => { + await testPage(route, page); + }); +}); diff --git a/demo/src/global.less b/demo/src/global.less new file mode 100644 index 00000000..0d6158c7 --- /dev/null +++ b/demo/src/global.less @@ -0,0 +1,57 @@ +@import '~antd/es/style/variable.less'; + +html, +body, +#root { + height: 100%; +} + +.colorWeak { + filter: invert(80%); +} + +.ant-layout { + min-height: 100vh; +} +.ant-pro-sider.ant-layout-sider.ant-pro-sider-fixed { + left: unset; +} + +canvas { + display: block; +} + +body { + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +ul, +ol { + list-style: none; +} + +@media (max-width: @screen-xs) { + .ant-table { + width: 100%; + overflow-x: auto; + &-thead > tr, + &-tbody > tr { + > th, + > td { + white-space: pre; + > span { + display: block; + } + } + } + } +} + +// Compatible with IE11 +@media screen and(-ms-high-contrast: active), (-ms-high-contrast: none) { + body .ant-design-pro > .ant-layout { + min-height: 100vh; + } +} diff --git a/demo/src/global.tsx b/demo/src/global.tsx new file mode 100644 index 00000000..29f47a09 --- /dev/null +++ b/demo/src/global.tsx @@ -0,0 +1,91 @@ +import { Button, message, notification } from 'antd'; +import { useIntl } from 'umi'; +import defaultSettings from '../config/defaultSettings'; + +const { pwa } = defaultSettings; +const isHttps = document.location.protocol === 'https:'; + +const clearCache = () => { + // remove all caches + if (window.caches) { + caches + .keys() + .then((keys) => { + keys.forEach((key) => { + caches.delete(key); + }); + }) + .catch((e) => console.log(e)); + } +}; + +// if pwa is true +if (pwa) { + // Notify user if offline now + window.addEventListener('sw.offline', () => { + message.warning(useIntl().formatMessage({ id: 'app.pwa.offline' })); + }); + + // Pop up a prompt on the page asking the user if they want to use the latest version + window.addEventListener('sw.updated', (event: Event) => { + const e = event as CustomEvent; + const reloadSW = async () => { + // Check if there is sw whose state is waiting in ServiceWorkerRegistration + // https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration + const worker = e.detail && e.detail.waiting; + if (!worker) { + return true; + } + // Send skip-waiting event to waiting SW with MessageChannel + await new Promise((resolve, reject) => { + const channel = new MessageChannel(); + channel.port1.onmessage = (msgEvent) => { + if (msgEvent.data.error) { + reject(msgEvent.data.error); + } else { + resolve(msgEvent.data); + } + }; + worker.postMessage({ type: 'skip-waiting' }, [channel.port2]); + }); + + clearCache(); + window.location.reload(); + return true; + }; + const key = `open${Date.now()}`; + const btn = ( + + ); + notification.open({ + message: useIntl().formatMessage({ id: 'app.pwa.serviceworker.updated' }), + description: useIntl().formatMessage({ id: 'app.pwa.serviceworker.updated.hint' }), + btn, + key, + onClose: async () => null, + }); + }); +} else if ('serviceWorker' in navigator && isHttps) { + // unregister service worker + const { serviceWorker } = navigator; + if (serviceWorker.getRegistrations) { + serviceWorker.getRegistrations().then((sws) => { + sws.forEach((sw) => { + sw.unregister(); + }); + }); + } + serviceWorker.getRegistration().then((sw) => { + if (sw) sw.unregister(); + }); + + clearCache(); +} diff --git a/demo/src/locales/bn-BD.ts b/demo/src/locales/bn-BD.ts new file mode 100644 index 00000000..f9f6afd6 --- /dev/null +++ b/demo/src/locales/bn-BD.ts @@ -0,0 +1,26 @@ +import component from './bn-BD/component'; +import globalHeader from './bn-BD/globalHeader'; +import menu from './bn-BD/menu'; +import pages from './bn-BD/pages'; +import pwa from './bn-BD/pwa'; +import settingDrawer from './bn-BD/settingDrawer'; +import settings from './bn-BD/settings'; + +export default { + 'navBar.lang': 'ভাষা', + 'layout.user.link.help': 'সহায়তা', + 'layout.user.link.privacy': 'গোপনীয়তা', + 'layout.user.link.terms': 'শর্তাদি', + 'app.copyright.produced': 'প্রযোজনা করেছেন অ্যান্ট ফিনান্সিয়াল এক্সপেরিয়েন্স ডিপার্টমেন্ট', + 'app.preview.down.block': 'আপনার স্থানীয় প্রকল্পে এই পৃষ্ঠাটি ডাউনলোড করুন', + 'app.welcome.link.fetch-blocks': 'সমস্ত ব্লক পান', + 'app.welcome.link.block-list': + '`block` ডেভেলপমেন্ট এর উপর ভিত্তি করে দ্রুত স্ট্যান্ডার্ড, পৃষ্ঠাসমূহ তৈরি করুন।', + ...globalHeader, + ...menu, + ...settingDrawer, + ...settings, + ...pwa, + ...component, + ...pages, +}; diff --git a/demo/src/locales/bn-BD/component.ts b/demo/src/locales/bn-BD/component.ts new file mode 100644 index 00000000..a546e757 --- /dev/null +++ b/demo/src/locales/bn-BD/component.ts @@ -0,0 +1,5 @@ +export default { + 'component.tagSelect.expand': 'বিস্তৃত', + 'component.tagSelect.collapse': 'সঙ্কুচিত', + 'component.tagSelect.all': 'সব', +}; diff --git a/demo/src/locales/bn-BD/globalHeader.ts b/demo/src/locales/bn-BD/globalHeader.ts new file mode 100644 index 00000000..2679be46 --- /dev/null +++ b/demo/src/locales/bn-BD/globalHeader.ts @@ -0,0 +1,17 @@ +export default { + 'component.globalHeader.search': 'অনুসন্ধান করুন', + 'component.globalHeader.search.example1': 'অনুসন্ধান উদাহরণ ১', + 'component.globalHeader.search.example2': 'অনুসন্ধান উদাহরণ ২', + 'component.globalHeader.search.example3': 'অনুসন্ধান উদাহরণ ৩', + 'component.globalHeader.help': 'সহায়তা', + 'component.globalHeader.notification': 'বিজ্ঞপ্তি', + 'component.globalHeader.notification.empty': 'আপনি সমস্ত বিজ্ঞপ্তি দেখেছেন।', + 'component.globalHeader.message': 'বার্তা', + 'component.globalHeader.message.empty': 'আপনি সমস্ত বার্তা দেখেছেন।', + 'component.globalHeader.event': 'ঘটনা', + 'component.globalHeader.event.empty': 'আপনি সমস্ত ইভেন্ট দেখেছেন।', + 'component.noticeIcon.clear': 'সাফ', + 'component.noticeIcon.cleared': 'সাফ করা হয়েছে', + 'component.noticeIcon.empty': 'বিজ্ঞপ্তি নেই', + 'component.noticeIcon.view-more': 'আরো দেখুন', +}; diff --git a/demo/src/locales/bn-BD/menu.ts b/demo/src/locales/bn-BD/menu.ts new file mode 100644 index 00000000..ae511a0d --- /dev/null +++ b/demo/src/locales/bn-BD/menu.ts @@ -0,0 +1,52 @@ +export default { + 'menu.welcome': 'স্বাগতম', + 'menu.more-blocks': 'আরও ব্লক', + 'menu.home': 'নীড়', + 'menu.admin': 'অ্যাডমিন', + 'menu.admin.sub-page': 'উপ-পৃষ্ঠা', + 'menu.login': 'প্রবেশ', + 'menu.register': 'নিবন্ধন', + 'menu.register-result': 'নিবন্ধনে ফলাফল', + 'menu.dashboard': 'ড্যাশবোর্ড', + 'menu.dashboard.analysis': 'বিশ্লেষণ', + 'menu.dashboard.monitor': 'নিরীক্ষণ', + 'menu.dashboard.workplace': 'কর্মক্ষেত্র', + 'menu.exception.403': '403', + 'menu.exception.404': '404', + 'menu.exception.500': '500', + 'menu.form': 'ফর্ম', + 'menu.form.basic-form': 'বেসিক ফর্ম', + 'menu.form.step-form': 'পদক্ষেপ ফর্ম', + 'menu.form.step-form.info': 'পদক্ষেপ ফর্ম (স্থানান্তর তথ্য লিখুন)', + 'menu.form.step-form.confirm': 'পদক্ষেপ ফর্ম (স্থানান্তর তথ্য নিশ্চিত করুন)', + 'menu.form.step-form.result': 'পদক্ষেপ ফর্ম (সমাপ্ত)', + 'menu.form.advanced-form': 'উন্নত ফর্ম', + 'menu.list': 'তালিকা', + 'menu.list.table-list': 'অনুসন্ধানের টেবিল', + 'menu.list.basic-list': 'বেসিক তালিকা', + 'menu.list.card-list': 'কার্ডের তালিকা', + 'menu.list.search-list': 'অনুসন্ধানের তালিকা', + 'menu.list.search-list.articles': 'অনুসন্ধানের তালিকা (নিবন্ধসমূহ)', + 'menu.list.search-list.projects': 'অনুসন্ধানের তালিকা (প্রকল্পগুলি)', + 'menu.list.search-list.applications': 'অনুসন্ধানের তালিকা (অ্যাপ্লিকেশন)', + 'menu.profile': 'প্রোফাইল', + 'menu.profile.basic': 'বেসিক প্রোফাইল', + 'menu.profile.advanced': 'উন্নত প্রোফাইল', + 'menu.result': 'ফলাফল', + 'menu.result.success': 'সাফল্য', + 'menu.result.fail': 'ব্যর্থ', + 'menu.exception': 'ব্যতিক্রম', + 'menu.exception.not-permission': '403', + 'menu.exception.not-find': '404', + 'menu.exception.server-error': '500', + 'menu.exception.trigger': 'ট্রিগার', + 'menu.account': 'হিসাব', + 'menu.account.center': 'অ্যাকাউন্ট কেন্দ্র', + 'menu.account.settings': 'অ্যাকাউন্ট সেটিংস', + 'menu.account.trigger': 'ট্রিগার ত্রুটি', + 'menu.account.logout': 'প্রস্থান', + 'menu.editor': 'গ্রাফিক সম্পাদক', + 'menu.editor.flow': 'ফ্লো এডিটর', + 'menu.editor.mind': 'মাইন্ড এডিটর', + 'menu.editor.koni': 'কোনি সম্পাদক', +}; diff --git a/demo/src/locales/bn-BD/pages.ts b/demo/src/locales/bn-BD/pages.ts new file mode 100644 index 00000000..726bd209 --- /dev/null +++ b/demo/src/locales/bn-BD/pages.ts @@ -0,0 +1,70 @@ +export default { + 'pages.layouts.userLayout.title': + 'পিঁপড়া ডিজাইন হচ্ছে সিহু জেলার সবচেয়ে প্রভাবশালী ওয়েব ডিজাইনের স্পেসিফিকেশন', + 'pages.login.accountLogin.tab': 'অ্যাকাউন্টে লগইন', + 'pages.login.accountLogin.errorMessage': 'ভুল ব্যবহারকারীর নাম/পাসওয়ার্ড(admin/ant.design)', + 'pages.login.failure': 'লগইন ব্যর্থ হয়েছে। আবার চেষ্টা করুন!', + 'pages.login.success': 'সফল লগইন!', + 'pages.login.username.placeholder': 'ব্যবহারকারীর নাম: admin or user', + 'pages.login.username.required': 'আপনার ব্যবহারকারীর নাম ইনপুট করুন!', + 'pages.login.password.placeholder': 'পাসওয়ার্ড: ant.design', + 'pages.login.password.required': 'আপনার পাসওয়ার্ড ইনপুট করুন!', + 'pages.login.phoneLogin.tab': 'ফোন লগইন', + 'pages.login.phoneLogin.errorMessage': 'যাচাইকরণ কোড ত্রুটি', + 'pages.login.phoneNumber.placeholder': 'ফোন নম্বর', + 'pages.login.phoneNumber.required': 'আপনার ফোন নম্বর ইনপুট করুন!', + 'pages.login.phoneNumber.invalid': 'ফোন নম্বরটি সঠিক নয়!', + 'pages.login.captcha.placeholder': 'যাচাইকরণের কোড', + 'pages.login.captcha.required': 'দয়া করে ভেরিফিকেশন কোডটি ইনপুট করুন!', + 'pages.login.phoneLogin.getVerificationCode': 'কোড পান', + 'pages.getCaptchaSecondText': 'সেকেন্ড', + 'pages.login.rememberMe': 'আমাকে মনে রাখুন', + 'pages.login.forgotPassword': 'পাসওয়ার্ড ভুলে গেছেন?', + 'pages.login.submit': 'প্রবেশ করুন', + 'pages.login.loginWith': 'লগইন করতে পারেন:', + 'pages.login.registerAccount': 'অ্যাকাউন্ট নিবন্ধন করুন', + 'pages.welcome.advancedComponent': 'অ্যাডভান্সড কম্পোনেন্ট', + 'pages.welcome.link': 'স্বাগতম', + 'pages.welcome.advancedLayout': 'অ্যাডভান্সড লেআউট', + 'pages.welcome.alertMessage': 'দ্রুত এবং শক্তিশালী ভারী শুল্ক উপাদান প্রকাশ করা হয়েছে।', + 'pages.admin.subPage.title': 'এই পৃষ্ঠাটি কেবল অ্যাডমিন দ্বারা দেখা যাবে', + 'pages.admin.subPage.alertMessage': + 'UMI UI এখন প্রকাশিত হয়েছে, অভিজ্ঞতা শুরু করতে npm run ui ব্যবহার করতে স্বাগতম।', + 'pages.searchTable.createForm.newRule': 'নতুন বিধি', + 'pages.searchTable.updateForm.ruleConfig': 'বিধি কনফিগারেশন', + 'pages.searchTable.updateForm.basicConfig': 'মৌলিক তথ্য', + 'pages.searchTable.updateForm.ruleName.nameLabel': 'বিধি নাম', + 'pages.searchTable.updateForm.ruleName.nameRules': 'বিধির নাম লিখুন!', + 'pages.searchTable.updateForm.ruleDesc.descLabel': 'বিধির বিবরণ', + 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': 'কমপক্ষে পাঁচটি অক্ষর লিখুন', + 'pages.searchTable.updateForm.ruleDesc.descRules': + 'কমপক্ষে পাঁচটি অক্ষরের একটি বিধান বিবরণ লিখুন!', + 'pages.searchTable.updateForm.ruleProps.title': 'বৈশিষ্ট্য কনফিগার করুন', + 'pages.searchTable.updateForm.object': 'নিরীক্ষণ অবজেক্ট', + 'pages.searchTable.updateForm.ruleProps.templateLabel': 'বিধি টেম্পলেট', + 'pages.searchTable.updateForm.ruleProps.typeLabel': 'বিধি প্রকার', + 'pages.searchTable.updateForm.schedulingPeriod.title': 'সময়সূচী নির্ধারণ করুন', + 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': 'শুরুর সময়', + 'pages.searchTable.updateForm.schedulingPeriod.timeRules': 'একটি শুরুর সময় চয়ন করুন!', + 'pages.searchTable.titleDesc': 'বর্ণনা', + 'pages.searchTable.ruleName': 'বিধি নাম প্রয়োজন', + 'pages.searchTable.titleCallNo': 'পরিষেবা কল সংখ্যা', + 'pages.searchTable.titleStatus': 'অবস্থা', + 'pages.searchTable.nameStatus.default': 'ডিফল্ট', + 'pages.searchTable.nameStatus.running': 'চলমান', + 'pages.searchTable.nameStatus.online': 'অনলাইন', + 'pages.searchTable.nameStatus.abnormal': 'অস্বাভাবিক', + 'pages.searchTable.titleUpdatedAt': 'সর্বশেষ নির্ধারিত', + 'pages.searchTable.exception': 'ব্যতিক্রম জন্য কারণ লিখুন!', + 'pages.searchTable.titleOption': 'অপশন', + 'pages.searchTable.config': 'কনফিগারেশন', + 'pages.searchTable.subscribeAlert': 'সতর্কতা সাবস্ক্রাইব করুন', + 'pages.searchTable.title': 'ইনকয়েরি ফরম', + 'pages.searchTable.new': 'নতুন', + 'pages.searchTable.chosen': 'নির্বাচিত', + 'pages.searchTable.item': 'আইটেম', + 'pages.searchTable.totalServiceCalls': 'পরিষেবা কলগুলির মোট সংখ্যা', + 'pages.searchTable.tenThousand': '000', + 'pages.searchTable.batchDeletion': 'একসাখে ডিলিট', + 'pages.searchTable.batchApproval': 'একসাখে অনুমোদন', +}; diff --git a/demo/src/locales/bn-BD/pwa.ts b/demo/src/locales/bn-BD/pwa.ts new file mode 100644 index 00000000..233fb305 --- /dev/null +++ b/demo/src/locales/bn-BD/pwa.ts @@ -0,0 +1,7 @@ +export default { + 'app.pwa.offline': 'আপনি এখন অফলাইন', + 'app.pwa.serviceworker.updated': 'নতুন সামগ্রী উপলব্ধ', + 'app.pwa.serviceworker.updated.hint': + 'বর্তমান পৃষ্ঠাটি পুনরায় লোড করতে দয়া করে "রিফ্রেশ" বোতাম টিপুন', + 'app.pwa.serviceworker.updated.ok': 'রিফ্রেশ', +}; diff --git a/demo/src/locales/bn-BD/settingDrawer.ts b/demo/src/locales/bn-BD/settingDrawer.ts new file mode 100644 index 00000000..2bd1d045 --- /dev/null +++ b/demo/src/locales/bn-BD/settingDrawer.ts @@ -0,0 +1,31 @@ +export default { + 'app.setting.pagestyle': 'পৃষ্ঠা স্টাইল সেটিং', + 'app.setting.pagestyle.dark': 'ডার্ক স্টাইল', + 'app.setting.pagestyle.light': 'লাইট স্টাইল', + 'app.setting.content-width': 'সামগ্রীর প্রস্থ', + 'app.setting.content-width.fixed': 'স্থির', + 'app.setting.content-width.fluid': 'প্রবাহী', + 'app.setting.themecolor': 'থিম রঙ', + 'app.setting.themecolor.dust': 'ডাস্ট রেড', + 'app.setting.themecolor.volcano': 'আগ্নেয়গিরি', + 'app.setting.themecolor.sunset': 'সানসেট কমলা', + 'app.setting.themecolor.cyan': 'সবুজাভ নীল', + 'app.setting.themecolor.green': 'পোলার সবুজ', + 'app.setting.themecolor.daybreak': 'দিবস ব্রেক ব্লু (ডিফল্ট)', + 'app.setting.themecolor.geekblue': 'গিক আঠালো', + 'app.setting.themecolor.purple': 'গোল্ডেন বেগুনি', + 'app.setting.navigationmode': 'নেভিগেশন মোড', + 'app.setting.sidemenu': 'সাইড মেনু লেআউট', + 'app.setting.topmenu': 'টপ মেনু লেআউট', + 'app.setting.fixedheader': 'স্থির হেডার', + 'app.setting.fixedsidebar': 'স্থির সাইডবার', + 'app.setting.fixedsidebar.hint': 'সাইড মেনু বিন্যাসে কাজ করে', + 'app.setting.hideheader': 'স্ক্রোল করার সময় হেডার লুকানো', + 'app.setting.hideheader.hint': 'লুকানো হেডার সক্ষম থাকলে কাজ করে', + 'app.setting.othersettings': 'অন্যান্য সেটিংস্', + 'app.setting.weakmode': 'দুর্বল মোড', + 'app.setting.copy': 'সেটিং কপি করুন', + 'app.setting.copyinfo': 'সাফল্যের অনুলিপি করুন - প্রতিস্থাপন করুন: src/models/setting.js', + 'app.setting.production.hint': + 'কেবল বিকাশের পরিবেশে প্যানেল শো সেট করা হচ্ছে, দয়া করে ম্যানুয়ালি সংশোধন করুন', +}; diff --git a/demo/src/locales/bn-BD/settings.ts b/demo/src/locales/bn-BD/settings.ts new file mode 100644 index 00000000..93cf904a --- /dev/null +++ b/demo/src/locales/bn-BD/settings.ts @@ -0,0 +1,59 @@ +export default { + 'app.settings.menuMap.basic': 'মৌলিক বৈশিষ্ট্যসহ', + 'app.settings.menuMap.security': 'নিরাপত্তা বিন্যাস', + 'app.settings.menuMap.binding': 'অ্যাকাউন্ট বাঁধাই', + 'app.settings.menuMap.notification': 'নতুন বার্তা বিজ্ঞপ্তি', + 'app.settings.basic.avatar': 'অবতার', + 'app.settings.basic.change-avatar': 'অবতার পরিবর্তন করুন', + 'app.settings.basic.email': 'ইমেইল', + 'app.settings.basic.email-message': 'আপনার ইমেইল ইনপুট করুন!', + 'app.settings.basic.nickname': 'ডাক নাম', + 'app.settings.basic.nickname-message': 'আপনার ডাকনামটি ইনপুট করুন!', + 'app.settings.basic.profile': 'ব্যক্তিগত প্রোফাইল', + 'app.settings.basic.profile-message': 'আপনার ব্যক্তিগত প্রোফাইল ইনপুট করুন!', + 'app.settings.basic.profile-placeholder': 'নিজের সাথে সংক্ষিপ্ত পরিচয়', + 'app.settings.basic.country': 'দেশ/অঞ্চল', + 'app.settings.basic.country-message': 'আপনার দেশ ইনপুট করুন!', + 'app.settings.basic.geographic': 'প্রদেশ বা শহর', + 'app.settings.basic.geographic-message': 'আপনার ভৌগলিক তথ্য ইনপুট করুন!', + 'app.settings.basic.address': 'রাস্তার ঠিকানা', + 'app.settings.basic.address-message': 'দয়া করে আপনার ঠিকানা ইনপুট করুন!', + 'app.settings.basic.phone': 'ফোন নম্বর', + 'app.settings.basic.phone-message': 'আপনার ফোন ইনপুট করুন!', + 'app.settings.basic.update': 'তথ্য হালনাগাদ', + 'app.settings.security.strong': 'শক্তিশালী', + 'app.settings.security.medium': 'মধ্যম', + 'app.settings.security.weak': 'দুর্বল', + 'app.settings.security.password': 'অ্যাকাউন্টের পাসওয়ার্ড', + 'app.settings.security.password-description': 'বর্তমান পাসওয়ার্ড শক্তি', + 'app.settings.security.phone': 'সুরক্ষা ফোন', + 'app.settings.security.phone-description': 'আবদ্ধ ফোন', + 'app.settings.security.question': 'নিরাপত্তা প্রশ্ন', + 'app.settings.security.question-description': + 'সুরক্ষা প্রশ্ন সেট করা নেই, এবং সুরক্ষা নীতি কার্যকরভাবে অ্যাকাউন্ট সুরক্ষা রক্ষা করতে পারে', + 'app.settings.security.email': 'ব্যাকআপ ইমেইল', + 'app.settings.security.email-description': 'বাউন্ড ইমেইল', + 'app.settings.security.mfa': 'MFA ডিভাইস', + 'app.settings.security.mfa-description': + "আনবাউন্ড এমএফএ ডিভাইস, বাঁধাইয়ের পরে, দু'বার নিশ্চিত করা যায়", + 'app.settings.security.modify': 'পরিবর্তন করুন', + 'app.settings.security.set': 'সেট', + 'app.settings.security.bind': 'বাঁধাই', + 'app.settings.binding.taobao': 'বাঁধাই তাওবাও', + 'app.settings.binding.taobao-description': 'বর্তমানে আনবাউন্ড তাওবাও অ্যাকাউন্ট', + 'app.settings.binding.alipay': 'বাইন্ডিং আলিপে', + 'app.settings.binding.alipay-description': 'বর্তমানে আনবাউন্ড আলিপে অ্যাকাউন্ট', + 'app.settings.binding.dingding': 'বাঁধাই ডিঙ্গটালক', + 'app.settings.binding.dingding-description': 'বর্তমানে আনবাউন্ড ডিঙ্গটাল অ্যাকাউন্ট', + 'app.settings.binding.bind': 'বাঁধাই', + 'app.settings.notification.password': 'অ্যাকাউন্টের পাসওয়ার্ড', + 'app.settings.notification.password-description': + 'অন্যান্য ব্যবহারকারীর বার্তাগুলি স্টেশন চিঠি আকারে জানানো হবে', + 'app.settings.notification.messages': 'সিস্টেম বার্তা', + 'app.settings.notification.messages-description': + 'সিস্টেম বার্তাগুলি স্টেশন চিঠির আকারে জানানো হবে', + 'app.settings.notification.todo': 'করণীয় বিজ্ঞপ্তি', + 'app.settings.notification.todo-description': 'করণীয় তালিকাটি স্টেশন থেকে চিঠি আকারে জানানো হবে', + 'app.settings.open': 'খোলা', + 'app.settings.close': 'বন্ধ', +}; diff --git a/demo/src/locales/en-US.ts b/demo/src/locales/en-US.ts new file mode 100644 index 00000000..acb0f42f --- /dev/null +++ b/demo/src/locales/en-US.ts @@ -0,0 +1,25 @@ +import component from './en-US/component'; +import globalHeader from './en-US/globalHeader'; +import menu from './en-US/menu'; +import pages from './en-US/pages'; +import pwa from './en-US/pwa'; +import settingDrawer from './en-US/settingDrawer'; +import settings from './en-US/settings'; + +export default { + 'navBar.lang': 'Languages', + 'layout.user.link.help': 'Help', + 'layout.user.link.privacy': 'Privacy', + 'layout.user.link.terms': 'Terms', + 'app.copyright.produced': 'Produced by Ant Financial Experience Department', + 'app.preview.down.block': 'Download this page to your local project', + 'app.welcome.link.fetch-blocks': 'Get all block', + 'app.welcome.link.block-list': 'Quickly build standard, pages based on `block` development', + ...globalHeader, + ...menu, + ...settingDrawer, + ...settings, + ...pwa, + ...component, + ...pages, +}; diff --git a/demo/src/locales/en-US/component.ts b/demo/src/locales/en-US/component.ts new file mode 100644 index 00000000..3ba7eeda --- /dev/null +++ b/demo/src/locales/en-US/component.ts @@ -0,0 +1,5 @@ +export default { + 'component.tagSelect.expand': 'Expand', + 'component.tagSelect.collapse': 'Collapse', + 'component.tagSelect.all': 'All', +}; diff --git a/demo/src/locales/en-US/globalHeader.ts b/demo/src/locales/en-US/globalHeader.ts new file mode 100644 index 00000000..60b6d4ec --- /dev/null +++ b/demo/src/locales/en-US/globalHeader.ts @@ -0,0 +1,17 @@ +export default { + 'component.globalHeader.search': 'Search', + 'component.globalHeader.search.example1': 'Search example 1', + 'component.globalHeader.search.example2': 'Search example 2', + 'component.globalHeader.search.example3': 'Search example 3', + 'component.globalHeader.help': 'Help', + 'component.globalHeader.notification': 'Notification', + 'component.globalHeader.notification.empty': 'You have viewed all notifications.', + 'component.globalHeader.message': 'Message', + 'component.globalHeader.message.empty': 'You have viewed all messsages.', + 'component.globalHeader.event': 'Event', + 'component.globalHeader.event.empty': 'You have viewed all events.', + 'component.noticeIcon.clear': 'Clear', + 'component.noticeIcon.cleared': 'Cleared', + 'component.noticeIcon.empty': 'No notifications', + 'component.noticeIcon.view-more': 'View more', +}; diff --git a/demo/src/locales/en-US/menu.ts b/demo/src/locales/en-US/menu.ts new file mode 100644 index 00000000..eae3e532 --- /dev/null +++ b/demo/src/locales/en-US/menu.ts @@ -0,0 +1,52 @@ +export default { + 'menu.welcome': 'Welcome', + 'menu.more-blocks': 'More Blocks', + 'menu.home': 'Home', + 'menu.admin': 'Admin', + 'menu.admin.sub-page': 'Sub-Page', + 'menu.login': 'Login', + 'menu.register': 'Register', + 'menu.register-result': 'Register Result', + 'menu.dashboard': 'Dashboard', + 'menu.dashboard.analysis': 'Analysis', + 'menu.dashboard.monitor': 'Monitor', + 'menu.dashboard.workplace': 'Workplace', + 'menu.exception.403': '403', + 'menu.exception.404': '404', + 'menu.exception.500': '500', + 'menu.form': 'Form', + 'menu.form.basic-form': 'Basic Form', + 'menu.form.step-form': 'Step Form', + 'menu.form.step-form.info': 'Step Form(write transfer information)', + 'menu.form.step-form.confirm': 'Step Form(confirm transfer information)', + 'menu.form.step-form.result': 'Step Form(finished)', + 'menu.form.advanced-form': 'Advanced Form', + 'menu.list': 'List', + 'menu.list.table-list': 'Search Table', + 'menu.list.basic-list': 'Basic List', + 'menu.list.card-list': 'Card List', + 'menu.list.search-list': 'Search List', + 'menu.list.search-list.articles': 'Search List(articles)', + 'menu.list.search-list.projects': 'Search List(projects)', + 'menu.list.search-list.applications': 'Search List(applications)', + 'menu.profile': 'Profile', + 'menu.profile.basic': 'Basic Profile', + 'menu.profile.advanced': 'Advanced Profile', + 'menu.result': 'Result', + 'menu.result.success': 'Success', + 'menu.result.fail': 'Fail', + 'menu.exception': 'Exception', + 'menu.exception.not-permission': '403', + 'menu.exception.not-find': '404', + 'menu.exception.server-error': '500', + 'menu.exception.trigger': 'Trigger', + 'menu.account': 'Account', + 'menu.account.center': 'Account Center', + 'menu.account.settings': 'Account Settings', + 'menu.account.trigger': 'Trigger Error', + 'menu.account.logout': 'Logout', + 'menu.editor': 'Graphic Editor', + 'menu.editor.flow': 'Flow Editor', + 'menu.editor.mind': 'Mind Editor', + 'menu.editor.koni': 'Koni Editor', +}; diff --git a/demo/src/locales/en-US/pages.ts b/demo/src/locales/en-US/pages.ts new file mode 100644 index 00000000..3d617424 --- /dev/null +++ b/demo/src/locales/en-US/pages.ts @@ -0,0 +1,70 @@ +export default { + 'pages.layouts.userLayout.title': + 'Ant Design is the most influential web design specification in Xihu district', + 'pages.login.accountLogin.tab': 'Account Login', + 'pages.login.accountLogin.errorMessage': 'Incorrect username/password(admin/ant.design)', + 'pages.login.failure': 'Login failed, please try again!', + 'pages.login.success': 'Login successful!', + 'pages.login.username.placeholder': 'Username: admin or user', + 'pages.login.username.required': 'Please input your username!', + 'pages.login.password.placeholder': 'Password: ant.design', + 'pages.login.password.required': 'Please input your password!', + 'pages.login.phoneLogin.tab': 'Phone Login', + 'pages.login.phoneLogin.errorMessage': 'Verification Code Error', + 'pages.login.phoneNumber.placeholder': 'Phone Number', + 'pages.login.phoneNumber.required': 'Please input your phone number!', + 'pages.login.phoneNumber.invalid': 'Phone number is invalid!', + 'pages.login.captcha.placeholder': 'Verification Code', + 'pages.login.captcha.required': 'Please input verification code!', + 'pages.login.phoneLogin.getVerificationCode': 'Get Code', + 'pages.getCaptchaSecondText': 'sec(s)', + 'pages.login.rememberMe': 'Remember me', + 'pages.login.forgotPassword': 'Forgot Password ?', + 'pages.login.submit': 'Login', + 'pages.login.loginWith': 'Login with :', + 'pages.login.registerAccount': 'Register Account', + 'pages.welcome.advancedComponent': 'Advanced Component', + 'pages.welcome.link': 'Welcome', + 'pages.welcome.advancedLayout': 'Advanced Layout', + 'pages.welcome.alertMessage': 'Faster and stronger heavy-duty components have been released.', + 'pages.admin.subPage.title': 'This page can only be viewed by Admin', + 'pages.admin.subPage.alertMessage': + 'Umi ui is now released, welcome to use npm run ui to start the experience.', + 'pages.searchTable.createForm.newRule': 'New Rule', + 'pages.searchTable.updateForm.ruleConfig': 'Rule configuration', + 'pages.searchTable.updateForm.basicConfig': 'Basic Information', + 'pages.searchTable.updateForm.ruleName.nameLabel': 'Rule Name', + 'pages.searchTable.updateForm.ruleName.nameRules': 'Please enter the rule name!', + 'pages.searchTable.updateForm.ruleDesc.descLabel': 'Rule Description', + 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': 'Please enter at least five characters', + 'pages.searchTable.updateForm.ruleDesc.descRules': + 'Please enter a rule description of at least five characters!', + 'pages.searchTable.updateForm.ruleProps.title': 'Configure Properties', + 'pages.searchTable.updateForm.object': 'Monitoring Object', + 'pages.searchTable.updateForm.ruleProps.templateLabel': 'Rule Template', + 'pages.searchTable.updateForm.ruleProps.typeLabel': 'Rule Type', + 'pages.searchTable.updateForm.schedulingPeriod.title': 'Set Scheduling Period', + 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': 'Starting Time', + 'pages.searchTable.updateForm.schedulingPeriod.timeRules': 'Please choose a start time!', + 'pages.searchTable.titleDesc': 'Description', + 'pages.searchTable.ruleName': 'Rule name is required', + 'pages.searchTable.titleCallNo': 'Number of Service Calls', + 'pages.searchTable.titleStatus': 'Status', + 'pages.searchTable.nameStatus.default': 'default', + 'pages.searchTable.nameStatus.running': 'running', + 'pages.searchTable.nameStatus.online': 'online', + 'pages.searchTable.nameStatus.abnormal': 'abnormal', + 'pages.searchTable.titleUpdatedAt': 'Last Scheduled at', + 'pages.searchTable.exception': 'Please enter the reason for the exception!', + 'pages.searchTable.titleOption': 'Option', + 'pages.searchTable.config': 'Configuration', + 'pages.searchTable.subscribeAlert': 'Subscribe to alerts', + 'pages.searchTable.title': 'Enquiry Form', + 'pages.searchTable.new': 'New', + 'pages.searchTable.chosen': 'chosen', + 'pages.searchTable.item': 'item', + 'pages.searchTable.totalServiceCalls': 'Total Number of Service Calls', + 'pages.searchTable.tenThousand': '0000', + 'pages.searchTable.batchDeletion': 'bacth deletion', + 'pages.searchTable.batchApproval': 'batch approval', +}; diff --git a/demo/src/locales/en-US/pwa.ts b/demo/src/locales/en-US/pwa.ts new file mode 100644 index 00000000..ed8d199e --- /dev/null +++ b/demo/src/locales/en-US/pwa.ts @@ -0,0 +1,6 @@ +export default { + 'app.pwa.offline': 'You are offline now', + 'app.pwa.serviceworker.updated': 'New content is available', + 'app.pwa.serviceworker.updated.hint': 'Please press the "Refresh" button to reload current page', + 'app.pwa.serviceworker.updated.ok': 'Refresh', +}; diff --git a/demo/src/locales/en-US/settingDrawer.ts b/demo/src/locales/en-US/settingDrawer.ts new file mode 100644 index 00000000..a644905e --- /dev/null +++ b/demo/src/locales/en-US/settingDrawer.ts @@ -0,0 +1,31 @@ +export default { + 'app.setting.pagestyle': 'Page style setting', + 'app.setting.pagestyle.dark': 'Dark style', + 'app.setting.pagestyle.light': 'Light style', + 'app.setting.content-width': 'Content Width', + 'app.setting.content-width.fixed': 'Fixed', + 'app.setting.content-width.fluid': 'Fluid', + 'app.setting.themecolor': 'Theme Color', + 'app.setting.themecolor.dust': 'Dust Red', + 'app.setting.themecolor.volcano': 'Volcano', + 'app.setting.themecolor.sunset': 'Sunset Orange', + 'app.setting.themecolor.cyan': 'Cyan', + 'app.setting.themecolor.green': 'Polar Green', + 'app.setting.themecolor.daybreak': 'Daybreak Blue (default)', + 'app.setting.themecolor.geekblue': 'Geek Glue', + 'app.setting.themecolor.purple': 'Golden Purple', + 'app.setting.navigationmode': 'Navigation Mode', + 'app.setting.sidemenu': 'Side Menu Layout', + 'app.setting.topmenu': 'Top Menu Layout', + 'app.setting.fixedheader': 'Fixed Header', + 'app.setting.fixedsidebar': 'Fixed Sidebar', + 'app.setting.fixedsidebar.hint': 'Works on Side Menu Layout', + 'app.setting.hideheader': 'Hidden Header when scrolling', + 'app.setting.hideheader.hint': 'Works when Hidden Header is enabled', + 'app.setting.othersettings': 'Other Settings', + 'app.setting.weakmode': 'Weak Mode', + 'app.setting.copy': 'Copy Setting', + 'app.setting.copyinfo': 'copy success,please replace defaultSettings in src/models/setting.js', + 'app.setting.production.hint': + 'Setting panel shows in development environment only, please manually modify', +}; diff --git a/demo/src/locales/en-US/settings.ts b/demo/src/locales/en-US/settings.ts new file mode 100644 index 00000000..822dd003 --- /dev/null +++ b/demo/src/locales/en-US/settings.ts @@ -0,0 +1,60 @@ +export default { + 'app.settings.menuMap.basic': 'Basic Settings', + 'app.settings.menuMap.security': 'Security Settings', + 'app.settings.menuMap.binding': 'Account Binding', + 'app.settings.menuMap.notification': 'New Message Notification', + 'app.settings.basic.avatar': 'Avatar', + 'app.settings.basic.change-avatar': 'Change avatar', + 'app.settings.basic.email': 'Email', + 'app.settings.basic.email-message': 'Please input your email!', + 'app.settings.basic.nickname': 'Nickname', + 'app.settings.basic.nickname-message': 'Please input your Nickname!', + 'app.settings.basic.profile': 'Personal profile', + 'app.settings.basic.profile-message': 'Please input your personal profile!', + 'app.settings.basic.profile-placeholder': 'Brief introduction to yourself', + 'app.settings.basic.country': 'Country/Region', + 'app.settings.basic.country-message': 'Please input your country!', + 'app.settings.basic.geographic': 'Province or city', + 'app.settings.basic.geographic-message': 'Please input your geographic info!', + 'app.settings.basic.address': 'Street Address', + 'app.settings.basic.address-message': 'Please input your address!', + 'app.settings.basic.phone': 'Phone Number', + 'app.settings.basic.phone-message': 'Please input your phone!', + 'app.settings.basic.update': 'Update Information', + 'app.settings.security.strong': 'Strong', + 'app.settings.security.medium': 'Medium', + 'app.settings.security.weak': 'Weak', + 'app.settings.security.password': 'Account Password', + 'app.settings.security.password-description': 'Current password strength', + 'app.settings.security.phone': 'Security Phone', + 'app.settings.security.phone-description': 'Bound phone', + 'app.settings.security.question': 'Security Question', + 'app.settings.security.question-description': + 'The security question is not set, and the security policy can effectively protect the account security', + 'app.settings.security.email': 'Backup Email', + 'app.settings.security.email-description': 'Bound Email', + 'app.settings.security.mfa': 'MFA Device', + 'app.settings.security.mfa-description': + 'Unbound MFA device, after binding, can be confirmed twice', + 'app.settings.security.modify': 'Modify', + 'app.settings.security.set': 'Set', + 'app.settings.security.bind': 'Bind', + 'app.settings.binding.taobao': 'Binding Taobao', + 'app.settings.binding.taobao-description': 'Currently unbound Taobao account', + 'app.settings.binding.alipay': 'Binding Alipay', + 'app.settings.binding.alipay-description': 'Currently unbound Alipay account', + 'app.settings.binding.dingding': 'Binding DingTalk', + 'app.settings.binding.dingding-description': 'Currently unbound DingTalk account', + 'app.settings.binding.bind': 'Bind', + 'app.settings.notification.password': 'Account Password', + 'app.settings.notification.password-description': + 'Messages from other users will be notified in the form of a station letter', + 'app.settings.notification.messages': 'System Messages', + 'app.settings.notification.messages-description': + 'System messages will be notified in the form of a station letter', + 'app.settings.notification.todo': 'To-do Notification', + 'app.settings.notification.todo-description': + 'The to-do list will be notified in the form of a letter from the station', + 'app.settings.open': 'Open', + 'app.settings.close': 'Close', +}; diff --git a/demo/src/locales/fa-IR.ts b/demo/src/locales/fa-IR.ts new file mode 100644 index 00000000..98445785 --- /dev/null +++ b/demo/src/locales/fa-IR.ts @@ -0,0 +1,24 @@ +import component from './fa-IR/component'; +import globalHeader from './fa-IR/globalHeader'; +import menu from './fa-IR/menu'; +import pwa from './fa-IR/pwa'; +import settingDrawer from './fa-IR/settingDrawer'; +import settings from './fa-IR/settings'; +import pages from './fa-IR/pages'; + +export default { + 'navBar.lang': 'زبان ها ', + 'layout.user.link.help': 'کمک', + 'layout.user.link.privacy': 'حریم خصوصی', + 'layout.user.link.terms': 'مقررات', + 'app.preview.down.block': 'این صفحه را در پروژه محلی خود بارگیری کنید', + 'app.welcome.link.fetch-blocks': 'دریافت تمام بلوک', + 'app.welcome.link.block-list': 'به سرعت صفحات استاندارد مبتنی بر توسعه "بلوک" را بسازید', + ...globalHeader, + ...menu, + ...settingDrawer, + ...settings, + ...pwa, + ...component, + ...pages, +}; diff --git a/demo/src/locales/fa-IR/component.ts b/demo/src/locales/fa-IR/component.ts new file mode 100644 index 00000000..91e7a056 --- /dev/null +++ b/demo/src/locales/fa-IR/component.ts @@ -0,0 +1,5 @@ +export default { + 'component.tagSelect.expand': 'باز', + 'component.tagSelect.collapse': 'بسته ', + 'component.tagSelect.all': 'همه', +}; diff --git a/demo/src/locales/fa-IR/globalHeader.ts b/demo/src/locales/fa-IR/globalHeader.ts new file mode 100644 index 00000000..1a92fbb8 --- /dev/null +++ b/demo/src/locales/fa-IR/globalHeader.ts @@ -0,0 +1,17 @@ +export default { + 'component.globalHeader.search': 'جستجو ', + 'component.globalHeader.search.example1': 'مثال 1 را جستجو کنید', + 'component.globalHeader.search.example2': 'مثال 2 را جستجو کنید', + 'component.globalHeader.search.example3': 'مثال 3 را جستجو کنید', + 'component.globalHeader.help': 'کمک', + 'component.globalHeader.notification': 'اعلان', + 'component.globalHeader.notification.empty': 'شما همه اعلان ها را مشاهده کرده اید.', + 'component.globalHeader.message': 'پیام', + 'component.globalHeader.message.empty': 'شما همه پیام ها را مشاهده کرده اید.', + 'component.globalHeader.event': 'رویداد', + 'component.globalHeader.event.empty': 'شما همه رویدادها را مشاهده کرده اید.', + 'component.noticeIcon.clear': 'پاک کردن', + 'component.noticeIcon.cleared': 'پاک شد', + 'component.noticeIcon.empty': 'بدون اعلان', + 'component.noticeIcon.view-more': 'نمایش بیشتر', +}; diff --git a/demo/src/locales/fa-IR/menu.ts b/demo/src/locales/fa-IR/menu.ts new file mode 100644 index 00000000..c67e0039 --- /dev/null +++ b/demo/src/locales/fa-IR/menu.ts @@ -0,0 +1,52 @@ +export default { + 'menu.welcome': 'خوش آمدید', + 'menu.more-blocks': 'بلوک های بیشتر', + 'menu.home': 'خانه', + 'menu.admin': 'مدیر', + 'menu.admin.sub-page': 'زیر صفحه', + 'menu.login': 'ورود', + 'menu.register': 'ثبت نام', + 'menu.register-result': 'ثبت نام نتیجه', + 'menu.dashboard': 'داشبورد', + 'menu.dashboard.analysis': 'تحلیل و بررسی', + 'menu.dashboard.monitor': 'نظارت', + 'menu.dashboard.workplace': 'محل کار', + 'menu.exception.403': '403', + 'menu.exception.404': '404', + 'menu.exception.500': '500', + 'menu.form': 'فرم', + 'menu.form.basic-form': 'فرم اساسی', + 'menu.form.step-form': 'فرم مرحله', + 'menu.form.step-form.info': 'فرم مرحله (نوشتن اطلاعات انتقال)', + 'menu.form.step-form.confirm': 'فرم مرحله (تأیید اطلاعات انتقال)', + 'menu.form.step-form.result': 'فرم مرحله (تمام شده)', + 'menu.form.advanced-form': 'فرم پیشرفته', + 'menu.list': 'لیست', + 'menu.list.table-list': 'جدول جستجو', + 'menu.list.basic-list': 'لیست اصلی', + 'menu.list.card-list': 'لیست کارت', + 'menu.list.search-list': 'لیست جستجو', + 'menu.list.search-list.articles': 'لیست جستجو (مقالات)', + 'menu.list.search-list.projects': 'لیست جستجو (پروژه ها)', + 'menu.list.search-list.applications': 'لیست جستجو (برنامه ها)', + 'menu.profile': 'مشخصات', + 'menu.profile.basic': 'مشخصات عمومی', + 'menu.profile.advanced': 'مشخصات پیشرفته', + 'menu.result': 'نتیجه', + 'menu.result.success': 'موفق', + 'menu.result.fail': 'ناموفق', + 'menu.exception': 'استثنا', + 'menu.exception.not-permission': '403', + 'menu.exception.not-find': '404', + 'menu.exception.server-error': '500', + 'menu.exception.trigger': 'راه اندازی', + 'menu.account': 'حساب', + 'menu.account.center': 'مرکز حساب', + 'menu.account.settings': 'تنظیمات حساب', + 'menu.account.trigger': 'خطای راه اندازی', + 'menu.account.logout': 'خروج', + 'menu.editor': 'ویرایشگر گرافیک', + 'menu.editor.flow': 'ویرایشگر جریان', + 'menu.editor.mind': 'ویرایشگر ذهن', + 'menu.editor.koni': 'ویرایشگر Koni', +}; diff --git a/demo/src/locales/fa-IR/pages.ts b/demo/src/locales/fa-IR/pages.ts new file mode 100644 index 00000000..d2782d3d --- /dev/null +++ b/demo/src/locales/fa-IR/pages.ts @@ -0,0 +1,67 @@ +export default { + 'pages.layouts.userLayout.title': 'طراحی مورچه تأثیرگذارترین مشخصات طراحی وب در منطقه Xihu است', + 'pages.login.accountLogin.tab': 'ورود به حساب کاربری', + 'pages.login.accountLogin.errorMessage': 'نام کاربری / رمزعبور نادرست (مدیر / ant.design)', + 'pages.login.username.placeholder': 'نام کاربری: مدیر یا کاربر', + 'pages.login.username.required': 'لطفا نام کاربری خود را وارد کنید!', + 'pages.login.password.placeholder': 'رمز عبور: ant.design', + 'pages.login.password.required': 'لطفاً رمز ورود خود را وارد کنید!', + 'pages.login.phoneLogin.tab': 'ورود به سیستم تلفن', + 'pages.login.phoneLogin.errorMessage': 'خطای کد تأیید', + 'pages.login.phoneNumber.placeholder': 'شماره تلفن', + 'pages.login.phoneNumber.required': 'لطفاً شماره تلفن خود را وارد کنید!', + 'pages.login.phoneNumber.invalid': 'شماره تلفن نامعتبر است!', + 'pages.login.captcha.placeholder': 'کد تایید', + 'pages.login.captcha.required': 'لطفا کد تأیید را وارد کنید!', + 'pages.login.phoneLogin.getVerificationCode': 'دریافت کد', + 'pages.getCaptchaSecondText': 'ثانیه', + 'pages.login.rememberMe': 'مرا به خاطر بسپار', + 'pages.login.forgotPassword': 'رمز عبور را فراموش کرده اید ?', + 'pages.login.submit': 'ارسال', + 'pages.login.loginWith': 'وارد شوید با :', + 'pages.login.registerAccount': 'ثبت نام', + 'pages.welcome.advancedComponent': 'مولفه پیشرفته', + 'pages.welcome.link': 'خوش آمدید', + 'pages.welcome.advancedLayout': 'چیدمان پیشرفته', + 'pages.welcome.alertMessage': 'اجزای سنگین تر سریعتر و قوی تر آزاد شده اند.', + 'pages.admin.subPage.title': 'این صفحه فقط توسط مدیر قابل مشاهده است', + 'pages.admin.subPage.alertMessage': + 'رابط کاربری Umi اکنون منتشر شده است ، برای شروع تجربه استفاده از npm run ui خوش آمدید.', + 'pages.searchTable.createForm.newRule': 'قانون جدید', + 'pages.searchTable.updateForm.ruleConfig': 'پیکربندی قانون', + 'pages.searchTable.updateForm.basicConfig': 'اطلاعات اولیه', + 'pages.searchTable.updateForm.ruleName.nameLabel': ' نام قانون', + 'pages.searchTable.updateForm.ruleName.nameRules': 'لطفاً نام قانون را وارد کنید!', + 'pages.searchTable.updateForm.ruleDesc.descLabel': 'شرح قانون', + 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': 'لطفاً حداقل پنج حرف وارد کنید', + 'pages.searchTable.updateForm.ruleDesc.descRules': + 'لطفاً حداقل یک قانون حاوی پنج کاراکتر شرح دهید!', + 'pages.searchTable.updateForm.ruleProps.title': 'پیکربندی خصوصیات', + 'pages.searchTable.updateForm.object': 'نظارت بر شی', + 'pages.searchTable.updateForm.ruleProps.templateLabel': 'الگوی قانون', + 'pages.searchTable.updateForm.ruleProps.typeLabel': 'نوع قانون', + 'pages.searchTable.updateForm.schedulingPeriod.title': 'تنظیم دوره زمان بندی', + 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': 'زمان شروع', + 'pages.searchTable.updateForm.schedulingPeriod.timeRules': 'لطفاً زمان شروع را انتخاب کنید!', + 'pages.searchTable.titleDesc': 'شرح', + 'pages.searchTable.ruleName': 'نام قانون لازم است', + 'pages.searchTable.titleCallNo': 'تعداد تماس های خدماتی', + 'pages.searchTable.titleStatus': 'وضعیت', + 'pages.searchTable.nameStatus.default': 'پیش فرض', + 'pages.searchTable.nameStatus.running': 'در حال دویدن', + 'pages.searchTable.nameStatus.online': 'برخط', + 'pages.searchTable.nameStatus.abnormal': 'غیرطبیعی', + 'pages.searchTable.titleUpdatedAt': 'آخرین برنامه ریزی در', + 'pages.searchTable.exception': 'لطفا دلیل استثنا را وارد کنید!', + 'pages.searchTable.titleOption': 'گزینه', + 'pages.searchTable.config': 'پیکربندی', + 'pages.searchTable.subscribeAlert': 'مشترک شدن در هشدارها', + 'pages.searchTable.title': 'فرم درخواست', + 'pages.searchTable.new': 'جدید', + 'pages.searchTable.chosen': 'انتخاب شده', + 'pages.searchTable.item': 'مورد', + 'pages.searchTable.totalServiceCalls': 'تعداد کل تماس های خدماتی', + 'pages.searchTable.tenThousand': '0000', + 'pages.searchTable.batchDeletion': 'حذف دسته ای', + 'pages.searchTable.batchApproval': 'تصویب دسته ای', +}; diff --git a/demo/src/locales/fa-IR/pwa.ts b/demo/src/locales/fa-IR/pwa.ts new file mode 100644 index 00000000..54831b4c --- /dev/null +++ b/demo/src/locales/fa-IR/pwa.ts @@ -0,0 +1,7 @@ +export default { + 'app.pwa.offline': 'شما اکنون آفلاین هستید', + 'app.pwa.serviceworker.updated': 'مطالب جدید در دسترس است', + 'app.pwa.serviceworker.updated.hint': + 'لطفاً برای بارگیری مجدد صفحه فعلی ، دکمه "تازه سازی" را فشار دهید', + 'app.pwa.serviceworker.updated.ok': 'تازه سازی', +}; diff --git a/demo/src/locales/fa-IR/settingDrawer.ts b/demo/src/locales/fa-IR/settingDrawer.ts new file mode 100644 index 00000000..cb223d54 --- /dev/null +++ b/demo/src/locales/fa-IR/settingDrawer.ts @@ -0,0 +1,32 @@ +export default { + 'app.setting.pagestyle': 'تنظیم نوع صفحه', + 'app.setting.pagestyle.dark': 'سبک تیره', + 'app.setting.pagestyle.light': 'سبک سبک', + 'app.setting.content-width': 'عرض محتوا', + 'app.setting.content-width.fixed': 'ثابت', + 'app.setting.content-width.fluid': 'شناور', + 'app.setting.themecolor': 'رنگ تم', + 'app.setting.themecolor.dust': 'گرد و غبار قرمز', + 'app.setting.themecolor.volcano': 'آتشفشان', + 'app.setting.themecolor.sunset': 'غروب نارنجی', + 'app.setting.themecolor.cyan': 'فیروزه ای', + 'app.setting.themecolor.green': 'سبز قطبی', + 'app.setting.themecolor.daybreak': 'آبی روشن(پیشفرض)', + 'app.setting.themecolor.geekblue': 'چسب گیک', + 'app.setting.themecolor.purple': 'بنفش طلایی', + 'app.setting.navigationmode': 'حالت پیمایش', + 'app.setting.sidemenu': 'طرح منوی کناری', + 'app.setting.topmenu': 'طرح منوی بالایی', + 'app.setting.fixedheader': 'سرصفحه ثابت', + 'app.setting.fixedsidebar': 'نوار کناری ثابت', + 'app.setting.fixedsidebar.hint': 'کار بر روی منوی کناری', + 'app.setting.hideheader': 'هدر پنهان هنگام پیمایش', + 'app.setting.hideheader.hint': 'وقتی Hidden Header فعال باشد کار می کند', + 'app.setting.othersettings': 'تنظیمات دیگر', + 'app.setting.weakmode': 'حالت ضعیف', + 'app.setting.copy': 'تنظیمات کپی', + 'app.setting.copyinfo': + 'موفقیت در کپی کردن , لطفا defaultSettings را در src / models / setting.js جایگزین کنید', + 'app.setting.production.hint': + 'صفحه تنظیم فقط در محیط توسعه نمایش داده می شود ، لطفاً دستی تغییر دهید', +}; diff --git a/demo/src/locales/fa-IR/settings.ts b/demo/src/locales/fa-IR/settings.ts new file mode 100644 index 00000000..040bc319 --- /dev/null +++ b/demo/src/locales/fa-IR/settings.ts @@ -0,0 +1,60 @@ +export default { + 'app.settings.menuMap.basic': 'تنظیمات پایه ', + 'app.settings.menuMap.security': 'تنظیمات امنیتی', + 'app.settings.menuMap.binding': 'صحافی حساب', + 'app.settings.menuMap.notification': 'اعلان پیام جدید', + 'app.settings.basic.avatar': 'آواتار', + 'app.settings.basic.change-avatar': 'آواتار را تغییر دهید', + 'app.settings.basic.email': 'ایمیل', + 'app.settings.basic.email-message': 'لطفا ایمیل خود را وارد کنید!', + 'app.settings.basic.nickname': 'نام مستعار', + 'app.settings.basic.nickname-message': 'لطفاً نام مستعار خود را وارد کنید!', + 'app.settings.basic.profile': 'پروفایل شخصی', + 'app.settings.basic.profile-message': 'لطفاً مشخصات شخصی خود را وارد کنید!', + 'app.settings.basic.profile-placeholder': 'معرفی مختصر خودتان', + 'app.settings.basic.country': 'کشور / منطقه', + 'app.settings.basic.country-message': 'لطفاً کشور خود را وارد کنید!', + 'app.settings.basic.geographic': 'استان یا شهر', + 'app.settings.basic.geographic-message': 'لطفاً اطلاعات جغرافیایی خود را وارد کنید!', + 'app.settings.basic.address': 'آدرس خیابان', + 'app.settings.basic.address-message': 'لطفا آدرس خود را وارد کنید!', + 'app.settings.basic.phone': 'شماره تلفن', + 'app.settings.basic.phone-message': 'لطفاً تلفن خود را وارد کنید!', + 'app.settings.basic.update': 'به روز رسانی اطلاعات', + 'app.settings.security.strong': 'قوی', + 'app.settings.security.medium': 'متوسط', + 'app.settings.security.weak': 'ضعیف', + 'app.settings.security.password': 'رمز عبور حساب کاربری', + 'app.settings.security.password-description': 'قدرت رمز عبور فعلی', + 'app.settings.security.phone': 'تلفن امنیتی', + 'app.settings.security.phone-description': 'تلفن مقید', + 'app.settings.security.question': 'سوال امنیتی', + 'app.settings.security.question-description': + 'سوال امنیتی تنظیم نشده است و سیاست امنیتی می تواند به طور موثر از امنیت حساب محافظت کند', + 'app.settings.security.email': 'ایمیل پشتیبان', + 'app.settings.security.email-description': 'ایمیل مقید', + 'app.settings.security.mfa': 'دستگاه MFA', + 'app.settings.security.mfa-description': + 'دستگاه MFA بسته نشده ، پس از اتصال ، می تواند دو بار تأیید شود', + 'app.settings.security.modify': 'تغییر', + 'app.settings.security.set': 'تنظیم', + 'app.settings.security.bind': 'بستن', + 'app.settings.binding.taobao': 'اتصال Taobao', + 'app.settings.binding.taobao-description': 'حساب Taobao در حال حاضر بسته نشده است', + 'app.settings.binding.alipay': 'اتصال Alipay', + 'app.settings.binding.alipay-description': 'حساب Alipay در حال حاضر بسته نشده است', + 'app.settings.binding.dingding': 'اتصال DingTalk', + 'app.settings.binding.dingding-description': 'حساب DingTalk در حال حاضر محدود نشده است', + 'app.settings.binding.bind': 'بستن', + 'app.settings.notification.password': 'رمز عبور حساب کاربری', + 'app.settings.notification.password-description': + 'پیام های سایر کاربران در قالب یک نامه ایستگاهی اعلام خواهد شد', + 'app.settings.notification.messages': 'پیام های سیستم', + 'app.settings.notification.messages-description': + 'پیام های سیستم به صورت نامه ایستگاه مطلع می شوند', + 'app.settings.notification.todo': 'اعلان کارها', + 'app.settings.notification.todo-description': + 'لیست کارها به صورت نامه ای از ایستگاه اطلاع داده می شود', + 'app.settings.open': 'باز کن', + 'app.settings.close': 'بستن', +}; diff --git a/demo/src/locales/id-ID.ts b/demo/src/locales/id-ID.ts new file mode 100644 index 00000000..79100d43 --- /dev/null +++ b/demo/src/locales/id-ID.ts @@ -0,0 +1,25 @@ +import component from './id-ID/component'; +import globalHeader from './id-ID/globalHeader'; +import menu from './id-ID/menu'; +import pwa from './id-ID/pwa'; +import settingDrawer from './id-ID/settingDrawer'; +import settings from './id-ID/settings'; +import pages from './id-ID/pages'; + +export default { + 'navbar.lang': 'Bahasa', + 'layout.user.link.help': 'Bantuan', + 'layout.user.link.privacy': 'Privasi', + 'layout.user.link.terms': 'Ketentuan', + 'app.preview.down.block': 'Unduh halaman ini dalam projek lokal anda', + 'app.welcome.link.fetch-blocks': 'Dapatkan semua blok', + 'app.welcome.link.block-list': + 'Buat standar dengan cepat, halaman-halaman berdasarkan pengembangan `block`', + ...globalHeader, + ...menu, + ...settingDrawer, + ...settings, + ...pwa, + ...component, + ...pages, +}; diff --git a/demo/src/locales/id-ID/component.ts b/demo/src/locales/id-ID/component.ts new file mode 100644 index 00000000..fe583aff --- /dev/null +++ b/demo/src/locales/id-ID/component.ts @@ -0,0 +1,5 @@ +export default { + 'component.tagSelect.expand': 'Perluas', + 'component.tagSelect.collapse': 'Lipat', + 'component.tagSelect.all': 'Semua', +}; diff --git a/demo/src/locales/id-ID/globalHeader.ts b/demo/src/locales/id-ID/globalHeader.ts new file mode 100644 index 00000000..e6283ea8 --- /dev/null +++ b/demo/src/locales/id-ID/globalHeader.ts @@ -0,0 +1,17 @@ +export default { + 'component.globalHeader.search': 'Pencarian', + 'component.globalHeader.search.example1': 'Contoh 1 Pencarian', + 'component.globalHeader.search.example2': 'Contoh 2 Pencarian', + 'component.globalHeader.search.example3': 'Contoh 3 Pencarian', + 'component.globalHeader.help': 'Bantuan', + 'component.globalHeader.notification': 'Notifikasi', + 'component.globalHeader.notification.empty': 'Anda telah membaca semua notifikasi', + 'component.globalHeader.message': 'Pesan', + 'component.globalHeader.message.empty': 'Anda telah membaca semua pesan.', + 'component.globalHeader.event': 'Acara', + 'component.globalHeader.event.empty': 'Anda telah melihat semua acara.', + 'component.noticeIcon.clear': 'Kosongkan', + 'component.noticeIcon.cleared': 'Berhasil dikosongkan', + 'component.noticeIcon.empty': 'Tidak ada pemberitahuan', + 'component.noticeIcon.view-more': 'Melihat lebih', +}; diff --git a/demo/src/locales/id-ID/menu.ts b/demo/src/locales/id-ID/menu.ts new file mode 100644 index 00000000..254ff443 --- /dev/null +++ b/demo/src/locales/id-ID/menu.ts @@ -0,0 +1,52 @@ +export default { + 'menu.welcome': 'Selamat Datang', + 'menu.more-blocks': 'Blocks Lainnya', + 'menu.home': 'Halaman Awal', + 'menu.admin': 'Admin', + 'menu.admin.sub-page': 'Sub-Halaman', + 'menu.login': 'Masuk', + 'menu.register': 'Pendaftaran', + 'menu.register-result': 'Hasil Pendaftaran', + 'menu.dashboard': 'Dasbor', + 'menu.dashboard.analysis': 'Analisis', + 'menu.dashboard.monitor': 'Monitor', + 'menu.dashboard.workplace': 'Workplace', + 'menu.exception.403': '403', + 'menu.exception.404': '404', + 'menu.exception.500': '500', + 'menu.form': 'Form', + 'menu.form.basic-form': 'Form Dasar', + 'menu.form.step-form': 'Form Bertahap', + 'menu.form.step-form.info': 'Form Bertahap(menulis informasi yang dibagikan)', + 'menu.form.step-form.confirm': 'Form Bertahap(konfirmasi informasi yang dibagikan)', + 'menu.form.step-form.result': 'Form Bertahap(selesai)', + 'menu.form.advanced-form': 'Form Lanjutan', + 'menu.list': 'Daftar', + 'menu.list.table-list': 'Tabel Pencarian', + 'menu.list.basic-list': 'Daftar Dasar', + 'menu.list.card-list': 'Daftar Kartu', + 'menu.list.search-list': 'Daftar Pencarian', + 'menu.list.search-list.articles': 'Daftar Pencarian(artikel)', + 'menu.list.search-list.projects': 'Daftar Pencarian(projek)', + 'menu.list.search-list.applications': 'Daftar Pencarian(aplikasi)', + 'menu.profile': 'Profil', + 'menu.profile.basic': 'Profil Dasar', + 'menu.profile.advanced': 'Profile Lanjutan', + 'menu.result': 'Hasil', + 'menu.result.success': 'Sukses', + 'menu.result.fail': 'Gagal', + 'menu.exception': 'Pengecualian', + 'menu.exception.not-permission': '403', + 'menu.exception.not-find': '404', + 'menu.exception.server-error': '500', + 'menu.exception.trigger': 'Jalankan', + 'menu.account': 'Akun', + 'menu.account.center': 'Detail Akun', + 'menu.account.settings': 'Pengaturan Akun', + 'menu.account.trigger': 'Mengaktivasi Error', + 'menu.account.logout': 'Keluar', + 'menu.editor': 'Penyusun Grafis', + 'menu.editor.flow': 'Penyusun Alur', + 'menu.editor.mind': 'Penyusun Mind', + 'menu.editor.koni': 'Penyusun Koni', +}; diff --git a/demo/src/locales/id-ID/pages.ts b/demo/src/locales/id-ID/pages.ts new file mode 100644 index 00000000..ebae874f --- /dev/null +++ b/demo/src/locales/id-ID/pages.ts @@ -0,0 +1,70 @@ +export default { + 'pages.layouts.userLayout.title': + 'Ant Design adalah spesifikasi desain Web yang paling berpengaruh di Kabupaten Xihu', + 'pages.login.accountLogin.tab': 'Login dengan akun', + 'pages.login.accountLogin.errorMessage': 'Nama pengguna dan kata sandi salah(admin/ant.design)', + 'pages.login.username.placeholder': 'nama pengguna: admin atau user', + 'pages.login.username.required': 'Nama pengguna harus diisi!', + 'pages.login.password.placeholder': 'kata sandi: ant.design', + 'pages.login.password.required': 'Kata sandi harus diisi!', + 'pages.login.phoneLogin.tab': 'Login dengan ponsel', + 'pages.login.phoneLogin.errorMessage': 'Kesalahan kode verifikasi', + 'pages.login.phoneNumber.placeholder': 'masukkan nomor telepon', + 'pages.login.phoneNumber.required': 'Nomor ponsel harus diisi!', + 'pages.login.phoneNumber.invalid': 'Nomor ponsel tidak valid!', + 'pages.login.captcha.placeholder': 'kode verifikasi', + 'pages.login.captcha.required': 'Kode verifikasi diperlukan!', + 'pages.login.phoneLogin.getVerificationCode': 'Dapatkan kode', + 'pages.getCaptchaSecondText': 'detik tersisa', + 'pages.login.rememberMe': 'Ingat saya', + 'pages.login.forgotPassword': 'Lupa Kata Sandi?', + 'pages.login.submit': 'Masuk', + 'pages.login.loginWith': 'Masuk dengan :', + 'pages.login.registerAccount': 'Daftar Akun', + 'pages.welcome.advancedComponent': 'Formulir Lanjutan', + 'pages.welcome.link': 'Selamat datang', + 'pages.welcome.advancedLayout': 'Tata letak Lanjutan', + 'pages.welcome.alertMessage': + 'Komponen heavy-duty yang lebih cepat dan lebih kuat telah dirilis.', + 'pages.admin.subPage.title': 'Halaman ini hanya dapat dilihat oleh admin', + 'pages.admin.subPage.alertMessage': + 'umi ui telah dirilis, silahkan gunakan npm run ui untuk memulai pengalaman.', + 'pages.searchTable.createForm.newRule': 'Aturan baru', + 'pages.searchTable.updateForm.ruleConfig': 'Konfigurasi aturan', + 'pages.searchTable.updateForm.basicConfig': 'Informasi dasar', + 'pages.searchTable.updateForm.ruleName.nameLabel': 'Nama aturan', + 'pages.searchTable.updateForm.ruleName.nameRules': 'Harap masukkan nama aturan!', + 'pages.searchTable.updateForm.ruleDesc.descLabel': 'Deskripsi aturan', + 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': + 'Harap masukkan setidaknya lima karakter', + 'pages.searchTable.updateForm.ruleDesc.descRules': + 'Harap masukkan deskripsi aturan setidaknya lima karakter!', + 'pages.searchTable.updateForm.ruleProps.title': 'Properti aturan', + 'pages.searchTable.updateForm.object': 'Objek pemantauan', + 'pages.searchTable.updateForm.ruleProps.templateLabel': 'Template aturan', + 'pages.searchTable.updateForm.ruleProps.typeLabel': 'Jenis aturan', + 'pages.searchTable.updateForm.schedulingPeriod.title': 'Periode penjadwalan', + 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': 'Waktu mulai', + 'pages.searchTable.updateForm.schedulingPeriod.timeRules': 'Pilih waktu mulai!', + 'pages.searchTable.titleDesc': 'deskripsi', + 'pages.searchTable.ruleName': 'Nama aturan wajib diisi', + 'pages.searchTable.titleCallNo': 'Jumlah panggilan', + 'pages.searchTable.titleStatus': 'Status', + 'pages.searchTable.nameStatus.default': 'default', + 'pages.searchTable.nameStatus.running': 'menyala', + 'pages.searchTable.nameStatus.online': 'online', + 'pages.searchTable.nameStatus.abnormal': 'abnormal', + 'pages.searchTable.titleUpdatedAt': 'Waktu terjadwal', + 'pages.searchTable.exception': 'Harap masukkan alasan pengecualian!', + 'pages.searchTable.titleOption': 'Pengoperasian', + 'pages.searchTable.config': 'Konfigurasi', + 'pages.searchTable.subscribeAlert': 'Berlangganan notifikasi', + 'pages.searchTable.title': 'Formulir pertanyaan', + 'pages.searchTable.new': 'Baru', + 'pages.searchTable.chosen': 'Terpilih', + 'pages.searchTable.item': 'item', + 'pages.searchTable.totalServiceCalls': 'Jumlah total panggilan layanan', + 'pages.searchTable.tenThousand': '0000', + 'pages.searchTable.batchDeletion': 'Penghapusan batch', + 'pages.searchTable.batchApproval': 'Persetujuan batch', +}; diff --git a/demo/src/locales/id-ID/pwa.ts b/demo/src/locales/id-ID/pwa.ts new file mode 100644 index 00000000..b2cb8a12 --- /dev/null +++ b/demo/src/locales/id-ID/pwa.ts @@ -0,0 +1,7 @@ +export default { + 'app.pwa.offline': 'Koneksi anda terputus', + 'app.pwa.serviceworker.updated': 'Konten baru sudah tersedia', + 'app.pwa.serviceworker.updated.hint': + 'Silahkan klik tombol "Refresh" untuk memuat ulang halaman ini', + 'app.pwa.serviceworker.updated.ok': 'Memuat ulang', +}; diff --git a/demo/src/locales/id-ID/settingDrawer.ts b/demo/src/locales/id-ID/settingDrawer.ts new file mode 100644 index 00000000..f2d3e407 --- /dev/null +++ b/demo/src/locales/id-ID/settingDrawer.ts @@ -0,0 +1,32 @@ +export default { + 'app.setting.pagestyle': 'Pengaturan style Halaman', + 'app.setting.pagestyle.dark': 'Style Gelap', + 'app.setting.pagestyle.light': 'Style Cerah', + 'app.setting.content-width': 'Lebar Konten', + 'app.setting.content-width.fixed': 'Tetap', + 'app.setting.content-width.fluid': 'Fluid', + 'app.setting.themecolor': 'Theme Color', + 'app.setting.themecolor.dust': 'Dust Red', + 'app.setting.themecolor.volcano': 'Volcano', + 'app.setting.themecolor.sunset': 'Sunset Orange', + 'app.setting.themecolor.cyan': 'Cyan', + 'app.setting.themecolor.green': 'Polar Green', + 'app.setting.themecolor.daybreak': 'Daybreak Blue (bawaan)', + 'app.setting.themecolor.geekblue': 'Geek Glue', + 'app.setting.themecolor.purple': 'Golden Purple', + 'app.setting.navigationmode': 'Mode Navigasi', + 'app.setting.sidemenu': 'Susunan Menu Samping', + 'app.setting.topmenu': 'Susunan Menu Atas', + 'app.setting.fixedheader': 'Header Tetap', + 'app.setting.fixedsidebar': 'Sidebar Tetap', + 'app.setting.fixedsidebar.hint': 'Berjalan pada Susunan Menu Samping', + 'app.setting.hideheader': 'Sembunyikan Header ketika gulir ke bawah', + 'app.setting.hideheader.hint': 'Bekerja ketika Header tersembunyi dimunculkan', + 'app.setting.othersettings': 'Pengaturan Lainnya', + 'app.setting.weakmode': 'Mode Lemah', + 'app.setting.copy': 'Salin Pengaturan', + 'app.setting.copyinfo': + 'Berhasil disalin,tolong ubah defaultSettings pada src/models/setting.js', + 'app.setting.production.hint': + 'Panel pengaturan hanya muncul pada lingkungan pengembangan, silahkan modifikasi secara menual', +}; diff --git a/demo/src/locales/id-ID/settings.ts b/demo/src/locales/id-ID/settings.ts new file mode 100644 index 00000000..04b7d120 --- /dev/null +++ b/demo/src/locales/id-ID/settings.ts @@ -0,0 +1,60 @@ +export default { + 'app.settings.menuMap.basic': 'Pengaturan Dasar', + 'app.settings.menuMap.security': 'Pengaturan Keamanan', + 'app.settings.menuMap.binding': 'Pengikatan Akun', + 'app.settings.menuMap.notification': 'Notifikasi Pesan Baru', + 'app.settings.basic.avatar': 'Avatar', + 'app.settings.basic.change-avatar': 'Ubah avatar', + 'app.settings.basic.email': 'Email', + 'app.settings.basic.email-message': 'Tolong masukkan email!', + 'app.settings.basic.nickname': 'Nickname', + 'app.settings.basic.nickname-message': 'Tolong masukkan Nickname!', + 'app.settings.basic.profile': 'Profil Personal', + 'app.settings.basic.profile-message': 'Tolong masukkan profil personal!', + 'app.settings.basic.profile-placeholder': 'Perkenalan Singkat tentang Diri Anda', + 'app.settings.basic.country': 'Negara/Wilayah', + 'app.settings.basic.country-message': 'Tolong masukkan negara anda!', + 'app.settings.basic.geographic': 'Provinsi atau kota', + 'app.settings.basic.geographic-message': 'Tolong masukkan info geografis anda!', + 'app.settings.basic.address': 'Alamat Jalan', + 'app.settings.basic.address-message': 'Tolong masukkan Alamat Jalan anda!', + 'app.settings.basic.phone': 'Nomor Ponsel', + 'app.settings.basic.phone-message': 'Tolong masukkan Nomor Ponsel anda!', + 'app.settings.basic.update': 'Perbarui Informasi', + 'app.settings.security.strong': 'Kuat', + 'app.settings.security.medium': 'Sedang', + 'app.settings.security.weak': 'Lemah', + 'app.settings.security.password': 'Kata Sandi Akun', + 'app.settings.security.password-description': 'Kekuatan Kata Sandi saat ini', + 'app.settings.security.phone': 'Keamanan Ponsel', + 'app.settings.security.phone-description': 'Mengikat Ponsel', + 'app.settings.security.question': 'Pertanyaan Keamanan', + 'app.settings.security.question-description': + 'Pertanyaan Keamanan belum diatur, dan kebijakan keamanan dapat melindungi akun secara efektif', + 'app.settings.security.email': 'Email Cadangan', + 'app.settings.security.email-description': 'Mengikat Email', + 'app.settings.security.mfa': 'Perangka MFA', + 'app.settings.security.mfa-description': + 'Tidak mengikat Perangkat MFA, setelah diikat, dapat dikonfirmasi dua kali', + 'app.settings.security.modify': 'Modifikasi', + 'app.settings.security.set': 'Setel', + 'app.settings.security.bind': 'Ikat', + 'app.settings.binding.taobao': 'Mengikat Taobao', + 'app.settings.binding.taobao-description': 'Tidak mengikat akun Taobao saat ini', + 'app.settings.binding.alipay': 'Mengikat Alipay', + 'app.settings.binding.alipay-description': 'Tidak mengikat akun Alipay saat ini', + 'app.settings.binding.dingding': 'Mengikat DingTalk', + 'app.settings.binding.dingding-description': 'Tidak mengikat akun DingTalk', + 'app.settings.binding.bind': 'Ikat', + 'app.settings.notification.password': 'Kata Sandi Akun', + 'app.settings.notification.password-description': + 'Pesan dari pengguna lain akan diberitahu dalam bentuk surat', + 'app.settings.notification.messages': 'Pesan Sistem', + 'app.settings.notification.messages-description': + 'Pesan sistem akan diberitahu dalam bentuk surat', + 'app.settings.notification.todo': 'Notifikasi daftar To-do', + 'app.settings.notification.todo-description': + 'Daftar to-do akan diberitahukan dalam bentuk surat dari stasiun', + 'app.settings.open': 'Buka', + 'app.settings.close': 'Tutup', +}; diff --git a/demo/src/locales/ja-JP.ts b/demo/src/locales/ja-JP.ts new file mode 100644 index 00000000..ed51f694 --- /dev/null +++ b/demo/src/locales/ja-JP.ts @@ -0,0 +1,24 @@ +import globalHeader from './ja-JP/globalHeader'; +import menu from './ja-JP/menu'; +import settingDrawer from './ja-JP/settingDrawer'; +import settings from './ja-JP/settings'; +import pwa from './ja-JP/pwa'; +import component from './ja-JP/component'; +import pages from './ja-JP/pages'; + +export default { + 'navBar.lang': '言語', + 'layout.user.link.help': 'ヘルプ', + 'layout.user.link.privacy': 'プライバシー', + 'layout.user.link.terms': '利用規約', + 'app.preview.down.block': 'このページをローカルプロジェクトにダウンロードしてください', + 'app.welcome.link.fetch-blocks': '', + 'app.welcome.link.block-list': '', + ...globalHeader, + ...menu, + ...settingDrawer, + ...settings, + ...pwa, + ...component, + ...pages, +}; diff --git a/demo/src/locales/ja-JP/component.ts b/demo/src/locales/ja-JP/component.ts new file mode 100644 index 00000000..40f238c0 --- /dev/null +++ b/demo/src/locales/ja-JP/component.ts @@ -0,0 +1,5 @@ +export default { + 'component.tagSelect.expand': '展開', + 'component.tagSelect.collapse': '折りたたむ', + 'component.tagSelect.all': 'すべて', +}; diff --git a/demo/src/locales/ja-JP/globalHeader.ts b/demo/src/locales/ja-JP/globalHeader.ts new file mode 100644 index 00000000..16429387 --- /dev/null +++ b/demo/src/locales/ja-JP/globalHeader.ts @@ -0,0 +1,17 @@ +export default { + 'component.globalHeader.search': '検索', + 'component.globalHeader.search.example1': '検索例1', + 'component.globalHeader.search.example2': '検索例2', + 'component.globalHeader.search.example3': '検索例3', + 'component.globalHeader.help': 'ヘルプ', + 'component.globalHeader.notification': '通知', + 'component.globalHeader.notification.empty': 'すべての通知を表示しました。', + 'component.globalHeader.message': 'メッセージ', + 'component.globalHeader.message.empty': 'すべてのメッセージを表示しました。', + 'component.globalHeader.event': 'イベント', + 'component.globalHeader.event.empty': 'すべてのイベントを表示しました。', + 'component.noticeIcon.clear': 'クリア', + 'component.noticeIcon.cleared': 'クリア済み', + 'component.noticeIcon.empty': '通知なし', + 'component.noticeIcon.view-more': 'もっと見る', +}; diff --git a/demo/src/locales/ja-JP/menu.ts b/demo/src/locales/ja-JP/menu.ts new file mode 100644 index 00000000..af6ed0ea --- /dev/null +++ b/demo/src/locales/ja-JP/menu.ts @@ -0,0 +1,52 @@ +export default { + 'menu.welcome': 'ようこそ', + 'menu.more-blocks': 'その他のブロック', + 'menu.home': 'ホーム', + 'menu.admin': '管理者', + 'menu.admin.sub-page': 'サブページ', + 'menu.login': 'ログイン', + 'menu.register': '登録', + 'menu.register-result': '登録結果', + 'menu.dashboard': 'ダッシュボード', + 'menu.dashboard.analysis': '分析', + 'menu.dashboard.monitor': 'モニター', + 'menu.dashboard.workplace': '職場', + 'menu.exception.403': '403', + 'menu.exception.404': '404', + 'menu.exception.500': '500', + 'menu.form': 'フォーム', + 'menu.form.basic-form': '基本フォーム', + 'menu.form.step-form': 'ステップフォーム', + 'menu.form.step-form.info': 'ステップフォーム(転送情報の書き込み)', + 'menu.form.step-form.confirm': 'ステップフォーム(転送情報の確認)', + 'menu.form.step-form.result': 'ステップフォーム(完成)', + 'menu.form.advanced-form': '高度なフォーム', + 'menu.list': 'リスト', + 'menu.list.table-list': '検索テーブル', + 'menu.list.basic-list': '基本リスト', + 'menu.list.card-list': 'カードリスト', + 'menu.list.search-list': '検索リスト', + 'menu.list.search-list.articles': '検索リスト(記事)', + 'menu.list.search-list.projects': '検索リスト(プロジェクト)', + 'menu.list.search-list.applications': '検索リスト(アプリ)', + 'menu.profile': 'プロフィール', + 'menu.profile.basic': '基本プロフィール', + 'menu.profile.advanced': '高度なプロフィール', + 'menu.result': '結果', + 'menu.result.success': '成功', + 'menu.result.fail': '失敗', + 'menu.exception': '例外', + 'menu.exception.not-permission': '403', + 'menu.exception.not-find': '404', + 'menu.exception.server-error': '500', + 'menu.exception.trigger': 'トリガー', + 'menu.account': 'アカウント', + 'menu.account.center': 'アカウントセンター', + 'menu.account.settings': 'アカウント設定', + 'menu.account.trigger': 'トリガーエラー', + 'menu.account.logout': 'ログアウト', + 'menu.editor': 'グラフィックエディタ', + 'menu.editor.flow': 'フローエディタ', + 'menu.editor.mind': 'マインドエディター', + 'menu.editor.koni': 'コニエディター', +}; diff --git a/demo/src/locales/ja-JP/pages.ts b/demo/src/locales/ja-JP/pages.ts new file mode 100644 index 00000000..f438dbe6 --- /dev/null +++ b/demo/src/locales/ja-JP/pages.ts @@ -0,0 +1,67 @@ +export default { + 'pages.layouts.userLayout.title': 'Ant Designは、西湖区で最も影響力のあるWebデザイン仕様です。', + 'pages.login.accountLogin.tab': 'アカウントログイン', + 'pages.login.accountLogin.errorMessage': + 'ユーザー名/パスワードが正しくありません(admin/ant.design)', + 'pages.login.username.placeholder': 'ユーザー名:adminまたはuser', + 'pages.login.username.required': 'ユーザー名を入力してください!', + 'pages.login.password.placeholder': 'パスワード:ant.design', + 'pages.login.password.required': 'パスワードを入力してください!', + 'pages.login.phoneLogin.tab': '電話ログイン', + 'pages.login.phoneLogin.errorMessage': '検証コードエラー', + 'pages.login.phoneNumber.placeholder': '電話番号', + 'pages.login.phoneNumber.required': '電話番号を入力してください!', + 'pages.login.phoneNumber.invalid': '電話番号が無効です!', + 'pages.login.captcha.placeholder': '確認コード', + 'pages.login.captcha.required': '確認コードを入力してください!', + 'pages.login.phoneLogin.getVerificationCode': '確認コードを取得', + 'pages.getCaptchaSecondText': '秒', + 'pages.login.rememberMe': 'Remember me', + 'pages.login.forgotPassword': 'パスワードをお忘れですか?', + 'pages.login.submit': 'ログイン', + 'pages.login.loginWith': 'その他のログイン方法:', + 'pages.login.registerAccount': 'アカウント登録', + 'pages.welcome.advancedComponent': '高度なコンポーネント', + 'pages.welcome.link': 'ようこそ', + 'pages.welcome.advancedLayout': '高度なレイアウト', + 'pages.welcome.alertMessage': 'より高速で強力な頑丈なコンポーネントがリリースされました。', + 'pages.admin.subPage.title': 'このページは管理者のみが表示できます', + 'pages.admin.subPage.alertMessage': + 'Umi uiがリリースされました。npm run uiを使用して体験してください。', + 'pages.searchTable.createForm.newRule': '新しいルール', + 'pages.searchTable.updateForm.ruleConfig': 'ルール構成', + 'pages.searchTable.updateForm.basicConfig': '基本情報', + 'pages.searchTable.updateForm.ruleName.nameLabel': 'ルール名', + 'pages.searchTable.updateForm.ruleName.nameRules': 'ルール名を入力してください!', + 'pages.searchTable.updateForm.ruleDesc.descLabel': 'ルールの説明', + 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': '5文字以上入力してください', + 'pages.searchTable.updateForm.ruleDesc.descRules': '5文字以上のルールの説明を入力してください!', + 'pages.searchTable.updateForm.ruleProps.title': 'プロパティの構成', + 'pages.searchTable.updateForm.object': '監視対象', + 'pages.searchTable.updateForm.ruleProps.templateLabel': 'ルールテンプレート', + 'pages.searchTable.updateForm.ruleProps.typeLabel': 'ルールタイプ', + 'pages.searchTable.updateForm.schedulingPeriod.title': 'スケジュール期間の設定', + 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': '開始時間', + 'pages.searchTable.updateForm.schedulingPeriod.timeRules': '開始時間を選択してください!', + 'pages.searchTable.titleDesc': '説明', + 'pages.searchTable.ruleName': 'ルール名が必要です', + 'pages.searchTable.titleCallNo': 'サービスコール数', + 'pages.searchTable.titleStatus': 'ステータス', + 'pages.searchTable.nameStatus.default': 'デフォルト', + 'pages.searchTable.nameStatus.running': '起動中', + 'pages.searchTable.nameStatus.online': 'オンライン', + 'pages.searchTable.nameStatus.abnormal': '異常', + 'pages.searchTable.titleUpdatedAt': '最終スケジュール', + 'pages.searchTable.exception': '例外の理由を入力してください!', + 'pages.searchTable.titleOption': 'オプション', + 'pages.searchTable.config': '構成', + 'pages.searchTable.subscribeAlert': 'アラートを購読する', + 'pages.searchTable.title': 'お問い合わせフォーム', + 'pages.searchTable.new': '新しい', + 'pages.searchTable.chosen': '選んだ項目', + 'pages.searchTable.item': '項目', + 'pages.searchTable.totalServiceCalls': 'サービスコールの総数', + 'pages.searchTable.tenThousand': '万', + 'pages.searchTable.batchDeletion': 'バッチ削除', + 'pages.searchTable.batchApproval': 'バッチ承認', +}; diff --git a/demo/src/locales/ja-JP/pwa.ts b/demo/src/locales/ja-JP/pwa.ts new file mode 100644 index 00000000..ace23aef --- /dev/null +++ b/demo/src/locales/ja-JP/pwa.ts @@ -0,0 +1,7 @@ +export default { + 'app.pwa.offline': 'あなたは今オフラインです', + 'app.pwa.serviceworker.updated': '新しいコンテンツが利用可能です', + 'app.pwa.serviceworker.updated.hint': + '現在のページをリロードするには、「更新」ボタンを押してください', + 'app.pwa.serviceworker.updated.ok': 'リフレッシュ', +}; diff --git a/demo/src/locales/ja-JP/settingDrawer.ts b/demo/src/locales/ja-JP/settingDrawer.ts new file mode 100644 index 00000000..67a22df1 --- /dev/null +++ b/demo/src/locales/ja-JP/settingDrawer.ts @@ -0,0 +1,31 @@ +export default { + 'app.setting.pagestyle': 'ページスタイル設定', + 'app.setting.pagestyle.dark': 'ダークスタイル', + 'app.setting.pagestyle.light': 'ライトスタイル', + 'app.setting.content-width': 'コンテンツの幅', + 'app.setting.content-width.fixed': '固定', + 'app.setting.content-width.fluid': '流体', + 'app.setting.themecolor': 'テーマカラー', + 'app.setting.themecolor.dust': 'ダストレッド', + 'app.setting.themecolor.volcano': 'ボルケ-ノ', + 'app.setting.themecolor.sunset': 'サンセットオレンジ', + 'app.setting.themecolor.cyan': 'シアン', + 'app.setting.themecolor.green': 'ポーラーグリーン', + 'app.setting.themecolor.daybreak': '夜明けの青(デフォルト)', + 'app.setting.themecolor.geekblue': 'ギーク ブルー', + 'app.setting.themecolor.purple': 'ゴールデンパープル', + 'app.setting.navigationmode': 'ナビゲーションモード', + 'app.setting.sidemenu': 'サイドメニューのレイアウト', + 'app.setting.topmenu': 'トップメニューのレイアウト', + 'app.setting.fixedheader': '固定ヘッダー', + 'app.setting.fixedsidebar': '固定サイドバー', + 'app.setting.fixedsidebar.hint': 'サイドメニューのレイアウトで動作します', + 'app.setting.hideheader': 'スクロール時の非表示ヘッダー', + 'app.setting.hideheader.hint': '非表示ヘッダーが有効になっている場合に機能します', + 'app.setting.othersettings': 'その他の設定', + 'app.setting.weakmode': 'ウィークモード', + 'app.setting.copy': 'コピー設定', + 'app.setting.copyinfo': + 'コピーが成功しました。src/models/setting.jsのdefaultSettingsを置き換えてください', + 'app.setting.production.hint': '設定パネルは開発環境でのみ表示されます。手動で変更してください', +}; diff --git a/demo/src/locales/ja-JP/settings.ts b/demo/src/locales/ja-JP/settings.ts new file mode 100644 index 00000000..de52481c --- /dev/null +++ b/demo/src/locales/ja-JP/settings.ts @@ -0,0 +1,59 @@ +export default { + 'app.settings.menuMap.basic': '基本設定', + 'app.settings.menuMap.security': 'セキュリティ設定', + 'app.settings.menuMap.binding': 'アカウントのバインド', + 'app.settings.menuMap.notification': '新しいメッセージの通知', + 'app.settings.basic.avatar': 'アバター', + 'app.settings.basic.change-avatar': 'アバターを変更する', + 'app.settings.basic.email': 'メール', + 'app.settings.basic.email-message': 'メールアドレスを入力してください!', + 'app.settings.basic.nickname': 'ニックネーム', + 'app.settings.basic.nickname-message': 'ニックネームを入力してください!', + 'app.settings.basic.profile': '個人プロフィール', + 'app.settings.basic.profile-message': '個人プロフィールを入力してください!', + 'app.settings.basic.profile-placeholder': '自己紹介', + 'app.settings.basic.country': '国/地域', + 'app.settings.basic.country-message': 'あなたの国を入力してください!', + 'app.settings.basic.geographic': '州または市', + 'app.settings.basic.geographic-message': '地理情報を入力してください!', + 'app.settings.basic.address': '住所', + 'app.settings.basic.address-message': '住所を入力してください!', + 'app.settings.basic.phone': '電話番号', + 'app.settings.basic.phone-message': '電話番号を入力してください!', + 'app.settings.basic.update': '更新情報', + 'app.settings.security.strong': '強い', + 'app.settings.security.medium': 'ミディアム', + 'app.settings.security.weak': '弱い', + 'app.settings.security.password': 'アカウントパスワード', + 'app.settings.security.password-description': '現在のパスワードの強度', + 'app.settings.security.phone': 'セキュリティ電話番号', + 'app.settings.security.phone-description': 'バインドされた電話番号', + 'app.settings.security.question': '秘密の質問', + 'app.settings.security.question-description': + 'セキュリティの質問が設定されてません。セキュリティポリシーはアカウントのセキュリティを効果的に保護できます', + 'app.settings.security.email': 'バックアップメール', + 'app.settings.security.email-description': 'バインドされたメール', + 'app.settings.security.mfa': '多要素認証デバイス', + 'app.settings.security.mfa-description': + 'バインドされていない多要素認証デバイスは、バインド後、2回確認できます', + 'app.settings.security.modify': '変更する', + 'app.settings.security.set': 'セットする', + 'app.settings.security.bind': 'バインド', + 'app.settings.binding.taobao': 'タオバオをバインドする', + 'app.settings.binding.taobao-description': '現在バインドされていないタオバオアカウント', + 'app.settings.binding.alipay': 'アリペイをバインドする', + 'app.settings.binding.alipay-description': '現在バインドされていないアリペイアカウント', + 'app.settings.binding.dingding': 'ディントークをバインドする', + 'app.settings.binding.dingding-description': '現在バインドされていないディントークアカウント', + 'app.settings.binding.bind': 'バインド', + 'app.settings.notification.password': 'アカウントパスワード', + 'app.settings.notification.password-description': + '他のユーザーからのメッセージは、ステーションレターの形式で通知されます', + 'app.settings.notification.messages': 'システムメッセージ', + 'app.settings.notification.messages-description': + 'システムメッセージは、ステーションレターの形式で通知されます', + 'app.settings.notification.todo': 'To Do(用事) 通知', + 'app.settings.notification.todo-description': 'To Doタスクは、内部レターの形式で通知されます', + 'app.settings.open': '開く', + 'app.settings.close': '閉じる', +}; diff --git a/demo/src/locales/pt-BR.ts b/demo/src/locales/pt-BR.ts new file mode 100644 index 00000000..628dd9c5 --- /dev/null +++ b/demo/src/locales/pt-BR.ts @@ -0,0 +1,22 @@ +import component from './pt-BR/component'; +import globalHeader from './pt-BR/globalHeader'; +import menu from './pt-BR/menu'; +import pwa from './pt-BR/pwa'; +import settingDrawer from './pt-BR/settingDrawer'; +import settings from './pt-BR/settings'; +import pages from './pt-BR/pages'; + +export default { + 'navBar.lang': 'Idiomas', + 'layout.user.link.help': 'ajuda', + 'layout.user.link.privacy': 'política de privacidade', + 'layout.user.link.terms': 'termos de serviços', + 'app.preview.down.block': 'Download this page to your local project', + ...globalHeader, + ...menu, + ...settingDrawer, + ...settings, + ...pwa, + ...component, + ...pages, +}; diff --git a/demo/src/locales/pt-BR/component.ts b/demo/src/locales/pt-BR/component.ts new file mode 100644 index 00000000..7cf9999c --- /dev/null +++ b/demo/src/locales/pt-BR/component.ts @@ -0,0 +1,5 @@ +export default { + 'component.tagSelect.expand': 'Expandir', + 'component.tagSelect.collapse': 'Diminuir', + 'component.tagSelect.all': 'Todas', +}; diff --git a/demo/src/locales/pt-BR/globalHeader.ts b/demo/src/locales/pt-BR/globalHeader.ts new file mode 100644 index 00000000..c9273991 --- /dev/null +++ b/demo/src/locales/pt-BR/globalHeader.ts @@ -0,0 +1,18 @@ +export default { + 'component.globalHeader.search': 'Busca', + 'component.globalHeader.search.example1': 'Exemplo de busca 1', + 'component.globalHeader.search.example2': 'Exemplo de busca 2', + 'component.globalHeader.search.example3': 'Exemplo de busca 3', + 'component.globalHeader.help': 'Ajuda', + 'component.globalHeader.notification': 'Notificação', + 'component.globalHeader.notification.empty': 'Você visualizou todas as notificações.', + 'component.globalHeader.message': 'Mensagem', + 'component.globalHeader.message.empty': 'Você visualizou todas as mensagens.', + 'component.globalHeader.event': 'Evento', + 'component.globalHeader.event.empty': 'Você visualizou todos os eventos.', + 'component.noticeIcon.clear': 'Limpar', + 'component.noticeIcon.cleared': 'Limpo', + 'component.noticeIcon.empty': 'Sem notificações', + 'component.noticeIcon.loaded': 'Carregado', + 'component.noticeIcon.view-more': 'Veja mais', +}; diff --git a/demo/src/locales/pt-BR/menu.ts b/demo/src/locales/pt-BR/menu.ts new file mode 100644 index 00000000..99d4d725 --- /dev/null +++ b/demo/src/locales/pt-BR/menu.ts @@ -0,0 +1,52 @@ +export default { + 'menu.welcome': 'Welcome', + 'menu.more-blocks': 'More Blocks', + 'menu.home': 'Início', + 'menu.login': 'Login', + 'menu.admin': 'Admin', + 'menu.admin.sub-page': 'Sub-Page', + 'menu.register': 'Registro', + 'menu.register-result': 'Resultado de registro', + 'menu.dashboard': 'Dashboard', + 'menu.dashboard.analysis': 'Análise', + 'menu.dashboard.monitor': 'Monitor', + 'menu.dashboard.workplace': 'Ambiente de Trabalho', + 'menu.exception.403': '403', + 'menu.exception.404': '404', + 'menu.exception.500': '500', + 'menu.form': 'Formulário', + 'menu.form.basic-form': 'Formulário Básico', + 'menu.form.step-form': 'Formulário Assistido', + 'menu.form.step-form.info': 'Formulário Assistido(gravar informações de transferência)', + 'menu.form.step-form.confirm': 'Formulário Assistido(confirmar informações de transferência)', + 'menu.form.step-form.result': 'Formulário Assistido(finalizado)', + 'menu.form.advanced-form': 'Formulário Avançado', + 'menu.list': 'Lista', + 'menu.list.table-list': 'Tabela de Busca', + 'menu.list.basic-list': 'Lista Básica', + 'menu.list.card-list': 'Lista de Card', + 'menu.list.search-list': 'Lista de Busca', + 'menu.list.search-list.articles': 'Lista de Busca(artigos)', + 'menu.list.search-list.projects': 'Lista de Busca(projetos)', + 'menu.list.search-list.applications': 'Lista de Busca(aplicações)', + 'menu.profile': 'Perfil', + 'menu.profile.basic': 'Perfil Básico', + 'menu.profile.advanced': 'Perfil Avançado', + 'menu.result': 'Resultado', + 'menu.result.success': 'Sucesso', + 'menu.result.fail': 'Falha', + 'menu.exception': 'Exceção', + 'menu.exception.not-permission': '403', + 'menu.exception.not-find': '404', + 'menu.exception.server-error': '500', + 'menu.exception.trigger': 'Disparar', + 'menu.account': 'Conta', + 'menu.account.center': 'Central da Conta', + 'menu.account.settings': 'Configurar Conta', + 'menu.account.trigger': 'Disparar Erro', + 'menu.account.logout': 'Sair', + 'menu.editor': 'Graphic Editor', + 'menu.editor.flow': 'Flow Editor', + 'menu.editor.mind': 'Mind Editor', + 'menu.editor.koni': 'Koni Editor', +}; diff --git a/demo/src/locales/pt-BR/pages.ts b/demo/src/locales/pt-BR/pages.ts new file mode 100644 index 00000000..14f8a8dd --- /dev/null +++ b/demo/src/locales/pt-BR/pages.ts @@ -0,0 +1,70 @@ +export default { + 'pages.layouts.userLayout.title': + 'Ant Design é a especificação de web design mais influente no distrito de Xihu', + 'pages.login.accountLogin.tab': 'Login da conta', + 'pages.login.accountLogin.errorMessage': 'usuário/senha incorreto(admin/ant.design)', + 'pages.login.username.placeholder': 'Usuário: admin or user', + 'pages.login.username.required': 'Por favor insira seu usuário!', + 'pages.login.password.placeholder': 'Senha: ant.design', + 'pages.login.password.required': 'Por favor insira sua senha!', + 'pages.login.phoneLogin.tab': 'Login com Telefone', + 'pages.login.phoneLogin.errorMessage': 'Erro de Código de Verificação', + 'pages.login.phoneNumber.placeholder': 'Telefone', + 'pages.login.phoneNumber.required': 'Por favor entre com seu telefone!', + 'pages.login.phoneNumber.invalid': 'Telefone é inválido!', + 'pages.login.captcha.placeholder': 'Código de Verificação', + 'pages.login.captcha.required': 'Por favor entre com o código de verificação!', + 'pages.login.phoneLogin.getVerificationCode': 'Obter Código', + 'pages.getCaptchaSecondText': 'seg(s)', + 'pages.login.rememberMe': 'Lembre-me', + 'pages.login.forgotPassword': 'Perdeu a Senha ?', + 'pages.login.submit': 'Enviar', + 'pages.login.loginWith': 'Login com :', + 'pages.login.registerAccount': 'Registra Conta', + 'pages.welcome.advancedComponent': 'Componente Avançado', + 'pages.welcome.link': 'Bem-vindo', + 'pages.welcome.advancedLayout': 'Layout Avançado', + 'pages.welcome.alertMessage': 'Componentes pesados mais rápidos e mais fortes foram lançados.', + 'pages.admin.subPage.title': 'Esta página só pode ser vista pelo Admin', + 'pages.admin.subPage.alertMessage': + 'O Umi ui foi lançado, bem-vindo ao usar o npm run ui para iniciar a experiência.', + 'pages.searchTable.createForm.newRule': 'Neva Regra', + 'pages.searchTable.updateForm.ruleConfig': 'Configuração de Regra', + 'pages.searchTable.updateForm.basicConfig': 'Informação básica', + 'pages.searchTable.updateForm.ruleName.nameLabel': 'Nome da Regra', + 'pages.searchTable.updateForm.ruleName.nameRules': 'Por favor entre com o nome da regra!', + 'pages.searchTable.updateForm.ruleDesc.descLabel': 'Descrição da Regra', + 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': + 'Por favor insira ao menos cinco caracteres', + 'pages.searchTable.updateForm.ruleDesc.descRules': + 'Insira uma descrição de regra de pelo menos cinco caracteres!', + 'pages.searchTable.updateForm.ruleProps.title': 'Configurar Propriedades', + 'pages.searchTable.updateForm.object': 'Objeto de Monitoramento', + 'pages.searchTable.updateForm.ruleProps.templateLabel': 'Modelo de Regra', + 'pages.searchTable.updateForm.ruleProps.typeLabel': 'Tipo de Regra', + 'pages.searchTable.updateForm.schedulingPeriod.title': 'Definir Período de Agendamento', + 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': 'Hora de Início', + 'pages.searchTable.updateForm.schedulingPeriod.timeRules': + 'Por favor selecione um horáriod e início!', + 'pages.searchTable.titleDesc': 'Descrição', + 'pages.searchTable.ruleName': 'O nome da regra é obrigatório', + 'pages.searchTable.titleCallNo': 'Número de chamadas de serviço', + 'pages.searchTable.titleStatus': 'Status', + 'pages.searchTable.nameStatus.default': 'padrão', + 'pages.searchTable.nameStatus.running': 'executando', + 'pages.searchTable.nameStatus.online': 'online', + 'pages.searchTable.nameStatus.abnormal': 'anormal', + 'pages.searchTable.titleUpdatedAt': 'Última programação em', + 'pages.searchTable.exception': 'Por favor, indique o motivo da exceção!', + 'pages.searchTable.titleOption': 'Opção', + 'pages.searchTable.config': 'Configuração', + 'pages.searchTable.subscribeAlert': 'Inscreva-se para receber alertas', + 'pages.searchTable.title': 'Formulário de Consulta', + 'pages.searchTable.new': 'Novo', + 'pages.searchTable.chosen': 'selecionado', + 'pages.searchTable.item': 'item', + 'pages.searchTable.totalServiceCalls': 'Número total de chamadas de serviço', + 'pages.searchTable.tenThousand': '0000', + 'pages.searchTable.batchDeletion': 'deleção em lote', + 'pages.searchTable.batchApproval': 'aprovação em lote', +}; diff --git a/demo/src/locales/pt-BR/pwa.ts b/demo/src/locales/pt-BR/pwa.ts new file mode 100644 index 00000000..05cc7978 --- /dev/null +++ b/demo/src/locales/pt-BR/pwa.ts @@ -0,0 +1,7 @@ +export default { + 'app.pwa.offline': 'Você está offline agora', + 'app.pwa.serviceworker.updated': 'Novo conteúdo está disponível', + 'app.pwa.serviceworker.updated.hint': + 'Por favor, pressione o botão "Atualizar" para recarregar a página atual', + 'app.pwa.serviceworker.updated.ok': 'Atualizar', +}; diff --git a/demo/src/locales/pt-BR/settingDrawer.ts b/demo/src/locales/pt-BR/settingDrawer.ts new file mode 100644 index 00000000..8a10b57e --- /dev/null +++ b/demo/src/locales/pt-BR/settingDrawer.ts @@ -0,0 +1,32 @@ +export default { + 'app.setting.pagestyle': 'Configuração de estilo da página', + 'app.setting.pagestyle.dark': 'Dark style', + 'app.setting.pagestyle.light': 'Light style', + 'app.setting.content-width': 'Largura do conteúdo', + 'app.setting.content-width.fixed': 'Fixo', + 'app.setting.content-width.fluid': 'Fluido', + 'app.setting.themecolor': 'Cor do Tema', + 'app.setting.themecolor.dust': 'Dust Red', + 'app.setting.themecolor.volcano': 'Volcano', + 'app.setting.themecolor.sunset': 'Sunset Orange', + 'app.setting.themecolor.cyan': 'Cyan', + 'app.setting.themecolor.green': 'Polar Green', + 'app.setting.themecolor.daybreak': 'Daybreak Blue (default)', + 'app.setting.themecolor.geekblue': 'Geek Glue', + 'app.setting.themecolor.purple': 'Golden Purple', + 'app.setting.navigationmode': 'Modo de Navegação', + 'app.setting.sidemenu': 'Layout do Menu Lateral', + 'app.setting.topmenu': 'Layout do Menu Superior', + 'app.setting.fixedheader': 'Cabeçalho fixo', + 'app.setting.fixedsidebar': 'Barra lateral fixa', + 'app.setting.fixedsidebar.hint': 'Funciona no layout do menu lateral', + 'app.setting.hideheader': 'Esconder o cabeçalho quando rolar', + 'app.setting.hideheader.hint': 'Funciona quando o esconder cabeçalho está abilitado', + 'app.setting.othersettings': 'Outras configurações', + 'app.setting.weakmode': 'Weak Mode', + 'app.setting.copy': 'Copiar Configuração', + 'app.setting.copyinfo': + 'copiado com sucesso,por favor trocar o defaultSettings em src/models/setting.js', + 'app.setting.production.hint': + 'O painel de configuração apenas é exibido no ambiente de desenvolvimento, por favor modifique manualmente o', +}; diff --git a/demo/src/locales/pt-BR/settings.ts b/demo/src/locales/pt-BR/settings.ts new file mode 100644 index 00000000..aad2e387 --- /dev/null +++ b/demo/src/locales/pt-BR/settings.ts @@ -0,0 +1,60 @@ +export default { + 'app.settings.menuMap.basic': 'Configurações Básicas', + 'app.settings.menuMap.security': 'Configurações de Segurança', + 'app.settings.menuMap.binding': 'Vinculação de Conta', + 'app.settings.menuMap.notification': 'Mensagens de Notificação', + 'app.settings.basic.avatar': 'Avatar', + 'app.settings.basic.change-avatar': 'Alterar avatar', + 'app.settings.basic.email': 'Email', + 'app.settings.basic.email-message': 'Por favor insira seu email!', + 'app.settings.basic.nickname': 'Nome de usuário', + 'app.settings.basic.nickname-message': 'Por favor insira seu nome de usuário!', + 'app.settings.basic.profile': 'Perfil pessoal', + 'app.settings.basic.profile-message': 'Por favor insira seu perfil pessoal!', + 'app.settings.basic.profile-placeholder': 'Breve introdução sua', + 'app.settings.basic.country': 'País/Região', + 'app.settings.basic.country-message': 'Por favor insira país!', + 'app.settings.basic.geographic': 'Província, estado ou cidade', + 'app.settings.basic.geographic-message': 'Por favor insira suas informações geográficas!', + 'app.settings.basic.address': 'Endereço', + 'app.settings.basic.address-message': 'Por favor insira seu endereço!', + 'app.settings.basic.phone': 'Número de telefone', + 'app.settings.basic.phone-message': 'Por favor insira seu número de telefone!', + 'app.settings.basic.update': 'Atualizar Informações', + 'app.settings.security.strong': 'Forte', + 'app.settings.security.medium': 'Média', + 'app.settings.security.weak': 'Fraca', + 'app.settings.security.password': 'Senha da Conta', + 'app.settings.security.password-description': 'Força da senha', + 'app.settings.security.phone': 'Telefone de Seguraça', + 'app.settings.security.phone-description': 'Telefone vinculado', + 'app.settings.security.question': 'Pergunta de Segurança', + 'app.settings.security.question-description': + 'A pergunta de segurança não está definida e a política de segurança pode proteger efetivamente a segurança da conta', + 'app.settings.security.email': 'Email de Backup', + 'app.settings.security.email-description': 'Email vinculado', + 'app.settings.security.mfa': 'Dispositivo MFA', + 'app.settings.security.mfa-description': + 'O dispositivo MFA não vinculado, após a vinculação, pode ser confirmado duas vezes', + 'app.settings.security.modify': 'Modificar', + 'app.settings.security.set': 'Atribuir', + 'app.settings.security.bind': 'Vincular', + 'app.settings.binding.taobao': 'Vincular Taobao', + 'app.settings.binding.taobao-description': 'Atualmente não vinculado à conta Taobao', + 'app.settings.binding.alipay': 'Vincular Alipay', + 'app.settings.binding.alipay-description': 'Atualmente não vinculado à conta Alipay', + 'app.settings.binding.dingding': 'Vincular DingTalk', + 'app.settings.binding.dingding-description': 'Atualmente não vinculado à conta DingTalk', + 'app.settings.binding.bind': 'Vincular', + 'app.settings.notification.password': 'Senha da Conta', + 'app.settings.notification.password-description': + 'Mensagens de outros usuários serão notificadas na forma de uma estação de letra', + 'app.settings.notification.messages': 'Mensagens de Sistema', + 'app.settings.notification.messages-description': + 'Mensagens de sistema serão notificadas na forma de uma estação de letra', + 'app.settings.notification.todo': 'Notificação de To-do', + 'app.settings.notification.todo-description': + 'A lista de to-do será notificada na forma de uma estação de letra', + 'app.settings.open': 'Aberto', + 'app.settings.close': 'Fechado', +}; diff --git a/demo/src/locales/zh-CN.ts b/demo/src/locales/zh-CN.ts new file mode 100644 index 00000000..e4258ce8 --- /dev/null +++ b/demo/src/locales/zh-CN.ts @@ -0,0 +1,25 @@ +import component from './zh-CN/component'; +import globalHeader from './zh-CN/globalHeader'; +import menu from './zh-CN/menu'; +import pwa from './zh-CN/pwa'; +import settingDrawer from './zh-CN/settingDrawer'; +import settings from './zh-CN/settings'; +import pages from './zh-CN/pages'; + +export default { + 'navBar.lang': '语言', + 'layout.user.link.help': '帮助', + 'layout.user.link.privacy': '隐私', + 'layout.user.link.terms': '条款', + 'app.copyright.produced': '蚂蚁集团体验技术部出品', + 'app.preview.down.block': '下载此页面到本地项目', + 'app.welcome.link.fetch-blocks': '获取全部区块', + 'app.welcome.link.block-list': '基于 block 开发,快速构建标准页面', + ...pages, + ...globalHeader, + ...menu, + ...settingDrawer, + ...settings, + ...pwa, + ...component, +}; diff --git a/demo/src/locales/zh-CN/component.ts b/demo/src/locales/zh-CN/component.ts new file mode 100644 index 00000000..1f1feadb --- /dev/null +++ b/demo/src/locales/zh-CN/component.ts @@ -0,0 +1,5 @@ +export default { + 'component.tagSelect.expand': '展开', + 'component.tagSelect.collapse': '收起', + 'component.tagSelect.all': '全部', +}; diff --git a/demo/src/locales/zh-CN/globalHeader.ts b/demo/src/locales/zh-CN/globalHeader.ts new file mode 100644 index 00000000..9fd66a58 --- /dev/null +++ b/demo/src/locales/zh-CN/globalHeader.ts @@ -0,0 +1,17 @@ +export default { + 'component.globalHeader.search': '站内搜索', + 'component.globalHeader.search.example1': '搜索提示一', + 'component.globalHeader.search.example2': '搜索提示二', + 'component.globalHeader.search.example3': '搜索提示三', + 'component.globalHeader.help': '使用文档', + 'component.globalHeader.notification': '通知', + 'component.globalHeader.notification.empty': '你已查看所有通知', + 'component.globalHeader.message': '消息', + 'component.globalHeader.message.empty': '您已读完所有消息', + 'component.globalHeader.event': '待办', + 'component.globalHeader.event.empty': '你已完成所有待办', + 'component.noticeIcon.clear': '清空', + 'component.noticeIcon.cleared': '清空了', + 'component.noticeIcon.empty': '暂无数据', + 'component.noticeIcon.view-more': '查看更多', +}; diff --git a/demo/src/locales/zh-CN/menu.ts b/demo/src/locales/zh-CN/menu.ts new file mode 100644 index 00000000..fecb70a4 --- /dev/null +++ b/demo/src/locales/zh-CN/menu.ts @@ -0,0 +1,52 @@ +export default { + 'menu.welcome': '欢迎', + 'menu.more-blocks': '更多区块', + 'menu.home': '首页', + 'menu.admin': '管理页', + 'menu.admin.sub-page': '二级管理页', + 'menu.login': '登录', + 'menu.register': '注册', + 'menu.register-result': '注册结果', + 'menu.dashboard': 'Dashboard', + 'menu.dashboard.analysis': '分析页', + 'menu.dashboard.monitor': '监控页', + 'menu.dashboard.workplace': '工作台', + 'menu.exception.403': '403', + 'menu.exception.404': '404', + 'menu.exception.500': '500', + 'menu.form': '表单页', + 'menu.form.basic-form': '基础表单', + 'menu.form.step-form': '分步表单', + 'menu.form.step-form.info': '分步表单(填写转账信息)', + 'menu.form.step-form.confirm': '分步表单(确认转账信息)', + 'menu.form.step-form.result': '分步表单(完成)', + 'menu.form.advanced-form': '高级表单', + 'menu.list': '列表页', + 'menu.list.table-list': '查询表格', + 'menu.list.basic-list': '标准列表', + 'menu.list.card-list': '卡片列表', + 'menu.list.search-list': '搜索列表', + 'menu.list.search-list.articles': '搜索列表(文章)', + 'menu.list.search-list.projects': '搜索列表(项目)', + 'menu.list.search-list.applications': '搜索列表(应用)', + 'menu.profile': '详情页', + 'menu.profile.basic': '基础详情页', + 'menu.profile.advanced': '高级详情页', + 'menu.result': '结果页', + 'menu.result.success': '成功页', + 'menu.result.fail': '失败页', + 'menu.exception': '异常页', + 'menu.exception.not-permission': '403', + 'menu.exception.not-find': '404', + 'menu.exception.server-error': '500', + 'menu.exception.trigger': '触发错误', + 'menu.account': '个人页', + 'menu.account.center': '个人中心', + 'menu.account.settings': '个人设置', + 'menu.account.trigger': '触发报错', + 'menu.account.logout': '退出登录', + 'menu.editor': '图形编辑器', + 'menu.editor.flow': '流程编辑器', + 'menu.editor.mind': '脑图编辑器', + 'menu.editor.koni': '拓扑编辑器', +}; diff --git a/demo/src/locales/zh-CN/pages.ts b/demo/src/locales/zh-CN/pages.ts new file mode 100644 index 00000000..adb36f4d --- /dev/null +++ b/demo/src/locales/zh-CN/pages.ts @@ -0,0 +1,67 @@ +export default { + 'pages.layouts.userLayout.title': 'Ant Design 是西湖区最具影响力的 Web 设计规范', + 'pages.login.accountLogin.tab': '账户密码登录', + 'pages.login.accountLogin.errorMessage': '错误的用户名和密码(admin/ant.design)', + 'pages.login.failure': '登录失败,请重试!', + 'pages.login.success': '登录成功!', + 'pages.login.username.placeholder': '用户名: admin or user', + 'pages.login.username.required': '用户名是必填项!', + 'pages.login.password.placeholder': '密码: ant.design', + 'pages.login.password.required': '密码是必填项!', + 'pages.login.phoneLogin.tab': '手机号登录', + 'pages.login.phoneLogin.errorMessage': '验证码错误', + 'pages.login.phoneNumber.placeholder': '请输入手机号!', + 'pages.login.phoneNumber.required': '手机号是必填项!', + 'pages.login.phoneNumber.invalid': '不合法的手机号!', + 'pages.login.captcha.placeholder': '请输入验证码!', + 'pages.login.captcha.required': '验证码是必填项!', + 'pages.login.phoneLogin.getVerificationCode': '获取验证码', + 'pages.getCaptchaSecondText': '秒后重新获取', + 'pages.login.rememberMe': '自动登录', + 'pages.login.forgotPassword': '忘记密码 ?', + 'pages.login.submit': '登录', + 'pages.login.loginWith': '其他登录方式 :', + 'pages.login.registerAccount': '注册账户', + 'pages.welcome.advancedComponent': '高级表格', + 'pages.welcome.link': '欢迎使用', + 'pages.welcome.advancedLayout': '高级布局', + 'pages.welcome.alertMessage': '更快更强的重型组件,已经发布。', + 'pages.admin.subPage.title': ' 这个页面只有 admin 权限才能查看', + 'pages.admin.subPage.alertMessage': 'umi ui 现已发布,欢迎使用 npm run ui 启动体验。', + 'pages.searchTable.createForm.newRule': '新建规则', + 'pages.searchTable.updateForm.ruleConfig': '规则配置', + 'pages.searchTable.updateForm.basicConfig': '基本信息', + 'pages.searchTable.updateForm.ruleName.nameLabel': '规则名称', + 'pages.searchTable.updateForm.ruleName.nameRules': '请输入规则名称!', + 'pages.searchTable.updateForm.ruleDesc.descLabel': '规则描述', + 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': '请输入至少五个字符', + 'pages.searchTable.updateForm.ruleDesc.descRules': '请输入至少五个字符的规则描述!', + 'pages.searchTable.updateForm.ruleProps.title': '配置规则属性', + 'pages.searchTable.updateForm.object': '监控对象', + 'pages.searchTable.updateForm.ruleProps.templateLabel': '规则模板', + 'pages.searchTable.updateForm.ruleProps.typeLabel': '规则类型', + 'pages.searchTable.updateForm.schedulingPeriod.title': '设定调度周期', + 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': '开始时间', + 'pages.searchTable.updateForm.schedulingPeriod.timeRules': '请选择开始时间!', + 'pages.searchTable.titleDesc': '描述', + 'pages.searchTable.ruleName': '规则名称为必填项', + 'pages.searchTable.titleCallNo': '服务调用次数', + 'pages.searchTable.titleStatus': '状态', + 'pages.searchTable.nameStatus.default': '关闭', + 'pages.searchTable.nameStatus.running': '运行中', + 'pages.searchTable.nameStatus.online': '已上线', + 'pages.searchTable.nameStatus.abnormal': '异常', + 'pages.searchTable.titleUpdatedAt': '上次调度时间', + 'pages.searchTable.exception': '请输入异常原因!', + 'pages.searchTable.titleOption': '操作', + 'pages.searchTable.config': '配置', + 'pages.searchTable.subscribeAlert': '订阅警报', + 'pages.searchTable.title': '查询表格', + 'pages.searchTable.new': '新建', + 'pages.searchTable.chosen': '已选择', + 'pages.searchTable.item': '项', + 'pages.searchTable.totalServiceCalls': '服务调用次数总计', + 'pages.searchTable.tenThousand': '万', + 'pages.searchTable.batchDeletion': '批量删除', + 'pages.searchTable.batchApproval': '批量审批', +}; diff --git a/demo/src/locales/zh-CN/pwa.ts b/demo/src/locales/zh-CN/pwa.ts new file mode 100644 index 00000000..e9504849 --- /dev/null +++ b/demo/src/locales/zh-CN/pwa.ts @@ -0,0 +1,6 @@ +export default { + 'app.pwa.offline': '当前处于离线状态', + 'app.pwa.serviceworker.updated': '有新内容', + 'app.pwa.serviceworker.updated.hint': '请点击“刷新”按钮或者手动刷新页面', + 'app.pwa.serviceworker.updated.ok': '刷新', +}; diff --git a/demo/src/locales/zh-CN/settingDrawer.ts b/demo/src/locales/zh-CN/settingDrawer.ts new file mode 100644 index 00000000..3f44958e --- /dev/null +++ b/demo/src/locales/zh-CN/settingDrawer.ts @@ -0,0 +1,31 @@ +export default { + 'app.setting.pagestyle': '整体风格设置', + 'app.setting.pagestyle.dark': '暗色菜单风格', + 'app.setting.pagestyle.light': '亮色菜单风格', + 'app.setting.content-width': '内容区域宽度', + 'app.setting.content-width.fixed': '定宽', + 'app.setting.content-width.fluid': '流式', + 'app.setting.themecolor': '主题色', + 'app.setting.themecolor.dust': '薄暮', + 'app.setting.themecolor.volcano': '火山', + 'app.setting.themecolor.sunset': '日暮', + 'app.setting.themecolor.cyan': '明青', + 'app.setting.themecolor.green': '极光绿', + 'app.setting.themecolor.daybreak': '拂晓蓝(默认)', + 'app.setting.themecolor.geekblue': '极客蓝', + 'app.setting.themecolor.purple': '酱紫', + 'app.setting.navigationmode': '导航模式', + 'app.setting.sidemenu': '侧边菜单布局', + 'app.setting.topmenu': '顶部菜单布局', + 'app.setting.fixedheader': '固定 Header', + 'app.setting.fixedsidebar': '固定侧边菜单', + 'app.setting.fixedsidebar.hint': '侧边菜单布局时可配置', + 'app.setting.hideheader': '下滑时隐藏 Header', + 'app.setting.hideheader.hint': '固定 Header 时可配置', + 'app.setting.othersettings': '其他设置', + 'app.setting.weakmode': '色弱模式', + 'app.setting.copy': '拷贝设置', + 'app.setting.copyinfo': '拷贝成功,请到 config/defaultSettings.js 中替换默认配置', + 'app.setting.production.hint': + '配置栏只在开发环境用于预览,生产环境不会展现,请拷贝后手动修改配置文件', +}; diff --git a/demo/src/locales/zh-CN/settings.ts b/demo/src/locales/zh-CN/settings.ts new file mode 100644 index 00000000..df8af434 --- /dev/null +++ b/demo/src/locales/zh-CN/settings.ts @@ -0,0 +1,55 @@ +export default { + 'app.settings.menuMap.basic': '基本设置', + 'app.settings.menuMap.security': '安全设置', + 'app.settings.menuMap.binding': '账号绑定', + 'app.settings.menuMap.notification': '新消息通知', + 'app.settings.basic.avatar': '头像', + 'app.settings.basic.change-avatar': '更换头像', + 'app.settings.basic.email': '邮箱', + 'app.settings.basic.email-message': '请输入您的邮箱!', + 'app.settings.basic.nickname': '昵称', + 'app.settings.basic.nickname-message': '请输入您的昵称!', + 'app.settings.basic.profile': '个人简介', + 'app.settings.basic.profile-message': '请输入个人简介!', + 'app.settings.basic.profile-placeholder': '个人简介', + 'app.settings.basic.country': '国家/地区', + 'app.settings.basic.country-message': '请输入您的国家或地区!', + 'app.settings.basic.geographic': '所在省市', + 'app.settings.basic.geographic-message': '请输入您的所在省市!', + 'app.settings.basic.address': '街道地址', + 'app.settings.basic.address-message': '请输入您的街道地址!', + 'app.settings.basic.phone': '联系电话', + 'app.settings.basic.phone-message': '请输入您的联系电话!', + 'app.settings.basic.update': '更新基本信息', + 'app.settings.security.strong': '强', + 'app.settings.security.medium': '中', + 'app.settings.security.weak': '弱', + 'app.settings.security.password': '账户密码', + 'app.settings.security.password-description': '当前密码强度', + 'app.settings.security.phone': '密保手机', + 'app.settings.security.phone-description': '已绑定手机', + 'app.settings.security.question': '密保问题', + 'app.settings.security.question-description': '未设置密保问题,密保问题可有效保护账户安全', + 'app.settings.security.email': '备用邮箱', + 'app.settings.security.email-description': '已绑定邮箱', + 'app.settings.security.mfa': 'MFA 设备', + 'app.settings.security.mfa-description': '未绑定 MFA 设备,绑定后,可以进行二次确认', + 'app.settings.security.modify': '修改', + 'app.settings.security.set': '设置', + 'app.settings.security.bind': '绑定', + 'app.settings.binding.taobao': '绑定淘宝', + 'app.settings.binding.taobao-description': '当前未绑定淘宝账号', + 'app.settings.binding.alipay': '绑定支付宝', + 'app.settings.binding.alipay-description': '当前未绑定支付宝账号', + 'app.settings.binding.dingding': '绑定钉钉', + 'app.settings.binding.dingding-description': '当前未绑定钉钉账号', + 'app.settings.binding.bind': '绑定', + 'app.settings.notification.password': '账户密码', + 'app.settings.notification.password-description': '其他用户的消息将以站内信的形式通知', + 'app.settings.notification.messages': '系统消息', + 'app.settings.notification.messages-description': '系统消息将以站内信的形式通知', + 'app.settings.notification.todo': '待办任务', + 'app.settings.notification.todo-description': '待办任务将以站内信的形式通知', + 'app.settings.open': '开', + 'app.settings.close': '关', +}; diff --git a/demo/src/locales/zh-TW.ts b/demo/src/locales/zh-TW.ts new file mode 100644 index 00000000..6ad5f931 --- /dev/null +++ b/demo/src/locales/zh-TW.ts @@ -0,0 +1,20 @@ +import component from './zh-TW/component'; +import globalHeader from './zh-TW/globalHeader'; +import menu from './zh-TW/menu'; +import pwa from './zh-TW/pwa'; +import settingDrawer from './zh-TW/settingDrawer'; +import settings from './zh-TW/settings'; + +export default { + 'navBar.lang': '語言', + 'layout.user.link.help': '幫助', + 'layout.user.link.privacy': '隱私', + 'layout.user.link.terms': '條款', + 'app.preview.down.block': '下載此頁面到本地項目', + ...globalHeader, + ...menu, + ...settingDrawer, + ...settings, + ...pwa, + ...component, +}; diff --git a/demo/src/locales/zh-TW/component.ts b/demo/src/locales/zh-TW/component.ts new file mode 100644 index 00000000..ba48e299 --- /dev/null +++ b/demo/src/locales/zh-TW/component.ts @@ -0,0 +1,5 @@ +export default { + 'component.tagSelect.expand': '展開', + 'component.tagSelect.collapse': '收起', + 'component.tagSelect.all': '全部', +}; diff --git a/demo/src/locales/zh-TW/globalHeader.ts b/demo/src/locales/zh-TW/globalHeader.ts new file mode 100644 index 00000000..ed584518 --- /dev/null +++ b/demo/src/locales/zh-TW/globalHeader.ts @@ -0,0 +1,17 @@ +export default { + 'component.globalHeader.search': '站內搜索', + 'component.globalHeader.search.example1': '搜索提示壹', + 'component.globalHeader.search.example2': '搜索提示二', + 'component.globalHeader.search.example3': '搜索提示三', + 'component.globalHeader.help': '使用手冊', + 'component.globalHeader.notification': '通知', + 'component.globalHeader.notification.empty': '妳已查看所有通知', + 'component.globalHeader.message': '消息', + 'component.globalHeader.message.empty': '您已讀完所有消息', + 'component.globalHeader.event': '待辦', + 'component.globalHeader.event.empty': '妳已完成所有待辦', + 'component.noticeIcon.clear': '清空', + 'component.noticeIcon.cleared': '清空了', + 'component.noticeIcon.empty': '暫無資料', + 'component.noticeIcon.view-more': '查看更多', +}; diff --git a/demo/src/locales/zh-TW/menu.ts b/demo/src/locales/zh-TW/menu.ts new file mode 100644 index 00000000..6969ccc6 --- /dev/null +++ b/demo/src/locales/zh-TW/menu.ts @@ -0,0 +1,52 @@ +export default { + 'menu.welcome': '歡迎', + 'menu.more-blocks': '更多區塊', + 'menu.home': '首頁', + 'menu.login': '登錄', + 'menu.admin': '权限', + 'menu.admin.sub-page': '二级管理页', + 'menu.exception.403': '403', + 'menu.exception.404': '404', + 'menu.exception.500': '500', + 'menu.register': '註冊', + 'menu.register-result': '註冊結果', + 'menu.dashboard': 'Dashboard', + 'menu.dashboard.analysis': '分析頁', + 'menu.dashboard.monitor': '監控頁', + 'menu.dashboard.workplace': '工作臺', + 'menu.form': '表單頁', + 'menu.form.basic-form': '基礎表單', + 'menu.form.step-form': '分步表單', + 'menu.form.step-form.info': '分步表單(填寫轉賬信息)', + 'menu.form.step-form.confirm': '分步表單(確認轉賬信息)', + 'menu.form.step-form.result': '分步表單(完成)', + 'menu.form.advanced-form': '高級表單', + 'menu.list': '列表頁', + 'menu.list.table-list': '查詢表格', + 'menu.list.basic-list': '標淮列表', + 'menu.list.card-list': '卡片列表', + 'menu.list.search-list': '搜索列表', + 'menu.list.search-list.articles': '搜索列表(文章)', + 'menu.list.search-list.projects': '搜索列表(項目)', + 'menu.list.search-list.applications': '搜索列表(應用)', + 'menu.profile': '詳情頁', + 'menu.profile.basic': '基礎詳情頁', + 'menu.profile.advanced': '高級詳情頁', + 'menu.result': '結果頁', + 'menu.result.success': '成功頁', + 'menu.result.fail': '失敗頁', + 'menu.account': '個人頁', + 'menu.account.center': '個人中心', + 'menu.account.settings': '個人設置', + 'menu.account.trigger': '觸發報錯', + 'menu.account.logout': '退出登錄', + 'menu.exception': '异常页', + 'menu.exception.not-permission': '403', + 'menu.exception.not-find': '404', + 'menu.exception.server-error': '500', + 'menu.exception.trigger': '触发错误', + 'menu.editor': '圖形編輯器', + 'menu.editor.flow': '流程編輯器', + 'menu.editor.mind': '腦圖編輯器', + 'menu.editor.koni': '拓撲編輯器', +}; diff --git a/demo/src/locales/zh-TW/pwa.ts b/demo/src/locales/zh-TW/pwa.ts new file mode 100644 index 00000000..108a6e48 --- /dev/null +++ b/demo/src/locales/zh-TW/pwa.ts @@ -0,0 +1,6 @@ +export default { + 'app.pwa.offline': '當前處於離線狀態', + 'app.pwa.serviceworker.updated': '有新內容', + 'app.pwa.serviceworker.updated.hint': '請點擊“刷新”按鈕或者手動刷新頁面', + 'app.pwa.serviceworker.updated.ok': '刷新', +}; diff --git a/demo/src/locales/zh-TW/settingDrawer.ts b/demo/src/locales/zh-TW/settingDrawer.ts new file mode 100644 index 00000000..454da285 --- /dev/null +++ b/demo/src/locales/zh-TW/settingDrawer.ts @@ -0,0 +1,31 @@ +export default { + 'app.setting.pagestyle': '整體風格設置', + 'app.setting.pagestyle.dark': '暗色菜單風格', + 'app.setting.pagestyle.light': '亮色菜單風格', + 'app.setting.content-width': '內容區域寬度', + 'app.setting.content-width.fixed': '定寬', + 'app.setting.content-width.fluid': '流式', + 'app.setting.themecolor': '主題色', + 'app.setting.themecolor.dust': '薄暮', + 'app.setting.themecolor.volcano': '火山', + 'app.setting.themecolor.sunset': '日暮', + 'app.setting.themecolor.cyan': '明青', + 'app.setting.themecolor.green': '極光綠', + 'app.setting.themecolor.daybreak': '拂曉藍(默認)', + 'app.setting.themecolor.geekblue': '極客藍', + 'app.setting.themecolor.purple': '醬紫', + 'app.setting.navigationmode': '導航模式', + 'app.setting.sidemenu': '側邊菜單布局', + 'app.setting.topmenu': '頂部菜單布局', + 'app.setting.fixedheader': '固定 Header', + 'app.setting.fixedsidebar': '固定側邊菜單', + 'app.setting.fixedsidebar.hint': '側邊菜單布局時可配置', + 'app.setting.hideheader': '下滑時隱藏 Header', + 'app.setting.hideheader.hint': '固定 Header 時可配置', + 'app.setting.othersettings': '其他設置', + 'app.setting.weakmode': '色弱模式', + 'app.setting.copy': '拷貝設置', + 'app.setting.copyinfo': '拷貝成功,請到 config/defaultSettings.js 中替換默認配置', + 'app.setting.production.hint': + '配置欄只在開發環境用於預覽,生產環境不會展現,請拷貝後手動修改配置文件', +}; diff --git a/demo/src/locales/zh-TW/settings.ts b/demo/src/locales/zh-TW/settings.ts new file mode 100644 index 00000000..dd45151a --- /dev/null +++ b/demo/src/locales/zh-TW/settings.ts @@ -0,0 +1,55 @@ +export default { + 'app.settings.menuMap.basic': '基本設置', + 'app.settings.menuMap.security': '安全設置', + 'app.settings.menuMap.binding': '賬號綁定', + 'app.settings.menuMap.notification': '新消息通知', + 'app.settings.basic.avatar': '頭像', + 'app.settings.basic.change-avatar': '更換頭像', + 'app.settings.basic.email': '郵箱', + 'app.settings.basic.email-message': '請輸入您的郵箱!', + 'app.settings.basic.nickname': '昵稱', + 'app.settings.basic.nickname-message': '請輸入您的昵稱!', + 'app.settings.basic.profile': '個人簡介', + 'app.settings.basic.profile-message': '請輸入個人簡介!', + 'app.settings.basic.profile-placeholder': '個人簡介', + 'app.settings.basic.country': '國家/地區', + 'app.settings.basic.country-message': '請輸入您的國家或地區!', + 'app.settings.basic.geographic': '所在省市', + 'app.settings.basic.geographic-message': '請輸入您的所在省市!', + 'app.settings.basic.address': '街道地址', + 'app.settings.basic.address-message': '請輸入您的街道地址!', + 'app.settings.basic.phone': '聯系電話', + 'app.settings.basic.phone-message': '請輸入您的聯系電話!', + 'app.settings.basic.update': '更新基本信息', + 'app.settings.security.strong': '強', + 'app.settings.security.medium': '中', + 'app.settings.security.weak': '弱', + 'app.settings.security.password': '賬戶密碼', + 'app.settings.security.password-description': '當前密碼強度', + 'app.settings.security.phone': '密保手機', + 'app.settings.security.phone-description': '已綁定手機', + 'app.settings.security.question': '密保問題', + 'app.settings.security.question-description': '未設置密保問題,密保問題可有效保護賬戶安全', + 'app.settings.security.email': '備用郵箱', + 'app.settings.security.email-description': '已綁定郵箱', + 'app.settings.security.mfa': 'MFA 設備', + 'app.settings.security.mfa-description': '未綁定 MFA 設備,綁定後,可以進行二次確認', + 'app.settings.security.modify': '修改', + 'app.settings.security.set': '設置', + 'app.settings.security.bind': '綁定', + 'app.settings.binding.taobao': '綁定淘寶', + 'app.settings.binding.taobao-description': '當前未綁定淘寶賬號', + 'app.settings.binding.alipay': '綁定支付寶', + 'app.settings.binding.alipay-description': '當前未綁定支付寶賬號', + 'app.settings.binding.dingding': '綁定釘釘', + 'app.settings.binding.dingding-description': '當前未綁定釘釘賬號', + 'app.settings.binding.bind': '綁定', + 'app.settings.notification.password': '賬戶密碼', + 'app.settings.notification.password-description': '其他用戶的消息將以站內信的形式通知', + 'app.settings.notification.messages': '系統消息', + 'app.settings.notification.messages-description': '系統消息將以站內信的形式通知', + 'app.settings.notification.todo': '待辦任務', + 'app.settings.notification.todo-description': '待辦任務將以站內信的形式通知', + 'app.settings.open': '開', + 'app.settings.close': '關', +}; diff --git a/demo/src/manifest.json b/demo/src/manifest.json new file mode 100644 index 00000000..839bc5b5 --- /dev/null +++ b/demo/src/manifest.json @@ -0,0 +1,22 @@ +{ + "name": "Ant Design Pro", + "short_name": "Ant Design Pro", + "display": "standalone", + "start_url": "./?utm_source=homescreen", + "theme_color": "#002140", + "background_color": "#001529", + "icons": [ + { + "src": "icons/icon-192x192.png", + "sizes": "192x192" + }, + { + "src": "icons/icon-128x128.png", + "sizes": "128x128" + }, + { + "src": "icons/icon-512x512.png", + "sizes": "512x512" + } + ] +} diff --git a/demo/src/pages/404.tsx b/demo/src/pages/404.tsx new file mode 100644 index 00000000..301e1739 --- /dev/null +++ b/demo/src/pages/404.tsx @@ -0,0 +1,18 @@ +import { Button, Result } from 'antd'; +import React from 'react'; +import { history } from 'umi'; + +const NoFoundPage: React.FC = () => ( + history.push('/')}> + Back Home + + } + /> +); + +export default NoFoundPage; diff --git a/demo/src/pages/Admin.tsx b/demo/src/pages/Admin.tsx new file mode 100644 index 00000000..d8922fa2 --- /dev/null +++ b/demo/src/pages/Admin.tsx @@ -0,0 +1,45 @@ +import React from 'react'; +import { HeartTwoTone, SmileTwoTone } from '@ant-design/icons'; +import { Card, Typography, Alert } from 'antd'; +import { PageHeaderWrapper } from '@ant-design/pro-layout'; +import { useIntl } from 'umi'; + +const Admin: React.FC = () => { + const intl = useIntl(); + return ( + + + + + Ant Design Pro You + + +

+ Want to add more pages? Please refer to{' '} + + use block + + 。 +

+
+ ); +}; + +export default Admin; diff --git a/demo/src/pages/TableList/components/UpdateForm.tsx b/demo/src/pages/TableList/components/UpdateForm.tsx new file mode 100644 index 00000000..058a1dfe --- /dev/null +++ b/demo/src/pages/TableList/components/UpdateForm.tsx @@ -0,0 +1,209 @@ +import React from 'react'; +import { Modal } from 'antd'; +import { + ProFormSelect, + ProFormText, + ProFormTextArea, + StepsForm, + ProFormRadio, + ProFormDateTimePicker, +} from '@ant-design/pro-form'; +import { useIntl, FormattedMessage } from 'umi'; + +export type FormValueType = { + target?: string; + template?: string; + type?: string; + time?: string; + frequency?: string; +} & Partial; + +export type UpdateFormProps = { + onCancel: (flag?: boolean, formVals?: FormValueType) => void; + onSubmit: (values: FormValueType) => Promise; + updateModalVisible: boolean; + values: Partial; +}; + +const UpdateForm: React.FC = (props) => { + const intl = useIntl(); + return ( + { + return ( + { + props.onCancel(); + }} + > + {dom} + + ); + }} + onFinish={props.onSubmit} + > + + + ), + }, + ]} + /> + + ), + min: 5, + }, + ]} + /> + + + + + + + + + ), + }, + ]} + /> + + + + ); +}; + +export default UpdateForm; diff --git a/demo/src/pages/TableList/index.tsx b/demo/src/pages/TableList/index.tsx new file mode 100644 index 00000000..7a5d0caa --- /dev/null +++ b/demo/src/pages/TableList/index.tsx @@ -0,0 +1,393 @@ +import { PlusOutlined } from '@ant-design/icons'; +import { Button, message, Input, Drawer } from 'antd'; +import React, { useState, useRef } from 'react'; +import { useIntl, FormattedMessage } from 'umi'; +import { PageContainer, FooterToolbar } from '@ant-design/pro-layout'; +import type { ProColumns, ActionType } from '@ant-design/pro-table'; +import ProTable from '@ant-design/pro-table'; +import { ModalForm, ProFormText, ProFormTextArea } from '@ant-design/pro-form'; +import type { ProDescriptionsItemProps } from '@ant-design/pro-descriptions'; +import ProDescriptions from '@ant-design/pro-descriptions'; +import type { FormValueType } from './components/UpdateForm'; +import UpdateForm from './components/UpdateForm'; +import { rule, addRule, updateRule, removeRule } from '@/services/ant-design-pro/api'; + +/** + * @en-US Add node + * @zh-CN 添加节点 + * @param fields + */ +const handleAdd = async (fields: API.RuleListItem) => { + const hide = message.loading('正在添加'); + try { + await addRule({ ...fields }); + hide(); + message.success('Added successfully'); + return true; + } catch (error) { + hide(); + message.error('Adding failed, please try again!'); + return false; + } +}; + +/** + * @en-US Update node + * @zh-CN 更新节点 + * + * @param fields + */ +const handleUpdate = async (fields: FormValueType) => { + const hide = message.loading('Configuring'); + try { + await updateRule({ + name: fields.name, + desc: fields.desc, + key: fields.key, + }); + hide(); + + message.success('Configuration is successful'); + return true; + } catch (error) { + hide(); + message.error('Configuration failed, please try again!'); + return false; + } +}; + +/** + * Delete node + * @zh-CN 删除节点 + * + * @param selectedRows + */ +const handleRemove = async (selectedRows: API.RuleListItem[]) => { + const hide = message.loading('正在删除'); + if (!selectedRows) return true; + try { + await removeRule({ + key: selectedRows.map((row) => row.key), + }); + hide(); + message.success('Deleted successfully and will refresh soon'); + return true; + } catch (error) { + hide(); + message.error('Delete failed, please try again'); + return false; + } +}; + +const TableList: React.FC = () => { + /** + * @en-US Pop-up window of new window + * @zh-CN 新建窗口的弹窗 + * */ + const [createModalVisible, handleModalVisible] = useState(false); + /** + * @en-US The pop-up window of the distribution update window + * @zh-CN 分布更新窗口的弹窗 + * */ + const [updateModalVisible, handleUpdateModalVisible] = useState(false); + + const [showDetail, setShowDetail] = useState(false); + + const actionRef = useRef(); + const [currentRow, setCurrentRow] = useState(); + const [selectedRowsState, setSelectedRows] = useState([]); + + /** + * @en-US International configuration + * @zh-CN 国际化配置 + * */ + const intl = useIntl(); + + const columns: ProColumns[] = [ + { + title: ( + + ), + dataIndex: 'name', + tip: 'The rule name is the unique key', + render: (dom, entity) => { + return ( + { + setCurrentRow(entity); + setShowDetail(true); + }} + > + {dom} + + ); + }, + }, + { + title: , + dataIndex: 'desc', + valueType: 'textarea', + }, + { + title: ( + + ), + dataIndex: 'callNo', + sorter: true, + hideInForm: true, + renderText: (val: string) => + `${val}${intl.formatMessage({ + id: 'pages.searchTable.tenThousand', + defaultMessage: ' 万 ', + })}`, + }, + { + title: , + dataIndex: 'status', + hideInForm: true, + valueEnum: { + 0: { + text: ( + + ), + status: 'Default', + }, + 1: { + text: ( + + ), + status: 'Processing', + }, + 2: { + text: ( + + ), + status: 'Success', + }, + 3: { + text: ( + + ), + status: 'Error', + }, + }, + }, + { + title: ( + + ), + sorter: true, + dataIndex: 'updatedAt', + valueType: 'dateTime', + renderFormItem: (item, { defaultRender, ...rest }, form) => { + const status = form.getFieldValue('status'); + if (`${status}` === '0') { + return false; + } + if (`${status}` === '3') { + return ( + + ); + } + return defaultRender(item); + }, + }, + { + title: , + dataIndex: 'option', + valueType: 'option', + render: (_, record) => [ + { + handleUpdateModalVisible(true); + setCurrentRow(record); + }} + > + + , + + + , + ], + }, + ]; + + return ( + + + headerTitle={intl.formatMessage({ + id: 'pages.searchTable.title', + defaultMessage: 'Enquiry form', + })} + actionRef={actionRef} + rowKey="key" + search={{ + labelWidth: 120, + }} + toolBarRender={() => [ + , + ]} + request={rule} + columns={columns} + rowSelection={{ + onChange: (_, selectedRows) => { + setSelectedRows(selectedRows); + }, + }} + /> + {selectedRowsState?.length > 0 && ( + + {' '} + {selectedRowsState.length}{' '} + +    + + {' '} + {selectedRowsState.reduce((pre, item) => pre + item.callNo!, 0)}{' '} + + + + } + > + + + + )} + { + const success = await handleAdd(value as API.RuleListItem); + if (success) { + handleModalVisible(false); + if (actionRef.current) { + actionRef.current.reload(); + } + } + }} + > + + ), + }, + ]} + width="md" + name="name" + /> + + + { + const success = await handleUpdate(value); + if (success) { + handleUpdateModalVisible(false); + setCurrentRow(undefined); + if (actionRef.current) { + actionRef.current.reload(); + } + } + }} + onCancel={() => { + handleUpdateModalVisible(false); + if (!showDetail) { + setCurrentRow(undefined); + } + }} + updateModalVisible={updateModalVisible} + values={currentRow || {}} + /> + + { + setCurrentRow(undefined); + setShowDetail(false); + }} + closable={false} + > + {currentRow?.name && ( + + column={2} + title={currentRow?.name} + request={async () => ({ + data: currentRow || {}, + })} + params={{ + id: currentRow?.name, + }} + columns={columns as ProDescriptionsItemProps[]} + /> + )} + + + ); +}; + +export default TableList; diff --git a/demo/src/pages/Welcome.less b/demo/src/pages/Welcome.less new file mode 100644 index 00000000..224a7932 --- /dev/null +++ b/demo/src/pages/Welcome.less @@ -0,0 +1,8 @@ +@import (reference) '~antd/es/style/themes/index'; + +.pre { + margin: 12px 0; + padding: 12px 20px; + background: @input-bg; + box-shadow: @card-shadow; +} diff --git a/demo/src/pages/Welcome.tsx b/demo/src/pages/Welcome.tsx new file mode 100644 index 00000000..9041b181 --- /dev/null +++ b/demo/src/pages/Welcome.tsx @@ -0,0 +1,66 @@ +import React from 'react'; +import { PageContainer } from '@ant-design/pro-layout'; +import { Card, Alert, Typography } from 'antd'; +import { useIntl, FormattedMessage } from 'umi'; +import styles from './Welcome.less'; + +const CodePreview: React.FC = ({ children }) => ( +
+    
+      {children}
+    
+  
+); + +const Welcome: React.FC = () => { + const intl = useIntl(); + + return ( + + + + + {' '} + + + + + yarn add @ant-design/pro-table + + {' '} + + + + + yarn add @ant-design/pro-layout + + + ); +}; + +export default Welcome; diff --git a/demo/src/pages/account/center/Center.less b/demo/src/pages/account/center/Center.less new file mode 100644 index 00000000..f547b406 --- /dev/null +++ b/demo/src/pages/account/center/Center.less @@ -0,0 +1,86 @@ +@import '~antd/es/style/themes/default.less'; + +.avatarHolder { + margin-bottom: 24px; + text-align: center; + + & > img { + width: 104px; + height: 104px; + margin-bottom: 20px; + } + + .name { + margin-bottom: 4px; + color: @heading-color; + font-weight: 500; + font-size: 20px; + line-height: 28px; + } +} + +.detail { + p { + position: relative; + margin-bottom: 8px; + padding-left: 26px; + + &:last-child { + margin-bottom: 0; + } + } + + i { + position: absolute; + top: 4px; + left: 0; + width: 14px; + height: 14px; + } +} + +.tagsTitle, +.teamTitle { + margin-bottom: 12px; + color: @heading-color; + font-weight: 500; +} + +.tags { + :global { + .ant-tag { + margin-bottom: 8px; + } + } +} + +.team { + :global { + .ant-avatar { + margin-right: 12px; + } + } + + a { + display: block; + margin-bottom: 24px; + overflow: hidden; + color: @text-color; + white-space: nowrap; + text-overflow: ellipsis; + word-break: break-all; + transition: color 0.3s; + + &:hover { + color: @primary-color; + } + } +} + +.tabsCard { + :global { + .ant-card-head { + padding: 0 16px; + } + } +} diff --git a/demo/src/pages/account/center/_mock.ts b/demo/src/pages/account/center/_mock.ts new file mode 100644 index 00000000..67acab0f --- /dev/null +++ b/demo/src/pages/account/center/_mock.ts @@ -0,0 +1,243 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import type { Request, Response } from 'express'; +import type { ListItemDataType } from './data.d'; + +const titles = [ + 'Alipay', + 'Angular', + 'Ant Design', + 'Ant Design Pro', + 'Bootstrap', + 'React', + 'Vue', + 'Webpack', +]; +const avatars = [ + 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', // Alipay + 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', // Angular + 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', // Ant Design + 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', // Ant Design Pro + 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', // Bootstrap + 'https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png', // React + 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', // Vue + 'https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png', // Webpack +]; + +const covers = [ + 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png', + 'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png', + 'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png', + 'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png', +]; +const desc = [ + '那是一种内在的东西, 他们到达不了,也无法触及的', + '希望是一个好东西,也许是最好的,好东西是不会消亡的', + '生命就像一盒巧克力,结果往往出人意料', + '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆', + '那时候我只会想自己想要什么,从不想自己拥有什么', +]; + +const user = [ + '付小小', + '曲丽丽', + '林东东', + '周星星', + '吴加好', + '朱偏右', + '鱼酱', + '乐哥', + '谭小仪', + '仲尼', +]; + +// 当前用户信息 +const currentUseDetail = { + name: 'Serati Ma', + avatar: 'https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png', + userid: '00000001', + email: 'antdesign@alipay.com', + signature: '海纳百川,有容乃大', + title: '交互专家', + group: '蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED', + tags: [ + { + key: '0', + label: '很有想法的', + }, + { + key: '1', + label: '专注设计', + }, + { + key: '2', + label: '辣~', + }, + { + key: '3', + label: '大长腿', + }, + { + key: '4', + label: '川妹子', + }, + { + key: '5', + label: '海纳百川', + }, + ], + notice: [ + { + id: 'xxx1', + title: titles[0], + logo: avatars[0], + description: '那是一种内在的东西,他们到达不了,也无法触及的', + updatedAt: new Date(), + member: '科学搬砖组', + href: '', + memberLink: '', + }, + { + id: 'xxx2', + title: titles[1], + logo: avatars[1], + description: '希望是一个好东西,也许是最好的,好东西是不会消亡的', + updatedAt: new Date('2017-07-24'), + member: '全组都是吴彦祖', + href: '', + memberLink: '', + }, + { + id: 'xxx3', + title: titles[2], + logo: avatars[2], + description: '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆', + updatedAt: new Date(), + member: '中二少女团', + href: '', + memberLink: '', + }, + { + id: 'xxx4', + title: titles[3], + logo: avatars[3], + description: '那时候我只会想自己想要什么,从不想自己拥有什么', + updatedAt: new Date('2017-07-23'), + member: '程序员日常', + href: '', + memberLink: '', + }, + { + id: 'xxx5', + title: titles[4], + logo: avatars[4], + description: '凛冬将至', + updatedAt: new Date('2017-07-23'), + member: '高逼格设计天团', + href: '', + memberLink: '', + }, + { + id: 'xxx6', + title: titles[5], + logo: avatars[5], + description: '生命就像一盒巧克力,结果往往出人意料', + updatedAt: new Date('2017-07-23'), + member: '骗你来学计算机', + href: '', + memberLink: '', + }, + ], + notifyCount: 12, + unreadCount: 11, + country: 'China', + geographic: { + province: { + label: '浙江省', + key: '330000', + }, + city: { + label: '杭州市', + key: '330100', + }, + }, + address: '西湖区工专路 77 号', + phone: '0752-268888888', +}; + +function fakeList(count: number): ListItemDataType[] { + const list = []; + for (let i = 0; i < count; i += 1) { + list.push({ + id: `fake-list-${i}`, + owner: user[i % 10], + title: titles[i % 8], + avatar: avatars[i % 8], + cover: parseInt(`${i / 4}`, 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)], + status: ['active', 'exception', 'normal'][i % 3] as + | 'normal' + | 'exception' + | 'active' + | 'success', + percent: Math.ceil(Math.random() * 50) + 50, + logo: avatars[i % 8], + href: 'https://ant.design', + updatedAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), + createdAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), + subDescription: desc[i % 5], + description: + '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。', + activeUser: Math.ceil(Math.random() * 100000) + 100000, + newUser: Math.ceil(Math.random() * 1000) + 1000, + star: Math.ceil(Math.random() * 100) + 100, + like: Math.ceil(Math.random() * 100) + 100, + message: Math.ceil(Math.random() * 10) + 10, + content: + '段落示意:蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。', + members: [ + { + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png', + name: '曲丽丽', + id: 'member1', + }, + { + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png', + name: '王昭君', + id: 'member2', + }, + { + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png', + name: '董娜娜', + id: 'member3', + }, + ], + }); + } + + return list; +} + +function getFakeList(req: Request, res: Response) { + const params = req.query as any; + + const count = Number(params.count) * 1 || 5; + + const result = fakeList(count); + return res.json({ + data: { + list: result, + }, + }); +} + +// 获取用户信息 +function getCurrentUser(req: Request, res: Response) { + return res.json({ + data: currentUseDetail, + }); +} + +export default { + 'GET /api/fake_list_Detail': getFakeList, + // 支持值为 Object 和 Array + 'GET /api/currentUserDetail': getCurrentUser, +}; diff --git a/demo/src/pages/account/center/components/Applications/index.less b/demo/src/pages/account/center/components/Applications/index.less new file mode 100644 index 00000000..c550b333 --- /dev/null +++ b/demo/src/pages/account/center/components/Applications/index.less @@ -0,0 +1,51 @@ +@import '~antd/es/style/themes/default.less'; + +.filterCardList { + margin-bottom: -24px; + :global { + .ant-card-meta-content { + margin-top: 0; + } + // disabled white space + .ant-card-meta-avatar { + font-size: 0; + } + + .ant-list .ant-list-item-content-single { + max-width: 100%; + } + } + .cardInfo { + margin-top: 16px; + margin-left: 40px; + zoom: 1; + &::before, + &::after { + display: table; + content: ' '; + } + &::after { + clear: both; + height: 0; + font-size: 0; + visibility: hidden; + } + & > div { + position: relative; + float: left; + width: 50%; + text-align: left; + p { + margin: 0; + font-size: 24px; + line-height: 32px; + } + p:first-child { + margin-bottom: 4px; + color: @text-color-secondary; + font-size: 12px; + line-height: 20px; + } + } + } +} diff --git a/demo/src/pages/account/center/components/Applications/index.tsx b/demo/src/pages/account/center/components/Applications/index.tsx new file mode 100644 index 00000000..c7bd3a9f --- /dev/null +++ b/demo/src/pages/account/center/components/Applications/index.tsx @@ -0,0 +1,123 @@ +import { + DownloadOutlined, + EditOutlined, + EllipsisOutlined, + ShareAltOutlined, +} from '@ant-design/icons'; +import { useRequest } from 'umi'; +import { Avatar, Card, Dropdown, List, Menu, Tooltip } from 'antd'; +import React from 'react'; +import numeral from 'numeral'; +import type { ListItemDataType } from '../../data.d'; +import { queryFakeList } from '../../service'; +import stylesApplications from './index.less'; + +export function formatWan(val: number) { + const v = val * 1; + if (!v || Number.isNaN(v)) return ''; + + let result: React.ReactNode = val; + if (val > 10000) { + result = ( + + {Math.floor(val / 10000)} + + 万 + + + ); + } + return result; +} + +const Applications: React.FC = () => { + // 获取tab列表数据 + const { data: listData } = useRequest(() => { + return queryFakeList({ + count: 30, + }); + }); + + const itemMenu = ( + + + + 1st menu item + + + + + 2nd menu item + + + + + 3d menu item + + + + ); + const CardInfo: React.FC<{ + activeUser: React.ReactNode; + newUser: React.ReactNode; + }> = ({ activeUser, newUser }) => ( +
+
+

活跃用户

+

{activeUser}

+
+
+

新增用户

+

{newUser}

+
+
+ ); + return ( + + rowKey="id" + className={stylesApplications.filterCardList} + grid={{ gutter: 24, xxl: 3, xl: 2, lg: 2, md: 2, sm: 2, xs: 1 }} + dataSource={listData?.list || []} + renderItem={(item) => ( + + + + , + + + , + + + , + + + , + ]} + > + } title={item.title} /> +
+ +
+
+
+ )} + /> + ); +}; + +export default Applications; diff --git a/demo/src/pages/account/center/components/ArticleListContent/index.less b/demo/src/pages/account/center/components/ArticleListContent/index.less new file mode 100644 index 00000000..eca0811c --- /dev/null +++ b/demo/src/pages/account/center/components/ArticleListContent/index.less @@ -0,0 +1,38 @@ +@import '~antd/es/style/themes/default.less'; + +.listContent { + .description { + max-width: 720px; + line-height: 22px; + } + .extra { + margin-top: 16px; + color: @text-color-secondary; + line-height: 22px; + & > :global(.ant-avatar) { + position: relative; + top: 1px; + width: 20px; + height: 20px; + margin-right: 8px; + vertical-align: top; + } + & > em { + margin-left: 16px; + color: @disabled-color; + font-style: normal; + } + } +} + +@media screen and (max-width: @screen-xs) { + .listContent { + .extra { + & > em { + display: block; + margin-top: 8px; + margin-left: 0; + } + } + } +} diff --git a/demo/src/pages/account/center/components/ArticleListContent/index.tsx b/demo/src/pages/account/center/components/ArticleListContent/index.tsx new file mode 100644 index 00000000..183c38e8 --- /dev/null +++ b/demo/src/pages/account/center/components/ArticleListContent/index.tsx @@ -0,0 +1,28 @@ +import { Avatar } from 'antd'; +import React from 'react'; +import moment from 'moment'; +import styles from './index.less'; + +export type ApplicationsProps = { + data: { + content?: string; + updatedAt?: any; + avatar?: string; + owner?: string; + href?: string; + }; +}; +const ArticleListContent: React.FC = ({ + data: { content, updatedAt, avatar, owner, href }, +}) => ( +
+
{content}
+
+ + {owner} 发布在 {href} + {moment(updatedAt).format('YYYY-MM-DD HH:mm')} +
+
+); + +export default ArticleListContent; diff --git a/demo/src/pages/account/center/components/Articles/index.less b/demo/src/pages/account/center/components/Articles/index.less new file mode 100644 index 00000000..e78c412c --- /dev/null +++ b/demo/src/pages/account/center/components/Articles/index.less @@ -0,0 +1,12 @@ +@import '~antd/es/style/themes/default.less'; + +.articleList { + :global { + .ant-list-item:first-child { + padding-top: 0; + } + } +} +a.listItemMetaTitle { + color: @heading-color; +} diff --git a/demo/src/pages/account/center/components/Articles/index.tsx b/demo/src/pages/account/center/components/Articles/index.tsx new file mode 100644 index 00000000..94adefee --- /dev/null +++ b/demo/src/pages/account/center/components/Articles/index.tsx @@ -0,0 +1,63 @@ +import React from 'react'; +import { StarTwoTone, LikeOutlined, MessageFilled } from '@ant-design/icons'; +import { useRequest } from 'umi'; +import { List, Tag } from 'antd'; +import ArticleListContent from '../ArticleListContent'; +import type { ListItemDataType } from '../../data.d'; +import { queryFakeList } from '../../service'; +import styles from './index.less'; + +const Articles: React.FC = () => { + const IconText: React.FC<{ + icon: React.ReactNode; + text: React.ReactNode; + }> = ({ icon, text }) => ( + + {icon} {text} + + ); + + // 获取tab列表数据 + const { data: listData } = useRequest(() => { + return queryFakeList({ + count: 30, + }); + }); + return ( + + size="large" + className={styles.articleList} + rowKey="id" + itemLayout="vertical" + dataSource={listData?.list || []} + renderItem={(item) => ( + } text={item.star} />, + } text={item.like} />, + } text={item.message} />, + ]} + > + + {item.title} + + } + description={ + + Ant Design + 设计语言 + 蚂蚁金服 + + } + /> + + + )} + /> + ); +}; + +export default Articles; diff --git a/demo/src/pages/account/center/components/AvatarList/index.less b/demo/src/pages/account/center/components/AvatarList/index.less new file mode 100644 index 00000000..a7a3d441 --- /dev/null +++ b/demo/src/pages/account/center/components/AvatarList/index.less @@ -0,0 +1,50 @@ +@import '~antd/es/style/themes/default.less'; + +.avatarList { + display: inline-block; + ul { + display: inline-block; + margin-left: 8px; + font-size: 0; + } +} + +.avatarItem { + display: inline-block; + width: @avatar-size-base; + height: @avatar-size-base; + margin-left: -8px; + font-size: @font-size-base; + :global { + .ant-avatar { + border: 1px solid @border-color-base; + } + } +} + +.avatarItemLarge { + width: @avatar-size-lg; + height: @avatar-size-lg; +} + +.avatarItemSmall { + width: @avatar-size-sm; + height: @avatar-size-sm; +} + +.avatarItemMini { + width: 20px; + height: 20px; + :global { + .ant-avatar { + width: 20px; + height: 20px; + line-height: 20px; + + .ant-avatar-string { + font-size: 12px; + line-height: 18px; + } + } + } +} diff --git a/demo/src/pages/account/center/components/AvatarList/index.tsx b/demo/src/pages/account/center/components/AvatarList/index.tsx new file mode 100644 index 00000000..4d57501a --- /dev/null +++ b/demo/src/pages/account/center/components/AvatarList/index.tsx @@ -0,0 +1,84 @@ +import { Avatar, Tooltip } from 'antd'; + +import React from 'react'; +import classNames from 'classnames'; +import styles from './index.less'; + +export declare type SizeType = number | 'small' | 'default' | 'large'; + +export type AvatarItemProps = { + tips: React.ReactNode; + src: string; + size?: SizeType; + style?: React.CSSProperties; + onClick?: () => void; +}; + +export type AvatarListProps = { + Item?: React.ReactElement; + size?: SizeType; + maxLength?: number; + excessItemsStyle?: React.CSSProperties; + style?: React.CSSProperties; + children: React.ReactElement | React.ReactElement[]; +}; + +const avatarSizeToClassName = (size?: SizeType | 'mini') => + classNames(styles.avatarItem, { + [styles.avatarItemLarge]: size === 'large', + [styles.avatarItemSmall]: size === 'small', + [styles.avatarItemMini]: size === 'mini', + }); + +const Item: React.FC = ({ src, size, tips, onClick = () => {} }) => { + const cls = avatarSizeToClassName(size); + + return ( +
  • + {tips ? ( + + + + ) : ( + + )} +
  • + ); +}; + +const AvatarList: React.FC & { Item: typeof Item } = ({ + children, + size, + maxLength = 5, + excessItemsStyle, + ...other +}) => { + const numOfChildren = React.Children.count(children); + const numToShow = maxLength >= numOfChildren ? numOfChildren : maxLength; + const childrenArray = React.Children.toArray(children) as React.ReactElement[]; + const childrenWithProps = childrenArray.slice(0, numToShow).map((child) => + React.cloneElement(child, { + size, + }), + ); + + if (numToShow < numOfChildren) { + const cls = avatarSizeToClassName(size); + + childrenWithProps.push( +
  • + {`+${numOfChildren - maxLength}`} +
  • , + ); + } + + return ( +
    +
      {childrenWithProps}
    +
    + ); +}; + +AvatarList.Item = Item; + +export default AvatarList; diff --git a/demo/src/pages/account/center/components/Projects/index.less b/demo/src/pages/account/center/components/Projects/index.less new file mode 100644 index 00000000..bfa61475 --- /dev/null +++ b/demo/src/pages/account/center/components/Projects/index.less @@ -0,0 +1,54 @@ +@import '~antd/es/style/themes/default.less'; + +.coverCardList { + .card { + :global { + .ant-card-meta-title { + margin-bottom: 4px; + & > a { + display: inline-block; + max-width: 100%; + color: @heading-color; + } + } + .ant-card-meta-description { + height: 44px; + overflow: hidden; + line-height: 22px; + } + } + + &:hover { + :global { + .ant-card-meta-title > a { + color: @primary-color; + } + } + } + } + + .cardItemContent { + display: flex; + height: 20px; + margin-top: 16px; + margin-bottom: -4px; + line-height: 20px; + & > span { + flex: 1; + color: @text-color-secondary; + font-size: 12px; + } + .avatarList { + flex: 0 1 auto; + } + } + .cardList { + margin-top: 24px; + } + + :global { + .ant-list .ant-list-item-content-single { + max-width: 100%; + } + } +} diff --git a/demo/src/pages/account/center/components/Projects/index.tsx b/demo/src/pages/account/center/components/Projects/index.tsx new file mode 100644 index 00000000..a03c383d --- /dev/null +++ b/demo/src/pages/account/center/components/Projects/index.tsx @@ -0,0 +1,49 @@ +import { Card, List } from 'antd'; +import { useRequest } from 'umi'; +import React from 'react'; +import moment from 'moment'; +import { queryFakeList } from '../../service'; +import AvatarList from '../AvatarList'; +import type { ListItemDataType } from '../../data.d'; +import styles from './index.less'; + +const Projects: React.FC = () => { + // 获取tab列表数据 + const { data: listData } = useRequest(() => { + return queryFakeList({ + count: 30, + }); + }); + + return ( + + className={styles.coverCardList} + rowKey="id" + grid={{ gutter: 24, xxl: 3, xl: 2, lg: 2, md: 2, sm: 2, xs: 1 }} + dataSource={listData?.list || []} + renderItem={(item) => ( + + }> + {item.title}} description={item.subDescription} /> +
    + {moment(item.updatedAt).fromNow()} +
    + + {item.members.map((member) => ( + + ))} + +
    +
    +
    +
    + )} + /> + ); +}; + +export default Projects; diff --git a/demo/src/pages/account/center/data.d.ts b/demo/src/pages/account/center/data.d.ts new file mode 100644 index 00000000..6085c1e5 --- /dev/null +++ b/demo/src/pages/account/center/data.d.ts @@ -0,0 +1,75 @@ +export type tabKeyType = 'articles' | 'applications' | 'projects'; +export interface TagType { + key: string; + label: string; +} + +export type GeographicType = { + province: { + label: string; + key: string; + }; + city: { + label: string; + key: string; + }; +}; + +export type NoticeType = { + id: string; + title: string; + logo: string; + description: string; + updatedAt: string; + member: string; + href: string; + memberLink: string; +}; + +export type CurrentUser = { + name: string; + avatar: string; + userid: string; + notice: NoticeType[]; + email: string; + signature: string; + title: string; + group: string; + tags: TagType[]; + notifyCount: number; + unreadCount: number; + country: string; + geographic: GeographicType; + address: string; + phone: string; +}; + +export type Member = { + avatar: string; + name: string; + id: string; +}; + +export type ListItemDataType = { + id: string; + owner: string; + title: string; + avatar: string; + cover: string; + status: 'normal' | 'exception' | 'active' | 'success'; + percent: number; + logo: string; + href: string; + body?: any; + updatedAt: number; + createdAt: number; + subDescription: string; + description: string; + activeUser: number; + newUser: number; + star: number; + like: number; + message: number; + content: string; + members: Member[]; +}; diff --git a/demo/src/pages/account/center/index.tsx b/demo/src/pages/account/center/index.tsx new file mode 100644 index 00000000..2410ff48 --- /dev/null +++ b/demo/src/pages/account/center/index.tsx @@ -0,0 +1,210 @@ +import { PlusOutlined, HomeOutlined, ContactsOutlined, ClusterOutlined } from '@ant-design/icons'; +import { Avatar, Card, Col, Divider, Input, Row, Tag } from 'antd'; +import React, { useState, useRef } from 'react'; +import { GridContent } from '@ant-design/pro-layout'; +import { Link, useRequest } from 'umi'; +import type { RouteChildrenProps } from 'react-router'; +import Projects from './components/Projects'; +import Articles from './components/Articles'; +import Applications from './components/Applications'; +import type { CurrentUser, TagType, tabKeyType } from './data.d'; +import { queryCurrent } from './service'; +import styles from './Center.less'; + +const operationTabList = [ + { + key: 'articles', + tab: ( + + 文章 (8) + + ), + }, + { + key: 'applications', + tab: ( + + 应用 (8) + + ), + }, + { + key: 'projects', + tab: ( + + 项目 (8) + + ), + }, +]; + +const TagList: React.FC<{ tags: CurrentUser['tags'] }> = ({ tags }) => { + const ref = useRef(null); + const [newTags, setNewTags] = useState([]); + const [inputVisible, setInputVisible] = useState(false); + const [inputValue, setInputValue] = useState(''); + + const showInput = () => { + setInputVisible(true); + if (ref.current) { + // eslint-disable-next-line no-unused-expressions + ref.current?.focus(); + } + }; + + const handleInputChange = (e: React.ChangeEvent) => { + setInputValue(e.target.value); + }; + + const handleInputConfirm = () => { + let tempsTags = [...newTags]; + if (inputValue && tempsTags.filter((tag) => tag.label === inputValue).length === 0) { + tempsTags = [...tempsTags, { key: `new-${tempsTags.length}`, label: inputValue }]; + } + setNewTags(tempsTags); + setInputVisible(false); + setInputValue(''); + }; + + return ( +
    +
    标签
    + {(tags || []).concat(newTags).map((item) => ( + {item.label} + ))} + {inputVisible && ( + + )} + {!inputVisible && ( + + + + )} +
    + ); +}; + +const Center: React.FC = () => { + const [tabKey, setTabKey] = useState('articles'); + + // 获取用户信息 + const { data: currentUser, loading } = useRequest(() => { + return queryCurrent(); + }); + + // 渲染用户信息 + const renderUserInfo = ({ title, group, geographic }: Partial) => { + return ( +
    +

    + + {title} +

    +

    + + {group} +

    +

    + + {(geographic || { province: { label: '' } }).province.label} + { + ( + geographic || { + city: { + label: '', + }, + } + ).city.label + } +

    +
    + ); + }; + + // 渲染tab切换 + const renderChildrenByTabKey = (tabValue: tabKeyType) => { + if (tabValue === 'projects') { + return ; + } + if (tabValue === 'applications') { + return ; + } + if (tabValue === 'articles') { + return ; + } + return null; + }; + + return ( + + + + + {!loading && currentUser && ( +
    +
    + +
    {currentUser.name}
    +
    {currentUser?.signature}
    +
    + {renderUserInfo(currentUser)} + + + +
    +
    团队
    + + {currentUser.notice && + currentUser.notice.map((item) => ( + + + + {item.member} + + + ))} + +
    +
    + )} +
    + + + { + setTabKey(_tabKey as tabKeyType); + }} + > + {renderChildrenByTabKey(tabKey)} + + +
    +
    + ); +}; +export default Center; diff --git a/demo/src/pages/account/center/service.ts b/demo/src/pages/account/center/service.ts new file mode 100644 index 00000000..b6bfad71 --- /dev/null +++ b/demo/src/pages/account/center/service.ts @@ -0,0 +1,14 @@ +import { request } from 'umi'; +import type { CurrentUser, ListItemDataType } from './data.d'; + +export async function queryCurrent(): Promise<{ data: CurrentUser }> { + return request('/api/currentUserDetail'); +} + +export async function queryFakeList(params: { + count: number; +}): Promise<{ data: { list: ListItemDataType[] } }> { + return request('/api/fake_list_Detail', { + params, + }); +} diff --git a/demo/src/pages/account/settings/_mock.ts b/demo/src/pages/account/settings/_mock.ts new file mode 100644 index 00000000..8e4ee132 --- /dev/null +++ b/demo/src/pages/account/settings/_mock.ts @@ -0,0 +1,79 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import type { Request, Response } from 'express'; + +const city = require('./geographic/city.json'); +const province = require('./geographic/province.json'); + +function getProvince(_: Request, res: Response) { + return res.json({ + data: province, + }); +} + +function getCity(req: Request, res: Response) { + return res.json({ + data: city[req.params.province], + }); +} + +function getCurrentUse(req: Request, res: Response) { + return res.json({ + data: { + name: 'Serati Ma', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png', + userid: '00000001', + email: 'antdesign@alipay.com', + signature: '海纳百川,有容乃大', + title: '交互专家', + group: '蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED', + tags: [ + { + key: '0', + label: '很有想法的', + }, + { + key: '1', + label: '专注设计', + }, + { + key: '2', + label: '辣~', + }, + { + key: '3', + label: '大长腿', + }, + { + key: '4', + label: '川妹子', + }, + { + key: '5', + label: '海纳百川', + }, + ], + notifyCount: 12, + unreadCount: 11, + country: 'China', + geographic: { + province: { + label: '浙江省', + key: '330000', + }, + city: { + label: '杭州市', + key: '330100', + }, + }, + address: '西湖区工专路 77 号', + phone: '0752-268888888', + }, + }); +} +// 代码中会兼容本地 service mock 以及部署站点的静态数据 +export default { + // 支持值为 Object 和 Array + 'GET /api/accountSettingCurrentUser': getCurrentUse, + 'GET /api/geographic/province': getProvince, + 'GET /api/geographic/city/:province': getCity, +}; diff --git a/demo/src/pages/account/settings/components/BaseView.less b/demo/src/pages/account/settings/components/BaseView.less new file mode 100644 index 00000000..ca328b47 --- /dev/null +++ b/demo/src/pages/account/settings/components/BaseView.less @@ -0,0 +1,65 @@ +@import '~antd/es/style/themes/default.less'; + +.baseView { + display: flex; + padding-top: 12px; + + :global { + .ant-legacy-form-item .ant-legacy-form-item-control-wrapper { + width: 100%; + } + } + + .left { + min-width: 224px; + max-width: 448px; + } + .right { + flex: 1; + padding-left: 104px; + .avatar_title { + height: 22px; + margin-bottom: 8px; + color: @heading-color; + font-size: @font-size-base; + line-height: 22px; + } + .avatar { + width: 144px; + height: 144px; + margin-bottom: 12px; + overflow: hidden; + img { + width: 100%; + } + } + .button_view { + width: 144px; + text-align: center; + } + } +} + +.area_code { + width: 72px; +} +.phone_number { + width: 214px; +} + +@media screen and (max-width: @screen-xl) { + .baseView { + flex-direction: column-reverse; + + .right { + display: flex; + flex-direction: column; + align-items: center; + max-width: 448px; + padding: 20px; + .avatar_title { + display: none; + } + } + } +} diff --git a/demo/src/pages/account/settings/components/PhoneView.tsx b/demo/src/pages/account/settings/components/PhoneView.tsx new file mode 100644 index 00000000..43894f34 --- /dev/null +++ b/demo/src/pages/account/settings/components/PhoneView.tsx @@ -0,0 +1,42 @@ +import React from 'react'; + +import { Input } from 'antd'; +import styles from './PhoneView.less'; + +type PhoneViewProps = { + value?: string; + onChange?: (value: string) => void; +}; + +const PhoneView: React.FC = (props) => { + const { value, onChange } = props; + let values = ['', '']; + if (value) { + values = value.split('-'); + } + + return ( + <> + { + if (onChange) { + onChange(`${e.target.value}-${values[1]}`); + } + }} + /> + { + if (onChange) { + onChange(`${values[0]}-${e.target.value}`); + } + }} + value={values[1]} + /> + + ); +}; + +export default PhoneView; diff --git a/demo/src/pages/account/settings/components/base.tsx b/demo/src/pages/account/settings/components/base.tsx new file mode 100644 index 00000000..e13ee787 --- /dev/null +++ b/demo/src/pages/account/settings/components/base.tsx @@ -0,0 +1,230 @@ +import React from 'react'; +import { UploadOutlined } from '@ant-design/icons'; +import { Button, Input, Upload, message } from 'antd'; +import ProForm, { + ProFormDependency, + ProFormFieldSet, + ProFormSelect, + ProFormText, + ProFormTextArea, +} from '@ant-design/pro-form'; +import { useRequest } from 'umi'; +import { queryCurrent } from '../service'; +import { queryProvince, queryCity } from '../service'; + +import styles from './BaseView.less'; + +const validatorPhone = (rule: any, value: string[], callback: (message?: string) => void) => { + if (!value[0]) { + callback('Please input your area code!'); + } + if (!value[1]) { + callback('Please input your phone number!'); + } + callback(); +}; +// 头像组件 方便以后独立,增加裁剪之类的功能 +const AvatarView = ({ avatar }: { avatar: string }) => ( + <> +
    头像
    +
    + avatar +
    + +
    + +
    +
    + +); + +const BaseView: React.FC = () => { + const { data: currentUser, loading } = useRequest(() => { + return queryCurrent(); + }); + + const getAvatarURL = () => { + if (currentUser) { + if (currentUser.avatar) { + return currentUser.avatar; + } + const url = 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'; + return url; + } + return ''; + }; + + const handleFinish = async () => { + message.success('更新基本信息成功'); + }; + return ( +
    + {loading ? null : ( + <> +
    + dom[1], + }} + initialValues={{ + ...currentUser, + phone: currentUser?.phone.split('-'), + }} + hideRequiredMark + > + + + + + + + { + return queryProvince().then(({ data }) => { + return data.map((item) => { + return { + label: item.name, + value: item.id, + }; + }); + }); + }} + /> + + {({ province }) => { + return ( + { + if (!province?.key) { + return []; + } + return queryCity(province.key || '').then(({ data }) => { + return data.map((item) => { + return { + label: item.name, + value: item.id, + }; + }); + }); + }} + /> + ); + }} + + + + + + + + +
    +
    + +
    + + )} +
    + ); +}; + +export default BaseView; diff --git a/demo/src/pages/account/settings/components/binding.tsx b/demo/src/pages/account/settings/components/binding.tsx new file mode 100644 index 00000000..002c4596 --- /dev/null +++ b/demo/src/pages/account/settings/components/binding.tsx @@ -0,0 +1,46 @@ +import { AlipayOutlined, DingdingOutlined, TaobaoOutlined } from '@ant-design/icons'; +import { List } from 'antd'; +import React, { Fragment } from 'react'; + +const BindingView: React.FC = () => { + const getData = () => [ + { + title: '绑定淘宝', + description: '当前未绑定淘宝账号', + actions: [绑定], + avatar: , + }, + { + title: '绑定支付宝', + description: '当前未绑定支付宝账号', + actions: [绑定], + avatar: , + }, + { + title: '绑定钉钉', + description: '当前未绑定钉钉账号', + actions: [绑定], + avatar: , + }, + ]; + + return ( + + ( + + + + )} + /> + + ); +}; + +export default BindingView; diff --git a/demo/src/pages/account/settings/components/notification.tsx b/demo/src/pages/account/settings/components/notification.tsx new file mode 100644 index 00000000..177c38ce --- /dev/null +++ b/demo/src/pages/account/settings/components/notification.tsx @@ -0,0 +1,44 @@ +import { List, Switch } from 'antd'; +import React, { Fragment } from 'react'; + +type Unpacked = T extends (infer U)[] ? U : T; + +const NotificationView: React.FC = () => { + const getData = () => { + const Action = ; + return [ + { + title: '账户密码', + description: '其他用户的消息将以站内信的形式通知', + actions: [Action], + }, + { + title: '系统消息', + description: '系统消息将以站内信的形式通知', + actions: [Action], + }, + { + title: '待办任务', + description: '待办任务将以站内信的形式通知', + actions: [Action], + }, + ]; + }; + + const data = getData(); + return ( + + > + itemLayout="horizontal" + dataSource={data} + renderItem={(item) => ( + + + + )} + /> + + ); +}; + +export default NotificationView; diff --git a/demo/src/pages/account/settings/components/security.tsx b/demo/src/pages/account/settings/components/security.tsx new file mode 100644 index 00000000..c0c40200 --- /dev/null +++ b/demo/src/pages/account/settings/components/security.tsx @@ -0,0 +1,62 @@ +import React from 'react'; +import { List } from 'antd'; + +type Unpacked = T extends (infer U)[] ? U : T; + +const passwordStrength = { + strong: , + medium: , + weak: 弱 Weak, +}; + +const SecurityView: React.FC = () => { + const getData = () => [ + { + title: '账户密码', + description: ( + <> + 当前密码强度: + {passwordStrength.strong} + + ), + actions: [修改], + }, + { + title: '密保手机', + description: `已绑定手机:138****8293`, + actions: [修改], + }, + { + title: '密保问题', + description: '未设置密保问题,密保问题可有效保护账户安全', + actions: [设置], + }, + { + title: '备用邮箱', + description: `已绑定邮箱:ant***sign.com`, + actions: [修改], + }, + { + title: 'MFA 设备', + description: '未绑定 MFA 设备,绑定后,可以进行二次确认', + actions: [绑定], + }, + ]; + + const data = getData(); + return ( + <> + > + itemLayout="horizontal" + dataSource={data} + renderItem={(item) => ( + + + + )} + /> + + ); +}; + +export default SecurityView; diff --git a/demo/src/pages/account/settings/data.d.ts b/demo/src/pages/account/settings/data.d.ts new file mode 100644 index 00000000..f4a88f30 --- /dev/null +++ b/demo/src/pages/account/settings/data.d.ts @@ -0,0 +1,43 @@ +export type TagType = { + key: string; + label: string; +}; + +export type GeographicItemType = { + name: string; + id: string; +}; + +export type GeographicType = { + province: GeographicItemType; + city: GeographicItemType; +}; + +export type NoticeType = { + id: string; + title: string; + logo: string; + description: string; + updatedAt: string; + member: string; + href: string; + memberLink: string; +}; + +export type CurrentUser = { + name: string; + avatar: string; + userid: string; + notice: NoticeType[]; + email: string; + signature: string; + title: string; + group: string; + tags: TagType[]; + notifyCount: number; + unreadCount: number; + country: string; + geographic: GeographicType; + address: string; + phone: string; +}; diff --git a/demo/src/pages/account/settings/geographic/city.json b/demo/src/pages/account/settings/geographic/city.json new file mode 100644 index 00000000..29783747 --- /dev/null +++ b/demo/src/pages/account/settings/geographic/city.json @@ -0,0 +1,1784 @@ +{ + "110000": [ + { + "province": "北京市", + "name": "市辖区", + "id": "110100" + } + ], + "120000": [ + { + "province": "天津市", + "name": "市辖区", + "id": "120100" + } + ], + "130000": [ + { + "province": "河北省", + "name": "石家庄市", + "id": "130100" + }, + { + "province": "河北省", + "name": "唐山市", + "id": "130200" + }, + { + "province": "河北省", + "name": "秦皇岛市", + "id": "130300" + }, + { + "province": "河北省", + "name": "邯郸市", + "id": "130400" + }, + { + "province": "河北省", + "name": "邢台市", + "id": "130500" + }, + { + "province": "河北省", + "name": "保定市", + "id": "130600" + }, + { + "province": "河北省", + "name": "张家口市", + "id": "130700" + }, + { + "province": "河北省", + "name": "承德市", + "id": "130800" + }, + { + "province": "河北省", + "name": "沧州市", + "id": "130900" + }, + { + "province": "河北省", + "name": "廊坊市", + "id": "131000" + }, + { + "province": "河北省", + "name": "衡水市", + "id": "131100" + }, + { + "province": "河北省", + "name": "省直辖县级行政区划", + "id": "139000" + } + ], + "140000": [ + { + "province": "山西省", + "name": "太原市", + "id": "140100" + }, + { + "province": "山西省", + "name": "大同市", + "id": "140200" + }, + { + "province": "山西省", + "name": "阳泉市", + "id": "140300" + }, + { + "province": "山西省", + "name": "长治市", + "id": "140400" + }, + { + "province": "山西省", + "name": "晋城市", + "id": "140500" + }, + { + "province": "山西省", + "name": "朔州市", + "id": "140600" + }, + { + "province": "山西省", + "name": "晋中市", + "id": "140700" + }, + { + "province": "山西省", + "name": "运城市", + "id": "140800" + }, + { + "province": "山西省", + "name": "忻州市", + "id": "140900" + }, + { + "province": "山西省", + "name": "临汾市", + "id": "141000" + }, + { + "province": "山西省", + "name": "吕梁市", + "id": "141100" + } + ], + "150000": [ + { + "province": "内蒙古自治区", + "name": "呼和浩特市", + "id": "150100" + }, + { + "province": "内蒙古自治区", + "name": "包头市", + "id": "150200" + }, + { + "province": "内蒙古自治区", + "name": "乌海市", + "id": "150300" + }, + { + "province": "内蒙古自治区", + "name": "赤峰市", + "id": "150400" + }, + { + "province": "内蒙古自治区", + "name": "通辽市", + "id": "150500" + }, + { + "province": "内蒙古自治区", + "name": "鄂尔多斯市", + "id": "150600" + }, + { + "province": "内蒙古自治区", + "name": "呼伦贝尔市", + "id": "150700" + }, + { + "province": "内蒙古自治区", + "name": "巴彦淖尔市", + "id": "150800" + }, + { + "province": "内蒙古自治区", + "name": "乌兰察布市", + "id": "150900" + }, + { + "province": "内蒙古自治区", + "name": "兴安盟", + "id": "152200" + }, + { + "province": "内蒙古自治区", + "name": "锡林郭勒盟", + "id": "152500" + }, + { + "province": "内蒙古自治区", + "name": "阿拉善盟", + "id": "152900" + } + ], + "210000": [ + { + "province": "辽宁省", + "name": "沈阳市", + "id": "210100" + }, + { + "province": "辽宁省", + "name": "大连市", + "id": "210200" + }, + { + "province": "辽宁省", + "name": "鞍山市", + "id": "210300" + }, + { + "province": "辽宁省", + "name": "抚顺市", + "id": "210400" + }, + { + "province": "辽宁省", + "name": "本溪市", + "id": "210500" + }, + { + "province": "辽宁省", + "name": "丹东市", + "id": "210600" + }, + { + "province": "辽宁省", + "name": "锦州市", + "id": "210700" + }, + { + "province": "辽宁省", + "name": "营口市", + "id": "210800" + }, + { + "province": "辽宁省", + "name": "阜新市", + "id": "210900" + }, + { + "province": "辽宁省", + "name": "辽阳市", + "id": "211000" + }, + { + "province": "辽宁省", + "name": "盘锦市", + "id": "211100" + }, + { + "province": "辽宁省", + "name": "铁岭市", + "id": "211200" + }, + { + "province": "辽宁省", + "name": "朝阳市", + "id": "211300" + }, + { + "province": "辽宁省", + "name": "葫芦岛市", + "id": "211400" + } + ], + "220000": [ + { + "province": "吉林省", + "name": "长春市", + "id": "220100" + }, + { + "province": "吉林省", + "name": "吉林市", + "id": "220200" + }, + { + "province": "吉林省", + "name": "四平市", + "id": "220300" + }, + { + "province": "吉林省", + "name": "辽源市", + "id": "220400" + }, + { + "province": "吉林省", + "name": "通化市", + "id": "220500" + }, + { + "province": "吉林省", + "name": "白山市", + "id": "220600" + }, + { + "province": "吉林省", + "name": "松原市", + "id": "220700" + }, + { + "province": "吉林省", + "name": "白城市", + "id": "220800" + }, + { + "province": "吉林省", + "name": "延边朝鲜族自治州", + "id": "222400" + } + ], + "230000": [ + { + "province": "黑龙江省", + "name": "哈尔滨市", + "id": "230100" + }, + { + "province": "黑龙江省", + "name": "齐齐哈尔市", + "id": "230200" + }, + { + "province": "黑龙江省", + "name": "鸡西市", + "id": "230300" + }, + { + "province": "黑龙江省", + "name": "鹤岗市", + "id": "230400" + }, + { + "province": "黑龙江省", + "name": "双鸭山市", + "id": "230500" + }, + { + "province": "黑龙江省", + "name": "大庆市", + "id": "230600" + }, + { + "province": "黑龙江省", + "name": "伊春市", + "id": "230700" + }, + { + "province": "黑龙江省", + "name": "佳木斯市", + "id": "230800" + }, + { + "province": "黑龙江省", + "name": "七台河市", + "id": "230900" + }, + { + "province": "黑龙江省", + "name": "牡丹江市", + "id": "231000" + }, + { + "province": "黑龙江省", + "name": "黑河市", + "id": "231100" + }, + { + "province": "黑龙江省", + "name": "绥化市", + "id": "231200" + }, + { + "province": "黑龙江省", + "name": "大兴安岭地区", + "id": "232700" + } + ], + "310000": [ + { + "province": "上海市", + "name": "市辖区", + "id": "310100" + } + ], + "320000": [ + { + "province": "江苏省", + "name": "南京市", + "id": "320100" + }, + { + "province": "江苏省", + "name": "无锡市", + "id": "320200" + }, + { + "province": "江苏省", + "name": "徐州市", + "id": "320300" + }, + { + "province": "江苏省", + "name": "常州市", + "id": "320400" + }, + { + "province": "江苏省", + "name": "苏州市", + "id": "320500" + }, + { + "province": "江苏省", + "name": "南通市", + "id": "320600" + }, + { + "province": "江苏省", + "name": "连云港市", + "id": "320700" + }, + { + "province": "江苏省", + "name": "淮安市", + "id": "320800" + }, + { + "province": "江苏省", + "name": "盐城市", + "id": "320900" + }, + { + "province": "江苏省", + "name": "扬州市", + "id": "321000" + }, + { + "province": "江苏省", + "name": "镇江市", + "id": "321100" + }, + { + "province": "江苏省", + "name": "泰州市", + "id": "321200" + }, + { + "province": "江苏省", + "name": "宿迁市", + "id": "321300" + } + ], + "330000": [ + { + "province": "浙江省", + "name": "杭州市", + "id": "330100" + }, + { + "province": "浙江省", + "name": "宁波市", + "id": "330200" + }, + { + "province": "浙江省", + "name": "温州市", + "id": "330300" + }, + { + "province": "浙江省", + "name": "嘉兴市", + "id": "330400" + }, + { + "province": "浙江省", + "name": "湖州市", + "id": "330500" + }, + { + "province": "浙江省", + "name": "绍兴市", + "id": "330600" + }, + { + "province": "浙江省", + "name": "金华市", + "id": "330700" + }, + { + "province": "浙江省", + "name": "衢州市", + "id": "330800" + }, + { + "province": "浙江省", + "name": "舟山市", + "id": "330900" + }, + { + "province": "浙江省", + "name": "台州市", + "id": "331000" + }, + { + "province": "浙江省", + "name": "丽水市", + "id": "331100" + } + ], + "340000": [ + { + "province": "安徽省", + "name": "合肥市", + "id": "340100" + }, + { + "province": "安徽省", + "name": "芜湖市", + "id": "340200" + }, + { + "province": "安徽省", + "name": "蚌埠市", + "id": "340300" + }, + { + "province": "安徽省", + "name": "淮南市", + "id": "340400" + }, + { + "province": "安徽省", + "name": "马鞍山市", + "id": "340500" + }, + { + "province": "安徽省", + "name": "淮北市", + "id": "340600" + }, + { + "province": "安徽省", + "name": "铜陵市", + "id": "340700" + }, + { + "province": "安徽省", + "name": "安庆市", + "id": "340800" + }, + { + "province": "安徽省", + "name": "黄山市", + "id": "341000" + }, + { + "province": "安徽省", + "name": "滁州市", + "id": "341100" + }, + { + "province": "安徽省", + "name": "阜阳市", + "id": "341200" + }, + { + "province": "安徽省", + "name": "宿州市", + "id": "341300" + }, + { + "province": "安徽省", + "name": "六安市", + "id": "341500" + }, + { + "province": "安徽省", + "name": "亳州市", + "id": "341600" + }, + { + "province": "安徽省", + "name": "池州市", + "id": "341700" + }, + { + "province": "安徽省", + "name": "宣城市", + "id": "341800" + } + ], + "350000": [ + { + "province": "福建省", + "name": "福州市", + "id": "350100" + }, + { + "province": "福建省", + "name": "厦门市", + "id": "350200" + }, + { + "province": "福建省", + "name": "莆田市", + "id": "350300" + }, + { + "province": "福建省", + "name": "三明市", + "id": "350400" + }, + { + "province": "福建省", + "name": "泉州市", + "id": "350500" + }, + { + "province": "福建省", + "name": "漳州市", + "id": "350600" + }, + { + "province": "福建省", + "name": "南平市", + "id": "350700" + }, + { + "province": "福建省", + "name": "龙岩市", + "id": "350800" + }, + { + "province": "福建省", + "name": "宁德市", + "id": "350900" + } + ], + "360000": [ + { + "province": "江西省", + "name": "南昌市", + "id": "360100" + }, + { + "province": "江西省", + "name": "景德镇市", + "id": "360200" + }, + { + "province": "江西省", + "name": "萍乡市", + "id": "360300" + }, + { + "province": "江西省", + "name": "九江市", + "id": "360400" + }, + { + "province": "江西省", + "name": "新余市", + "id": "360500" + }, + { + "province": "江西省", + "name": "鹰潭市", + "id": "360600" + }, + { + "province": "江西省", + "name": "赣州市", + "id": "360700" + }, + { + "province": "江西省", + "name": "吉安市", + "id": "360800" + }, + { + "province": "江西省", + "name": "宜春市", + "id": "360900" + }, + { + "province": "江西省", + "name": "抚州市", + "id": "361000" + }, + { + "province": "江西省", + "name": "上饶市", + "id": "361100" + } + ], + "370000": [ + { + "province": "山东省", + "name": "济南市", + "id": "370100" + }, + { + "province": "山东省", + "name": "青岛市", + "id": "370200" + }, + { + "province": "山东省", + "name": "淄博市", + "id": "370300" + }, + { + "province": "山东省", + "name": "枣庄市", + "id": "370400" + }, + { + "province": "山东省", + "name": "东营市", + "id": "370500" + }, + { + "province": "山东省", + "name": "烟台市", + "id": "370600" + }, + { + "province": "山东省", + "name": "潍坊市", + "id": "370700" + }, + { + "province": "山东省", + "name": "济宁市", + "id": "370800" + }, + { + "province": "山东省", + "name": "泰安市", + "id": "370900" + }, + { + "province": "山东省", + "name": "威海市", + "id": "371000" + }, + { + "province": "山东省", + "name": "日照市", + "id": "371100" + }, + { + "province": "山东省", + "name": "莱芜市", + "id": "371200" + }, + { + "province": "山东省", + "name": "临沂市", + "id": "371300" + }, + { + "province": "山东省", + "name": "德州市", + "id": "371400" + }, + { + "province": "山东省", + "name": "聊城市", + "id": "371500" + }, + { + "province": "山东省", + "name": "滨州市", + "id": "371600" + }, + { + "province": "山东省", + "name": "菏泽市", + "id": "371700" + } + ], + "410000": [ + { + "province": "河南省", + "name": "郑州市", + "id": "410100" + }, + { + "province": "河南省", + "name": "开封市", + "id": "410200" + }, + { + "province": "河南省", + "name": "洛阳市", + "id": "410300" + }, + { + "province": "河南省", + "name": "平顶山市", + "id": "410400" + }, + { + "province": "河南省", + "name": "安阳市", + "id": "410500" + }, + { + "province": "河南省", + "name": "鹤壁市", + "id": "410600" + }, + { + "province": "河南省", + "name": "新乡市", + "id": "410700" + }, + { + "province": "河南省", + "name": "焦作市", + "id": "410800" + }, + { + "province": "河南省", + "name": "濮阳市", + "id": "410900" + }, + { + "province": "河南省", + "name": "许昌市", + "id": "411000" + }, + { + "province": "河南省", + "name": "漯河市", + "id": "411100" + }, + { + "province": "河南省", + "name": "三门峡市", + "id": "411200" + }, + { + "province": "河南省", + "name": "南阳市", + "id": "411300" + }, + { + "province": "河南省", + "name": "商丘市", + "id": "411400" + }, + { + "province": "河南省", + "name": "信阳市", + "id": "411500" + }, + { + "province": "河南省", + "name": "周口市", + "id": "411600" + }, + { + "province": "河南省", + "name": "驻马店市", + "id": "411700" + }, + { + "province": "河南省", + "name": "省直辖县级行政区划", + "id": "419000" + } + ], + "420000": [ + { + "province": "湖北省", + "name": "武汉市", + "id": "420100" + }, + { + "province": "湖北省", + "name": "黄石市", + "id": "420200" + }, + { + "province": "湖北省", + "name": "十堰市", + "id": "420300" + }, + { + "province": "湖北省", + "name": "宜昌市", + "id": "420500" + }, + { + "province": "湖北省", + "name": "襄阳市", + "id": "420600" + }, + { + "province": "湖北省", + "name": "鄂州市", + "id": "420700" + }, + { + "province": "湖北省", + "name": "荆门市", + "id": "420800" + }, + { + "province": "湖北省", + "name": "孝感市", + "id": "420900" + }, + { + "province": "湖北省", + "name": "荆州市", + "id": "421000" + }, + { + "province": "湖北省", + "name": "黄冈市", + "id": "421100" + }, + { + "province": "湖北省", + "name": "咸宁市", + "id": "421200" + }, + { + "province": "湖北省", + "name": "随州市", + "id": "421300" + }, + { + "province": "湖北省", + "name": "恩施土家族苗族自治州", + "id": "422800" + }, + { + "province": "湖北省", + "name": "省直辖县级行政区划", + "id": "429000" + } + ], + "430000": [ + { + "province": "湖南省", + "name": "长沙市", + "id": "430100" + }, + { + "province": "湖南省", + "name": "株洲市", + "id": "430200" + }, + { + "province": "湖南省", + "name": "湘潭市", + "id": "430300" + }, + { + "province": "湖南省", + "name": "衡阳市", + "id": "430400" + }, + { + "province": "湖南省", + "name": "邵阳市", + "id": "430500" + }, + { + "province": "湖南省", + "name": "岳阳市", + "id": "430600" + }, + { + "province": "湖南省", + "name": "常德市", + "id": "430700" + }, + { + "province": "湖南省", + "name": "张家界市", + "id": "430800" + }, + { + "province": "湖南省", + "name": "益阳市", + "id": "430900" + }, + { + "province": "湖南省", + "name": "郴州市", + "id": "431000" + }, + { + "province": "湖南省", + "name": "永州市", + "id": "431100" + }, + { + "province": "湖南省", + "name": "怀化市", + "id": "431200" + }, + { + "province": "湖南省", + "name": "娄底市", + "id": "431300" + }, + { + "province": "湖南省", + "name": "湘西土家族苗族自治州", + "id": "433100" + } + ], + "440000": [ + { + "province": "广东省", + "name": "广州市", + "id": "440100" + }, + { + "province": "广东省", + "name": "韶关市", + "id": "440200" + }, + { + "province": "广东省", + "name": "深圳市", + "id": "440300" + }, + { + "province": "广东省", + "name": "珠海市", + "id": "440400" + }, + { + "province": "广东省", + "name": "汕头市", + "id": "440500" + }, + { + "province": "广东省", + "name": "佛山市", + "id": "440600" + }, + { + "province": "广东省", + "name": "江门市", + "id": "440700" + }, + { + "province": "广东省", + "name": "湛江市", + "id": "440800" + }, + { + "province": "广东省", + "name": "茂名市", + "id": "440900" + }, + { + "province": "广东省", + "name": "肇庆市", + "id": "441200" + }, + { + "province": "广东省", + "name": "惠州市", + "id": "441300" + }, + { + "province": "广东省", + "name": "梅州市", + "id": "441400" + }, + { + "province": "广东省", + "name": "汕尾市", + "id": "441500" + }, + { + "province": "广东省", + "name": "河源市", + "id": "441600" + }, + { + "province": "广东省", + "name": "阳江市", + "id": "441700" + }, + { + "province": "广东省", + "name": "清远市", + "id": "441800" + }, + { + "province": "广东省", + "name": "东莞市", + "id": "441900" + }, + { + "province": "广东省", + "name": "中山市", + "id": "442000" + }, + { + "province": "广东省", + "name": "潮州市", + "id": "445100" + }, + { + "province": "广东省", + "name": "揭阳市", + "id": "445200" + }, + { + "province": "广东省", + "name": "云浮市", + "id": "445300" + } + ], + "450000": [ + { + "province": "广西壮族自治区", + "name": "南宁市", + "id": "450100" + }, + { + "province": "广西壮族自治区", + "name": "柳州市", + "id": "450200" + }, + { + "province": "广西壮族自治区", + "name": "桂林市", + "id": "450300" + }, + { + "province": "广西壮族自治区", + "name": "梧州市", + "id": "450400" + }, + { + "province": "广西壮族自治区", + "name": "北海市", + "id": "450500" + }, + { + "province": "广西壮族自治区", + "name": "防城港市", + "id": "450600" + }, + { + "province": "广西壮族自治区", + "name": "钦州市", + "id": "450700" + }, + { + "province": "广西壮族自治区", + "name": "贵港市", + "id": "450800" + }, + { + "province": "广西壮族自治区", + "name": "玉林市", + "id": "450900" + }, + { + "province": "广西壮族自治区", + "name": "百色市", + "id": "451000" + }, + { + "province": "广西壮族自治区", + "name": "贺州市", + "id": "451100" + }, + { + "province": "广西壮族自治区", + "name": "河池市", + "id": "451200" + }, + { + "province": "广西壮族自治区", + "name": "来宾市", + "id": "451300" + }, + { + "province": "广西壮族自治区", + "name": "崇左市", + "id": "451400" + } + ], + "460000": [ + { + "province": "海南省", + "name": "海口市", + "id": "460100" + }, + { + "province": "海南省", + "name": "三亚市", + "id": "460200" + }, + { + "province": "海南省", + "name": "三沙市", + "id": "460300" + }, + { + "province": "海南省", + "name": "儋州市", + "id": "460400" + }, + { + "province": "海南省", + "name": "省直辖县级行政区划", + "id": "469000" + } + ], + "500000": [ + { + "province": "重庆市", + "name": "市辖区", + "id": "500100" + }, + { + "province": "重庆市", + "name": "县", + "id": "500200" + } + ], + "510000": [ + { + "province": "四川省", + "name": "成都市", + "id": "510100" + }, + { + "province": "四川省", + "name": "自贡市", + "id": "510300" + }, + { + "province": "四川省", + "name": "攀枝花市", + "id": "510400" + }, + { + "province": "四川省", + "name": "泸州市", + "id": "510500" + }, + { + "province": "四川省", + "name": "德阳市", + "id": "510600" + }, + { + "province": "四川省", + "name": "绵阳市", + "id": "510700" + }, + { + "province": "四川省", + "name": "广元市", + "id": "510800" + }, + { + "province": "四川省", + "name": "遂宁市", + "id": "510900" + }, + { + "province": "四川省", + "name": "内江市", + "id": "511000" + }, + { + "province": "四川省", + "name": "乐山市", + "id": "511100" + }, + { + "province": "四川省", + "name": "南充市", + "id": "511300" + }, + { + "province": "四川省", + "name": "眉山市", + "id": "511400" + }, + { + "province": "四川省", + "name": "宜宾市", + "id": "511500" + }, + { + "province": "四川省", + "name": "广安市", + "id": "511600" + }, + { + "province": "四川省", + "name": "达州市", + "id": "511700" + }, + { + "province": "四川省", + "name": "雅安市", + "id": "511800" + }, + { + "province": "四川省", + "name": "巴中市", + "id": "511900" + }, + { + "province": "四川省", + "name": "资阳市", + "id": "512000" + }, + { + "province": "四川省", + "name": "阿坝藏族羌族自治州", + "id": "513200" + }, + { + "province": "四川省", + "name": "甘孜藏族自治州", + "id": "513300" + }, + { + "province": "四川省", + "name": "凉山彝族自治州", + "id": "513400" + } + ], + "520000": [ + { + "province": "贵州省", + "name": "贵阳市", + "id": "520100" + }, + { + "province": "贵州省", + "name": "六盘水市", + "id": "520200" + }, + { + "province": "贵州省", + "name": "遵义市", + "id": "520300" + }, + { + "province": "贵州省", + "name": "安顺市", + "id": "520400" + }, + { + "province": "贵州省", + "name": "毕节市", + "id": "520500" + }, + { + "province": "贵州省", + "name": "铜仁市", + "id": "520600" + }, + { + "province": "贵州省", + "name": "黔西南布依族苗族自治州", + "id": "522300" + }, + { + "province": "贵州省", + "name": "黔东南苗族侗族自治州", + "id": "522600" + }, + { + "province": "贵州省", + "name": "黔南布依族苗族自治州", + "id": "522700" + } + ], + "530000": [ + { + "province": "云南省", + "name": "昆明市", + "id": "530100" + }, + { + "province": "云南省", + "name": "曲靖市", + "id": "530300" + }, + { + "province": "云南省", + "name": "玉溪市", + "id": "530400" + }, + { + "province": "云南省", + "name": "保山市", + "id": "530500" + }, + { + "province": "云南省", + "name": "昭通市", + "id": "530600" + }, + { + "province": "云南省", + "name": "丽江市", + "id": "530700" + }, + { + "province": "云南省", + "name": "普洱市", + "id": "530800" + }, + { + "province": "云南省", + "name": "临沧市", + "id": "530900" + }, + { + "province": "云南省", + "name": "楚雄彝族自治州", + "id": "532300" + }, + { + "province": "云南省", + "name": "红河哈尼族彝族自治州", + "id": "532500" + }, + { + "province": "云南省", + "name": "文山壮族苗族自治州", + "id": "532600" + }, + { + "province": "云南省", + "name": "西双版纳傣族自治州", + "id": "532800" + }, + { + "province": "云南省", + "name": "大理白族自治州", + "id": "532900" + }, + { + "province": "云南省", + "name": "德宏傣族景颇族自治州", + "id": "533100" + }, + { + "province": "云南省", + "name": "怒江傈僳族自治州", + "id": "533300" + }, + { + "province": "云南省", + "name": "迪庆藏族自治州", + "id": "533400" + } + ], + "540000": [ + { + "province": "西藏自治区", + "name": "拉萨市", + "id": "540100" + }, + { + "province": "西藏自治区", + "name": "日喀则市", + "id": "540200" + }, + { + "province": "西藏自治区", + "name": "昌都市", + "id": "540300" + }, + { + "province": "西藏自治区", + "name": "林芝市", + "id": "540400" + }, + { + "province": "西藏自治区", + "name": "山南市", + "id": "540500" + }, + { + "province": "西藏自治区", + "name": "那曲地区", + "id": "542400" + }, + { + "province": "西藏自治区", + "name": "阿里地区", + "id": "542500" + } + ], + "610000": [ + { + "province": "陕西省", + "name": "西安市", + "id": "610100" + }, + { + "province": "陕西省", + "name": "铜川市", + "id": "610200" + }, + { + "province": "陕西省", + "name": "宝鸡市", + "id": "610300" + }, + { + "province": "陕西省", + "name": "咸阳市", + "id": "610400" + }, + { + "province": "陕西省", + "name": "渭南市", + "id": "610500" + }, + { + "province": "陕西省", + "name": "延安市", + "id": "610600" + }, + { + "province": "陕西省", + "name": "汉中市", + "id": "610700" + }, + { + "province": "陕西省", + "name": "榆林市", + "id": "610800" + }, + { + "province": "陕西省", + "name": "安康市", + "id": "610900" + }, + { + "province": "陕西省", + "name": "商洛市", + "id": "611000" + } + ], + "620000": [ + { + "province": "甘肃省", + "name": "兰州市", + "id": "620100" + }, + { + "province": "甘肃省", + "name": "嘉峪关市", + "id": "620200" + }, + { + "province": "甘肃省", + "name": "金昌市", + "id": "620300" + }, + { + "province": "甘肃省", + "name": "白银市", + "id": "620400" + }, + { + "province": "甘肃省", + "name": "天水市", + "id": "620500" + }, + { + "province": "甘肃省", + "name": "武威市", + "id": "620600" + }, + { + "province": "甘肃省", + "name": "张掖市", + "id": "620700" + }, + { + "province": "甘肃省", + "name": "平凉市", + "id": "620800" + }, + { + "province": "甘肃省", + "name": "酒泉市", + "id": "620900" + }, + { + "province": "甘肃省", + "name": "庆阳市", + "id": "621000" + }, + { + "province": "甘肃省", + "name": "定西市", + "id": "621100" + }, + { + "province": "甘肃省", + "name": "陇南市", + "id": "621200" + }, + { + "province": "甘肃省", + "name": "临夏回族自治州", + "id": "622900" + }, + { + "province": "甘肃省", + "name": "甘南藏族自治州", + "id": "623000" + } + ], + "630000": [ + { + "province": "青海省", + "name": "西宁市", + "id": "630100" + }, + { + "province": "青海省", + "name": "海东市", + "id": "630200" + }, + { + "province": "青海省", + "name": "海北藏族自治州", + "id": "632200" + }, + { + "province": "青海省", + "name": "黄南藏族自治州", + "id": "632300" + }, + { + "province": "青海省", + "name": "海南藏族自治州", + "id": "632500" + }, + { + "province": "青海省", + "name": "果洛藏族自治州", + "id": "632600" + }, + { + "province": "青海省", + "name": "玉树藏族自治州", + "id": "632700" + }, + { + "province": "青海省", + "name": "海西蒙古族藏族自治州", + "id": "632800" + } + ], + "640000": [ + { + "province": "宁夏回族自治区", + "name": "银川市", + "id": "640100" + }, + { + "province": "宁夏回族自治区", + "name": "石嘴山市", + "id": "640200" + }, + { + "province": "宁夏回族自治区", + "name": "吴忠市", + "id": "640300" + }, + { + "province": "宁夏回族自治区", + "name": "固原市", + "id": "640400" + }, + { + "province": "宁夏回族自治区", + "name": "中卫市", + "id": "640500" + } + ], + "650000": [ + { + "province": "新疆维吾尔自治区", + "name": "乌鲁木齐市", + "id": "650100" + }, + { + "province": "新疆维吾尔自治区", + "name": "克拉玛依市", + "id": "650200" + }, + { + "province": "新疆维吾尔自治区", + "name": "吐鲁番市", + "id": "650400" + }, + { + "province": "新疆维吾尔自治区", + "name": "哈密市", + "id": "650500" + }, + { + "province": "新疆维吾尔自治区", + "name": "昌吉回族自治州", + "id": "652300" + }, + { + "province": "新疆维吾尔自治区", + "name": "博尔塔拉蒙古自治州", + "id": "652700" + }, + { + "province": "新疆维吾尔自治区", + "name": "巴音郭楞蒙古自治州", + "id": "652800" + }, + { + "province": "新疆维吾尔自治区", + "name": "阿克苏地区", + "id": "652900" + }, + { + "province": "新疆维吾尔自治区", + "name": "克孜勒苏柯尔克孜自治州", + "id": "653000" + }, + { + "province": "新疆维吾尔自治区", + "name": "喀什地区", + "id": "653100" + }, + { + "province": "新疆维吾尔自治区", + "name": "和田地区", + "id": "653200" + }, + { + "province": "新疆维吾尔自治区", + "name": "伊犁哈萨克自治州", + "id": "654000" + }, + { + "province": "新疆维吾尔自治区", + "name": "塔城地区", + "id": "654200" + }, + { + "province": "新疆维吾尔自治区", + "name": "阿勒泰地区", + "id": "654300" + }, + { + "province": "新疆维吾尔自治区", + "name": "自治区直辖县级行政区划", + "id": "659000" + } + ] +} diff --git a/demo/src/pages/account/settings/geographic/province.json b/demo/src/pages/account/settings/geographic/province.json new file mode 100644 index 00000000..910c83f0 --- /dev/null +++ b/demo/src/pages/account/settings/geographic/province.json @@ -0,0 +1,138 @@ +[ + { + "name": "北京市", + "id": "110000" + }, + { + "name": "天津市", + "id": "120000" + }, + { + "name": "河北省", + "id": "130000" + }, + { + "name": "山西省", + "id": "140000" + }, + { + "name": "内蒙古自治区", + "id": "150000" + }, + { + "name": "辽宁省", + "id": "210000" + }, + { + "name": "吉林省", + "id": "220000" + }, + { + "name": "黑龙江省", + "id": "230000" + }, + { + "name": "上海市", + "id": "310000" + }, + { + "name": "江苏省", + "id": "320000" + }, + { + "name": "浙江省", + "id": "330000" + }, + { + "name": "安徽省", + "id": "340000" + }, + { + "name": "福建省", + "id": "350000" + }, + { + "name": "江西省", + "id": "360000" + }, + { + "name": "山东省", + "id": "370000" + }, + { + "name": "河南省", + "id": "410000" + }, + { + "name": "湖北省", + "id": "420000" + }, + { + "name": "湖南省", + "id": "430000" + }, + { + "name": "广东省", + "id": "440000" + }, + { + "name": "广西壮族自治区", + "id": "450000" + }, + { + "name": "海南省", + "id": "460000" + }, + { + "name": "重庆市", + "id": "500000" + }, + { + "name": "四川省", + "id": "510000" + }, + { + "name": "贵州省", + "id": "520000" + }, + { + "name": "云南省", + "id": "530000" + }, + { + "name": "西藏自治区", + "id": "540000" + }, + { + "name": "陕西省", + "id": "610000" + }, + { + "name": "甘肃省", + "id": "620000" + }, + { + "name": "青海省", + "id": "630000" + }, + { + "name": "宁夏回族自治区", + "id": "640000" + }, + { + "name": "新疆维吾尔自治区", + "id": "650000" + }, + { + "name": "台湾省", + "id": "710000" + }, + { + "name": "香港特别行政区", + "id": "810000" + }, + { + "name": "澳门特别行政区", + "id": "820000" + } +] diff --git a/demo/src/pages/account/settings/index.tsx b/demo/src/pages/account/settings/index.tsx new file mode 100644 index 00000000..d5131ec5 --- /dev/null +++ b/demo/src/pages/account/settings/index.tsx @@ -0,0 +1,111 @@ +import React, { useState, useRef, useLayoutEffect } from 'react'; +import { GridContent } from '@ant-design/pro-layout'; +import { Menu } from 'antd'; +import BaseView from './components/base'; +import BindingView from './components/binding'; +import NotificationView from './components/notification'; +import SecurityView from './components/security'; +import styles from './style.less'; + +const { Item } = Menu; + +type SettingsStateKeys = 'base' | 'security' | 'binding' | 'notification'; +type SettingsState = { + mode: 'inline' | 'horizontal'; + selectKey: SettingsStateKeys; +}; + +const Settings: React.FC = () => { + const menuMap: Record = { + base: '基本设置', + security: '安全设置', + binding: '账号绑定', + notification: '新消息通知', + }; + + const [initConfig, setInitConfig] = useState({ + mode: 'inline', + selectKey: 'base', + }); + const dom = useRef(); + + const resize = () => { + requestAnimationFrame(() => { + if (!dom.current) { + return; + } + let mode: 'inline' | 'horizontal' = 'inline'; + const { offsetWidth } = dom.current; + if (dom.current.offsetWidth < 641 && offsetWidth > 400) { + mode = 'horizontal'; + } + if (window.innerWidth < 768 && offsetWidth > 400) { + mode = 'horizontal'; + } + setInitConfig({ ...initConfig, mode: mode as SettingsState['mode'] }); + }); + }; + + useLayoutEffect(() => { + if (dom.current) { + window.addEventListener('resize', resize); + resize(); + } + return () => { + window.removeEventListener('resize', resize); + }; + }, [dom.current]); + + const getMenu = () => { + return Object.keys(menuMap).map((item) => {menuMap[item]}); + }; + + const renderChildren = () => { + const { selectKey } = initConfig; + switch (selectKey) { + case 'base': + return ; + case 'security': + return ; + case 'binding': + return ; + case 'notification': + return ; + default: + return null; + } + }; + + return ( + +
    { + if (ref) { + dom.current = ref; + } + }} + > +
    + { + setInitConfig({ + ...initConfig, + selectKey: key as SettingsStateKeys, + }); + }} + > + {getMenu()} + +
    +
    +
    {menuMap[initConfig.selectKey]}
    + {renderChildren()} +
    +
    +
    + ); +}; +export default Settings; diff --git a/demo/src/pages/account/settings/service.ts b/demo/src/pages/account/settings/service.ts new file mode 100644 index 00000000..e2a6031a --- /dev/null +++ b/demo/src/pages/account/settings/service.ts @@ -0,0 +1,18 @@ +import { request } from 'umi'; +import type { CurrentUser, GeographicItemType } from './data'; + +export async function queryCurrent(): Promise<{ data: CurrentUser }> { + return request('/api/accountSettingCurrentUser'); +} + +export async function queryProvince(): Promise<{ data: GeographicItemType[] }> { + return request('/api/geographic/province'); +} + +export async function queryCity(province: string): Promise<{ data: GeographicItemType[] }> { + return request(`/api/geographic/city/${province}`); +} + +export async function query() { + return request('/api/users'); +} diff --git a/demo/src/pages/account/settings/style.less b/demo/src/pages/account/settings/style.less new file mode 100644 index 00000000..fee54c2d --- /dev/null +++ b/demo/src/pages/account/settings/style.less @@ -0,0 +1,93 @@ +@import '~antd/es/style/themes/default.less'; + +.main { + display: flex; + width: 100%; + height: 100%; + padding-top: 16px; + padding-bottom: 16px; + background-color: @menu-bg; + .leftMenu { + width: 224px; + border-right: @border-width-base @border-style-base @border-color-split; + :global { + .ant-menu-inline { + border: none; + } + .ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected { + font-weight: bold; + } + } + } + .right { + flex: 1; + padding: 8px 40px; + .title { + margin-bottom: 12px; + color: @heading-color; + font-weight: 500; + font-size: 20px; + line-height: 28px; + } + } + :global { + .ant-list-split .ant-list-item:last-child { + border-bottom: 1px solid @border-color-split; + } + .ant-list-item { + padding-top: 14px; + padding-bottom: 14px; + } + } +} +:global { + .ant-list-item-meta { + // 账号绑定图标 + .taobao { + display: block; + color: #ff4000; + font-size: 48px; + line-height: 48px; + border-radius: @border-radius-base; + } + .dingding { + margin: 2px; + padding: 6px; + color: #fff; + font-size: 32px; + line-height: 32px; + background-color: #2eabff; + border-radius: @border-radius-base; + } + .alipay { + color: #2eabff; + font-size: 48px; + line-height: 48px; + border-radius: @border-radius-base; + } + } + + // 密码强度 + font.strong { + color: @success-color; + } + font.medium { + color: @warning-color; + } + font.weak { + color: @error-color; + } +} + +@media screen and (max-width: @screen-md) { + .main { + flex-direction: column; + .leftMenu { + width: 100%; + border: none; + } + .right { + padding: 40px; + } + } +} diff --git a/demo/src/pages/dashboard/analysis/_mock.ts b/demo/src/pages/dashboard/analysis/_mock.ts new file mode 100644 index 00000000..e811c588 --- /dev/null +++ b/demo/src/pages/dashboard/analysis/_mock.ts @@ -0,0 +1,210 @@ +import moment from 'moment'; +import type { Request, Response } from 'express'; +import type { AnalysisData, RadarData, DataItem } from './data.d'; + +// mock data +const visitData: DataItem[] = []; +const beginDay = new Date().getTime(); + +const fakeY = [7, 5, 4, 2, 4, 7, 5, 6, 5, 9, 6, 3, 1, 5, 3, 6, 5]; +for (let i = 0; i < fakeY.length; i += 1) { + visitData.push({ + x: moment(new Date(beginDay + 1000 * 60 * 60 * 24 * i)).format('YYYY-MM-DD'), + y: fakeY[i], + }); +} + +const visitData2 = []; +const fakeY2 = [1, 6, 4, 8, 3, 7, 2]; +for (let i = 0; i < fakeY2.length; i += 1) { + visitData2.push({ + x: moment(new Date(beginDay + 1000 * 60 * 60 * 24 * i)).format('YYYY-MM-DD'), + y: fakeY2[i], + }); +} + +const salesData = []; +for (let i = 0; i < 12; i += 1) { + salesData.push({ + x: `${i + 1}月`, + y: Math.floor(Math.random() * 1000) + 200, + }); +} +const searchData = []; +for (let i = 0; i < 50; i += 1) { + searchData.push({ + index: i + 1, + keyword: `搜索关键词-${i}`, + count: Math.floor(Math.random() * 1000), + range: Math.floor(Math.random() * 100), + status: Math.floor((Math.random() * 10) % 2), + }); +} +const salesTypeData = [ + { + x: '家用电器', + y: 4544, + }, + { + x: '食用酒水', + y: 3321, + }, + { + x: '个护健康', + y: 3113, + }, + { + x: '服饰箱包', + y: 2341, + }, + { + x: '母婴产品', + y: 1231, + }, + { + x: '其他', + y: 1231, + }, +]; + +const salesTypeDataOnline = [ + { + x: '家用电器', + y: 244, + }, + { + x: '食用酒水', + y: 321, + }, + { + x: '个护健康', + y: 311, + }, + { + x: '服饰箱包', + y: 41, + }, + { + x: '母婴产品', + y: 121, + }, + { + x: '其他', + y: 111, + }, +]; + +const salesTypeDataOffline = [ + { + x: '家用电器', + y: 99, + }, + { + x: '食用酒水', + y: 188, + }, + { + x: '个护健康', + y: 344, + }, + { + x: '服饰箱包', + y: 255, + }, + { + x: '其他', + y: 65, + }, +]; + +const offlineData = []; +for (let i = 0; i < 10; i += 1) { + offlineData.push({ + name: `Stores ${i}`, + cvr: Math.ceil(Math.random() * 9) / 10, + }); +} +const offlineChartData = []; +for (let i = 0; i < 20; i += 1) { + const date = moment(new Date().getTime() + 1000 * 60 * 30 * i).format('HH:mm'); + offlineChartData.push({ + date, + type: '客流量', + value: Math.floor(Math.random() * 100) + 10, + }); + offlineChartData.push({ + date, + type: '支付笔数', + value: Math.floor(Math.random() * 100) + 10, + }); +} + +const radarOriginData = [ + { + name: '个人', + ref: 10, + koubei: 8, + output: 4, + contribute: 5, + hot: 7, + }, + { + name: '团队', + ref: 3, + koubei: 9, + output: 6, + contribute: 3, + hot: 1, + }, + { + name: '部门', + ref: 4, + koubei: 1, + output: 6, + contribute: 5, + hot: 7, + }, +]; + +const radarData: RadarData[] = []; +const radarTitleMap = { + ref: '引用', + koubei: '口碑', + output: '产量', + contribute: '贡献', + hot: '热度', +}; +radarOriginData.forEach((item) => { + Object.keys(item).forEach((key) => { + if (key !== 'name') { + radarData.push({ + name: item.name, + label: radarTitleMap[key], + value: item[key], + }); + } + }); +}); + +const getFakeChartData: AnalysisData = { + visitData, + visitData2, + salesData, + searchData, + offlineData, + offlineChartData, + salesTypeData, + salesTypeDataOnline, + salesTypeDataOffline, + radarData, +}; + +const fakeChartData = (_: Request, res: Response) => { + return res.json({ + data: getFakeChartData, + }); +}; + +export default { + 'GET /api/fake_analysis_chart_data': fakeChartData, +}; diff --git a/demo/src/pages/dashboard/analysis/components/Charts/Bar/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/Bar/index.tsx new file mode 100644 index 00000000..c2650fff --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/Charts/Bar/index.tsx @@ -0,0 +1,133 @@ +import { Axis, Chart, Geom, Tooltip } from 'bizcharts'; +import React, { Component } from 'react'; + +import Debounce from 'lodash.debounce'; +import autoHeight from '../autoHeight'; +import styles from '../index.less'; + +export type BarProps = { + title: React.ReactNode; + color?: string; + padding?: [number, number, number, number]; + height?: number; + data: { + x: string; + y: number; + }[]; + forceFit?: boolean; + autoLabel?: boolean; + style?: React.CSSProperties; +}; + +class Bar extends Component< + BarProps, + { + autoHideXLabels: boolean; + } +> { + state = { + autoHideXLabels: false, + }; + + root: HTMLDivElement | undefined = undefined; + + node: HTMLDivElement | undefined = undefined; + + resize = Debounce(() => { + if (!this.node || !this.node.parentNode) { + return; + } + const canvasWidth = (this.node.parentNode as HTMLDivElement).clientWidth; + const { data = [], autoLabel = true } = this.props; + if (!autoLabel) { + return; + } + const minWidth = data.length * 30; + const { autoHideXLabels } = this.state; + + if (canvasWidth <= minWidth) { + if (!autoHideXLabels) { + this.setState({ + autoHideXLabels: true, + }); + } + } else if (autoHideXLabels) { + this.setState({ + autoHideXLabels: false, + }); + } + }, 500); + + componentDidMount() { + window.addEventListener('resize', this.resize, { passive: true }); + } + + componentWillUnmount() { + window.removeEventListener('resize', this.resize); + } + + handleRoot = (n: HTMLDivElement) => { + this.root = n; + }; + + handleRef = (n: HTMLDivElement) => { + this.node = n; + }; + + render() { + const { + height = 1, + title, + forceFit = true, + data, + color = 'rgba(24, 144, 255, 0.85)', + padding, + } = this.props; + + const { autoHideXLabels } = this.state; + + const scale = { + x: { + type: 'cat', + }, + y: { + min: 0, + }, + }; + + const tooltip: [string, (...args: any[]) => { name?: string; value: string }] = [ + 'x*y', + (x: string, y: string) => ({ + name: x, + value: y, + }), + ]; + + return ( +
    +
    + {title &&

    {title}

    } + + + + + + +
    +
    + ); + } +} + +export default autoHeight()(Bar); diff --git a/demo/src/pages/dashboard/analysis/components/Charts/ChartCard/index.less b/demo/src/pages/dashboard/analysis/components/Charts/ChartCard/index.less new file mode 100644 index 00000000..d7bf6dda --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/Charts/ChartCard/index.less @@ -0,0 +1,75 @@ +@import '~antd/es/style/themes/default.less'; + +.chartCard { + position: relative; + .chartTop { + position: relative; + width: 100%; + overflow: hidden; + } + .chartTopMargin { + margin-bottom: 12px; + } + .chartTopHasMargin { + margin-bottom: 20px; + } + .metaWrap { + float: left; + } + .avatar { + position: relative; + top: 4px; + float: left; + margin-right: 20px; + img { + border-radius: 100%; + } + } + .meta { + height: 22px; + color: @text-color-secondary; + font-size: @font-size-base; + line-height: 22px; + } + .action { + position: absolute; + top: 4px; + right: 0; + line-height: 1; + cursor: pointer; + } + .total { + height: 38px; + margin-top: 4px; + margin-bottom: 0; + overflow: hidden; + color: @heading-color; + font-size: 30px; + line-height: 38px; + white-space: nowrap; + text-overflow: ellipsis; + word-break: break-all; + } + .content { + position: relative; + width: 100%; + margin-bottom: 12px; + } + .contentFixed { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + } + .footer { + margin-top: 8px; + padding-top: 9px; + border-top: 1px solid @border-color-split; + & > * { + position: relative; + } + } + .footerMargin { + margin-top: 20px; + } +} diff --git a/demo/src/pages/dashboard/analysis/components/Charts/ChartCard/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/ChartCard/index.tsx new file mode 100644 index 00000000..e860582d --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/Charts/ChartCard/index.tsx @@ -0,0 +1,97 @@ +import { Card } from 'antd'; +import type { CardProps } from 'antd/es/card'; +import React from 'react'; +import classNames from 'classnames'; +import styles from './index.less'; + +type totalType = () => React.ReactNode; + +const renderTotal = (total?: number | totalType | React.ReactNode) => { + if (!total && total !== 0) { + return null; + } + let totalDom; + switch (typeof total) { + case 'undefined': + totalDom = null; + break; + case 'function': + totalDom =
    {total()}
    ; + break; + default: + totalDom =
    {total}
    ; + } + return totalDom; +}; + +export type ChartCardProps = { + title: React.ReactNode; + action?: React.ReactNode; + total?: React.ReactNode | number | (() => React.ReactNode | number); + footer?: React.ReactNode; + contentHeight?: number; + avatar?: React.ReactNode; + style?: React.CSSProperties; +} & CardProps; + +class ChartCard extends React.Component { + renderContent = () => { + const { contentHeight, title, avatar, action, total, footer, children, loading } = this.props; + if (loading) { + return false; + } + return ( +
    +
    +
    {avatar}
    +
    +
    + {title} + {action} +
    + {renderTotal(total)} +
    +
    + {children && ( +
    +
    {children}
    +
    + )} + {footer && ( +
    + {footer} +
    + )} +
    + ); + }; + + render() { + const { + loading = false, + contentHeight, + title, + avatar, + action, + total, + footer, + children, + ...rest + } = this.props; + return ( + + {this.renderContent()} + + ); + } +} + +export default ChartCard; diff --git a/demo/src/pages/dashboard/analysis/components/Charts/Field/index.less b/demo/src/pages/dashboard/analysis/components/Charts/Field/index.less new file mode 100644 index 00000000..4fe0d1f6 --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/Charts/Field/index.less @@ -0,0 +1,17 @@ +@import '~antd/es/style/themes/default.less'; + +.field { + margin: 0; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + .label, + .number { + font-size: @font-size-base; + line-height: 22px; + } + .number { + margin-left: 8px; + color: @heading-color; + } +} diff --git a/demo/src/pages/dashboard/analysis/components/Charts/Field/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/Field/index.tsx new file mode 100644 index 00000000..a6fb64a9 --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/Charts/Field/index.tsx @@ -0,0 +1,17 @@ +import React from 'react'; +import styles from './index.less'; + +export type FieldProps = { + label: React.ReactNode; + value: React.ReactNode; + style?: React.CSSProperties; +}; + +const Field: React.FC = ({ label, value, ...rest }) => ( +
    + {label} + {value} +
    +); + +export default Field; diff --git a/demo/src/pages/dashboard/analysis/components/Charts/Gauge/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/Gauge/index.tsx new file mode 100644 index 00000000..b3e5047a --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/Charts/Gauge/index.tsx @@ -0,0 +1,179 @@ +import { Axis, Chart, Coord, Geom, Guide, Shape } from 'bizcharts'; + +import React from 'react'; +import autoHeight from '../autoHeight'; + +const { Arc, Html, Line } = Guide; + +export type GaugeProps = { + title: React.ReactNode; + color?: string; + height?: number; + bgColor?: number; + percent: number; + forceFit?: boolean; + style?: React.CSSProperties; + formatter: (value: string) => string; +}; + +const defaultFormatter = (val: string): string => { + switch (val) { + case '2': + return '差'; + case '4': + return '中'; + case '6': + return '良'; + case '8': + return '优'; + default: + return ''; + } +}; + +if (Shape.registerShape) { + Shape.registerShape('point', 'pointer', { + drawShape(cfg: any, group: any) { + let point = cfg.points[0]; + point = (this as any).parsePoint(point); + const center = (this as any).parsePoint({ + x: 0, + y: 0, + }); + group.addShape('line', { + attrs: { + x1: center.x, + y1: center.y, + x2: point.x, + y2: point.y, + stroke: cfg.color, + lineWidth: 2, + lineCap: 'round', + }, + }); + return group.addShape('circle', { + attrs: { + x: center.x, + y: center.y, + r: 6, + stroke: cfg.color, + lineWidth: 3, + fill: '#fff', + }, + }); + }, + }); +} + +const Gauge: React.FC = (props) => { + const { + title, + height = 1, + percent, + forceFit = true, + formatter = defaultFormatter, + color = '#2F9CFF', + bgColor = '#F0F2F5', + } = props; + const cols = { + value: { + type: 'linear', + min: 0, + max: 10, + tickCount: 6, + nice: true, + }, + }; + const data = [{ value: percent / 10 }]; + const renderHtml = () => ` +
    +
    ${title}
    +
    + ${(data[0].value * 10).toFixed(2)}% +
    +
    `; + const textStyle: { + fontSize: number; + fill: string; + textAlign: 'center'; + } = { + fontSize: 12, + fill: 'rgba(0, 0, 0, 0.65)', + textAlign: 'center', + }; + + return ( + + + + + + + + + + + + + + + ); +}; + +export default autoHeight()(Gauge); diff --git a/demo/src/pages/dashboard/analysis/components/Charts/MiniArea/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/MiniArea/index.tsx new file mode 100644 index 00000000..5b20ae85 --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/Charts/MiniArea/index.tsx @@ -0,0 +1,131 @@ +import type { AxisProps } from 'bizcharts'; +import { Axis, Chart, Geom, Tooltip } from 'bizcharts'; + +import React from 'react'; +import autoHeight from '../autoHeight'; +import styles from '../index.less'; + +export type MiniAreaProps = { + color?: string; + height?: number; + borderColor?: string; + line?: boolean; + animate?: boolean; + xAxis?: AxisProps; + forceFit?: boolean; + scale?: { + x?: { + tickCount: number; + }; + y?: { + tickCount: number; + }; + }; + yAxis?: Partial; + borderWidth?: number; + data: { + x: number | string; + y: number; + }[]; +}; + +const MiniArea: React.FC = (props) => { + const { + height = 1, + data = [], + forceFit = true, + color = 'rgba(24, 144, 255, 0.2)', + borderColor = '#1089ff', + scale = { x: {}, y: {} }, + borderWidth = 2, + line, + xAxis, + yAxis, + animate = true, + } = props; + + const padding: [number, number, number, number] = [36, 5, 30, 5]; + + const scaleProps = { + x: { + type: 'cat', + range: [0, 1], + ...scale.x, + }, + y: { + min: 0, + ...scale.y, + }, + }; + + const tooltip: [string, (...args: any[]) => { name?: string; value: string }] = [ + 'x*y', + (x: string, y: string) => ({ + name: x, + value: y, + }), + ]; + + const chartHeight = height + 54; + + return ( +
    +
    + {height > 0 && ( + + + + + + {line ? ( + + ) : ( + + )} + + )} +
    +
    + ); +}; + +export default autoHeight()(MiniArea); diff --git a/demo/src/pages/dashboard/analysis/components/Charts/MiniBar/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/MiniBar/index.tsx new file mode 100644 index 00000000..46be2760 --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/Charts/MiniBar/index.tsx @@ -0,0 +1,54 @@ +import { Chart, Geom, Tooltip } from 'bizcharts'; + +import React from 'react'; +import autoHeight from '../autoHeight'; +import styles from '../index.less'; + +export type MiniBarProps = { + color?: string; + height?: number; + data: { + x: number | string; + y: number; + }[]; + forceFit?: boolean; + style?: React.CSSProperties; +}; + +const MiniBar: React.FC = (props) => { + const { height = 0, forceFit = true, color = '#1890FF', data = [] } = props; + + const scale = { + x: { + type: 'cat', + }, + y: { + min: 0, + }, + }; + + const padding: [number, number, number, number] = [36, 5, 30, 5]; + + const tooltip: [string, (...args: any[]) => { name?: string; value: string }] = [ + 'x*y', + (x: string, y: string) => ({ + name: x, + value: y, + }), + ]; + + // for tooltip not to be hide + const chartHeight = height + 54; + + return ( +
    +
    + + + + +
    +
    + ); +}; +export default autoHeight()(MiniBar); diff --git a/demo/src/pages/dashboard/analysis/components/Charts/MiniProgress/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/MiniProgress/index.tsx new file mode 100644 index 00000000..ad0a2d2e --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/Charts/MiniProgress/index.tsx @@ -0,0 +1,41 @@ +import React from 'react'; +import { Tooltip } from 'antd'; +import styles from './index.less'; + +export type MiniProgressProps = { + target: number; + targetLabel?: string; + color?: string; + strokeWidth?: number; + percent?: number; + style?: React.CSSProperties; +}; + +const MiniProgress: React.FC = ({ + targetLabel, + target, + color = 'rgb(19, 194, 194)', + strokeWidth, + percent, +}) => ( +
    + +
    + + +
    +
    +
    +
    +
    +
    +); + +export default MiniProgress; diff --git a/demo/src/pages/dashboard/analysis/components/Charts/Pie/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/Pie/index.tsx new file mode 100644 index 00000000..e996c1e3 --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/Charts/Pie/index.tsx @@ -0,0 +1,309 @@ +import { Chart, Coord, Geom, Tooltip } from 'bizcharts'; +import React, { Component } from 'react'; + +import { DataView } from '@antv/data-set'; +import Debounce from 'lodash.debounce'; +import { Divider } from 'antd'; +import ReactFitText from 'react-fittext'; +import classNames from 'classnames'; +import autoHeight from '../autoHeight'; +import styles from './index.less'; + +export type PieProps = { + animate?: boolean; + color?: string; + colors?: string[]; + selected?: boolean; + height?: number; + margin?: [number, number, number, number]; + hasLegend?: boolean; + padding?: [number, number, number, number]; + percent?: number; + data?: { + x: string | string; + y: number; + }[]; + inner?: number; + lineWidth?: number; + forceFit?: boolean; + style?: React.CSSProperties; + className?: string; + total?: React.ReactNode | number | (() => React.ReactNode | number); + title?: React.ReactNode; + tooltip?: boolean; + valueFormat?: (value: string) => string | React.ReactNode; + subTitle?: React.ReactNode; +}; +type PieState = { + legendData: { checked: boolean; x: string; color: string; percent: number; y: string }[]; + legendBlock: boolean; +}; +class Pie extends Component { + state: PieState = { + legendData: [], + legendBlock: false, + }; + + requestRef: number | undefined = undefined; + + root: HTMLDivElement | undefined = undefined; + + chart: G2.Chart | undefined = undefined; + + // for window resize auto responsive legend + resize = Debounce(() => { + const { hasLegend } = this.props; + const { legendBlock } = this.state; + if (!hasLegend || !this.root) { + window.removeEventListener('resize', this.resize); + return; + } + if ( + this.root && + this.root.parentNode && + (this.root.parentNode as HTMLElement).clientWidth <= 380 + ) { + if (!legendBlock) { + this.setState({ + legendBlock: true, + }); + } + } else if (legendBlock) { + this.setState({ + legendBlock: false, + }); + } + }, 400); + + componentDidMount() { + window.addEventListener( + 'resize', + () => { + this.requestRef = requestAnimationFrame(() => this.resize()); + }, + { passive: true }, + ); + } + + componentDidUpdate(preProps: PieProps) { + const { data } = this.props; + if (data !== preProps.data) { + // because of charts data create when rendered + // so there is a trick for get rendered time + this.getLegendData(); + } + } + + componentWillUnmount() { + if (this.requestRef) { + window.cancelAnimationFrame(this.requestRef); + } + window.removeEventListener('resize', this.resize); + if (this.resize) { + (this.resize as any).cancel(); + } + } + + getG2Instance = (chart: G2.Chart) => { + this.chart = chart; + requestAnimationFrame(() => { + this.getLegendData(); + this.resize(); + }); + }; + + // for custom lengend view + getLegendData = () => { + if (!this.chart) return; + const geom = this.chart.getAllGeoms()[0]; // 获取所有的图形 + if (!geom) return; + const items = (geom as any).get('dataArray') || []; // 获取图形对应的 + + const legendData = items.map((item: { color: any; _origin: any }[]) => { + /* eslint no-underscore-dangle:0 */ + const origin = item[0]._origin; + origin.color = item[0].color; + origin.checked = true; + return origin; + }); + + this.setState({ + legendData, + }); + }; + + handleRoot = (n: HTMLDivElement) => { + this.root = n; + }; + + handleLegendClick = (item: any, i: string | number) => { + const newItem = item; + newItem.checked = !newItem.checked; + + const { legendData } = this.state; + legendData[i] = newItem; + + const filteredLegendData = legendData.filter((l) => l.checked).map((l) => l.x); + + if (this.chart) { + this.chart.filter('x', (val) => filteredLegendData.indexOf(`${val}`) > -1); + } + + this.setState({ + legendData, + }); + }; + + render() { + const { + valueFormat, + subTitle, + total, + hasLegend = false, + className, + style, + height = 0, + forceFit = true, + percent, + color, + inner = 0.75, + animate = true, + colors, + lineWidth = 1, + } = this.props; + + const { legendData, legendBlock } = this.state; + const pieClassName = classNames(styles.pie, className, { + [styles.hasLegend]: !!hasLegend, + [styles.legendBlock]: legendBlock, + }); + + const { + data: propsData, + selected: propsSelected = true, + tooltip: propsTooltip = true, + } = this.props; + + let data = propsData || []; + let selected = propsSelected; + let tooltip = propsTooltip; + + const defaultColors = colors; + data = data || []; + selected = selected || true; + tooltip = tooltip || true; + let formatColor; + + const scale = { + x: { + type: 'cat', + range: [0, 1], + }, + y: { + min: 0, + }, + }; + + if (percent || percent === 0) { + selected = false; + tooltip = false; + formatColor = (value: string) => { + if (value === '占比') { + return color || 'rgba(24, 144, 255, 0.85)'; + } + return '#F0F2F5'; + }; + + data = [ + { + x: '占比', + y: parseFloat(`${percent}`), + }, + { + x: '反比', + y: 100 - parseFloat(`${percent}`), + }, + ]; + } + + const tooltipFormat: [string, (...args: any[]) => { name?: string; value: string }] = [ + 'x*percent', + (x: string, p: number) => ({ + name: x, + value: `${(p * 100).toFixed(2)}%`, + }), + ]; + + const padding = [12, 0, 12, 0] as [number, number, number, number]; + + const dv = new DataView(); + dv.source(data).transform({ + type: 'percent', + field: 'y', + dimension: 'x', + as: 'percent', + }); + + return ( +
    + +
    + + {!!tooltip && } + + + + + {(subTitle || total) && ( +
    + {subTitle &&

    {subTitle}

    } + {/* eslint-disable-next-line */} + {total && ( +
    {typeof total === 'function' ? total() : total}
    + )} +
    + )} +
    +
    + + {hasLegend && ( +
      + {legendData.map((item, i) => ( +
    • this.handleLegendClick(item, i)}> + + {item.x} + + + {`${(Number.isNaN(item.percent) ? 0 : item.percent * 100).toFixed(2)}%`} + + {valueFormat ? valueFormat(item.y) : item.y} +
    • + ))} +
    + )} +
    + ); + } +} + +export default autoHeight()(Pie); diff --git a/demo/src/pages/dashboard/analysis/components/Charts/TagCloud/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/TagCloud/index.tsx new file mode 100644 index 00000000..56e8df47 --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/Charts/TagCloud/index.tsx @@ -0,0 +1,212 @@ +import { Chart, Coord, Geom, Shape, Tooltip } from 'bizcharts'; +import React, { Component } from 'react'; + +import DataSet from '@antv/data-set'; +import Debounce from 'lodash.debounce'; +import classNames from 'classnames'; +import autoHeight from '../autoHeight'; +import styles from './index.less'; + +/* eslint no-underscore-dangle: 0 */ +/* eslint no-param-reassign: 0 */ + +const imgUrl = 'https://gw.alipayobjects.com/zos/rmsportal/gWyeGLCdFFRavBGIDzWk.png'; + +export type TagCloudProps = { + data: { + name: string; + value: number; + }[]; + height?: number; + className?: string; + style?: React.CSSProperties; +}; + +type TagCloudState = { + dv: any; + height?: number; + width: number; +}; + +class TagCloud extends Component { + state = { + dv: null, + height: 0, + width: 0, + }; + + isUnmount: boolean = false; + + requestRef: number = 0; + + root: HTMLDivElement | undefined = undefined; + + imageMask: HTMLImageElement | undefined = undefined; + + componentDidMount() { + requestAnimationFrame(() => { + this.initTagCloud(); + this.renderChart(this.props); + }); + window.addEventListener('resize', this.resize, { passive: true }); + } + + componentDidUpdate(preProps?: TagCloudProps) { + const { data } = this.props; + if (preProps && JSON.stringify(preProps.data) !== JSON.stringify(data)) { + this.renderChart(this.props); + } + } + + componentWillUnmount() { + this.isUnmount = true; + window.cancelAnimationFrame(this.requestRef); + window.removeEventListener('resize', this.resize); + } + + resize = () => { + this.requestRef = requestAnimationFrame(() => { + this.renderChart(this.props); + }); + }; + + saveRootRef = (node: HTMLDivElement) => { + this.root = node; + }; + + initTagCloud = () => { + function getTextAttrs(cfg: { + x?: any; + y?: any; + style?: any; + opacity?: any; + origin?: any; + color?: any; + }) { + return { + ...cfg.style, + fillOpacity: cfg.opacity, + fontSize: cfg.origin._origin.size, + rotate: cfg.origin._origin.rotate, + text: cfg.origin._origin.text, + textAlign: 'center', + fontFamily: cfg.origin._origin.font, + fill: cfg.color, + textBaseline: 'Alphabetic', + }; + } + + (Shape as any).registerShape('point', 'cloud', { + drawShape( + cfg: { x: any; y: any }, + container: { addShape: (arg0: string, arg1: { attrs: any }) => void }, + ) { + const attrs = getTextAttrs(cfg); + return container.addShape('text', { + attrs: { + ...attrs, + x: cfg.x, + y: cfg.y, + }, + }); + }, + }); + }; + + renderChart = Debounce((nextProps: TagCloudProps) => { + // const colors = ['#1890FF', '#41D9C7', '#2FC25B', '#FACC14', '#9AE65C']; + const { data, height } = nextProps || this.props; + + if (data.length < 1 || !this.root) { + return; + } + + const h = height; + const w = this.root.offsetWidth; + + const onload = () => { + const dv = new DataSet.View().source(data); + const range = dv.range('value'); + const [min, max] = range; + dv.transform({ + type: 'tag-cloud', + fields: ['name', 'value'], + imageMask: this.imageMask, + font: 'Verdana', + size: [w, h], // 宽高设置最好根据 imageMask 做调整 + padding: 0, + timeInterval: 5000, // max execute time + rotate() { + return 0; + }, + fontSize(d: { value: number }) { + const size = ((d.value - min) / (max - min)) ** 2; + return size * (17.5 - 5) + 5; + }, + }); + + if (this.isUnmount) { + return; + } + + this.setState({ + dv, + width: w, + height: h, + }); + }; + + if (!this.imageMask) { + this.imageMask = new Image(); + this.imageMask.crossOrigin = ''; + this.imageMask.src = imgUrl; + + this.imageMask.onload = onload; + } else { + onload(); + } + }, 500); + + render() { + const { className, height } = this.props; + const { dv, width, height: stateHeight } = this.state; + + return ( +
    + {dv && ( + + + + + + )} +
    + ); + } +} + +export default autoHeight()(TagCloud); diff --git a/demo/src/pages/dashboard/analysis/components/Charts/TimelineChart/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/TimelineChart/index.tsx new file mode 100644 index 00000000..fa17bfa7 --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/Charts/TimelineChart/index.tsx @@ -0,0 +1,132 @@ +import { Axis, Chart, Geom, Legend, Tooltip } from 'bizcharts'; + +import DataSet from '@antv/data-set'; +import React from 'react'; +import Slider from 'bizcharts-plugin-slider'; +import autoHeight from '../autoHeight'; +import styles from './index.less'; + +export type TimelineChartProps = { + data: { + x: number; + y1: number; + y2: number; + }[]; + title?: string; + titleMap: { y1: string; y2: string }; + padding?: [number, number, number, number]; + height?: number; + style?: React.CSSProperties; + borderWidth?: number; +}; + +const TimelineChart: React.FC = (props) => { + const { + title, + height = 400, + padding = [60, 20, 40, 40] as [number, number, number, number], + titleMap = { + y1: 'y1', + y2: 'y2', + }, + borderWidth = 2, + data: sourceData, + } = props; + + const data = Array.isArray(sourceData) ? sourceData : [{ x: 0, y1: 0, y2: 0 }]; + + data.sort((a, b) => a.x - b.x); + + let max; + if (data[0] && data[0].y1 && data[0].y2) { + max = Math.max( + [...data].sort((a, b) => b.y1 - a.y1)[0].y1, + [...data].sort((a, b) => b.y2 - a.y2)[0].y2, + ); + } + + const ds = new DataSet({ + state: { + start: data[0].x, + end: data[data.length - 1].x, + }, + }); + + const dv = ds.createView(); + dv.source(data) + .transform({ + type: 'filter', + callback: (obj: { x: string }) => { + const date = obj.x; + return date <= ds.state.end && date >= ds.state.start; + }, + }) + .transform({ + type: 'map', + callback(row: { y1: string; y2: string }) { + const newRow = { ...row }; + newRow[titleMap.y1] = row.y1; + newRow[titleMap.y2] = row.y2; + return newRow; + }, + }) + .transform({ + type: 'fold', + fields: [titleMap.y1, titleMap.y2], // 展开字段集 + key: 'key', // key字段 + value: 'value', // value字段 + }); + + const timeScale = { + type: 'time', + tickInterval: 60 * 60 * 1000, + mask: 'HH:mm', + range: [0, 1], + }; + + const cols = { + x: timeScale, + value: { + max, + min: 0, + }, + }; + + const SliderGen = () => ( + { + ds.setState('start', startValue); + ds.setState('end', endValue); + }} + /> + ); + + return ( +
    +
    + {title &&

    {title}

    } + + + + + + +
    + +
    +
    +
    + ); +}; + +export default autoHeight()(TimelineChart); diff --git a/demo/src/pages/dashboard/analysis/components/Charts/WaterWave/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/WaterWave/index.tsx new file mode 100644 index 00000000..a9b64110 --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/Charts/WaterWave/index.tsx @@ -0,0 +1,235 @@ +import React, { Component } from 'react'; + +import autoHeight from '../autoHeight'; +import styles from './index.less'; + +/* eslint no-return-assign: 0 */ +/* eslint no-mixed-operators: 0 */ +// riddle: https://riddle.alibaba-inc.com/riddles/2d9a4b90 + +export type WaterWaveProps = { + title: React.ReactNode; + color?: string; + height?: number; + percent: number; + style?: React.CSSProperties; +}; + +class WaterWave extends Component { + state = { + radio: 1, + }; + + timer: number = 0; + + root: HTMLDivElement | undefined | null = null; + + node: HTMLCanvasElement | undefined | null = null; + + componentDidMount() { + this.renderChart(); + this.resize(); + window.addEventListener( + 'resize', + () => { + requestAnimationFrame(() => this.resize()); + }, + { passive: true }, + ); + } + + componentDidUpdate(props: WaterWaveProps) { + const { percent } = this.props; + if (props.percent !== percent) { + // 不加这个会造成绘制缓慢 + this.renderChart('update'); + } + } + + componentWillUnmount() { + cancelAnimationFrame(this.timer); + if (this.node) { + this.node.innerHTML = ''; + } + window.removeEventListener('resize', this.resize); + } + + resize = () => { + if (this.root) { + const { height = 1 } = this.props; + const { offsetWidth } = this.root.parentNode as HTMLElement; + this.setState({ + radio: offsetWidth < height ? offsetWidth / height : 1, + }); + } + }; + + renderChart(type?: string) { + const { percent, color = '#1890FF' } = this.props; + const data = percent / 100; + cancelAnimationFrame(this.timer); + + if (!this.node || (data !== 0 && !data)) { + return; + } + + const canvas = this.node; + const ctx = canvas.getContext('2d'); + if (!ctx) { + return; + } + const canvasWidth = canvas.width; + const canvasHeight = canvas.height; + const radius = canvasWidth / 2; + const lineWidth = 2; + const cR = radius - lineWidth; + + ctx.beginPath(); + ctx.lineWidth = lineWidth * 2; + + const axisLength = canvasWidth - lineWidth; + const unit = axisLength / 8; + const range = 0.2; // 振幅 + let currRange = range; + const xOffset = lineWidth; + let sp = 0; // 周期偏移量 + let currData = 0; + const waveupsp = 0.005; // 水波上涨速度 + + let arcStack: number[][] = []; + const bR = radius - lineWidth; + const circleOffset = -(Math.PI / 2); + let circleLock = true; + + for (let i = circleOffset; i < circleOffset + 2 * Math.PI; i += 1 / (8 * Math.PI)) { + arcStack.push([radius + bR * Math.cos(i), radius + bR * Math.sin(i)]); + } + + const cStartPoint = arcStack.shift() as number[]; + ctx.strokeStyle = color; + ctx.moveTo(cStartPoint[0], cStartPoint[1]); + + const drawSin = () => { + if (!ctx) { + return; + } + ctx.beginPath(); + ctx.save(); + + const sinStack = []; + for (let i = xOffset; i <= xOffset + axisLength; i += 20 / axisLength) { + const x = sp + (xOffset + i) / unit; + const y = Math.sin(x) * currRange; + const dx = i; + const dy = 2 * cR * (1 - currData) + (radius - cR) - unit * y; + + ctx.lineTo(dx, dy); + sinStack.push([dx, dy]); + } + + const startPoint = sinStack.shift() as number[]; + + ctx.lineTo(xOffset + axisLength, canvasHeight); + ctx.lineTo(xOffset, canvasHeight); + ctx.lineTo(startPoint[0], startPoint[1]); + + const gradient = ctx.createLinearGradient(0, 0, 0, canvasHeight); + gradient.addColorStop(0, '#ffffff'); + gradient.addColorStop(1, color); + ctx.fillStyle = gradient; + ctx.fill(); + ctx.restore(); + }; + + const render = () => { + if (!ctx) { + return; + } + ctx.clearRect(0, 0, canvasWidth, canvasHeight); + if (circleLock && type !== 'update') { + if (arcStack.length) { + const temp = arcStack.shift() as number[]; + ctx.lineTo(temp[0], temp[1]); + ctx.stroke(); + } else { + circleLock = false; + ctx.lineTo(cStartPoint[0], cStartPoint[1]); + ctx.stroke(); + arcStack = []; + + ctx.globalCompositeOperation = 'destination-over'; + ctx.beginPath(); + ctx.lineWidth = lineWidth; + ctx.arc(radius, radius, bR, 0, 2 * Math.PI, true); + + ctx.beginPath(); + ctx.save(); + ctx.arc(radius, radius, radius - 3 * lineWidth, 0, 2 * Math.PI, true); + + ctx.restore(); + ctx.clip(); + ctx.fillStyle = color; + } + } else { + if (data >= 0.85) { + if (currRange > range / 4) { + const t = range * 0.01; + currRange -= t; + } + } else if (data <= 0.1) { + if (currRange < range * 1.5) { + const t = range * 0.01; + currRange += t; + } + } else { + if (currRange <= range) { + const t = range * 0.01; + currRange += t; + } + if (currRange >= range) { + const t = range * 0.01; + currRange -= t; + } + } + if (data - currData > 0) { + currData += waveupsp; + } + if (data - currData < 0) { + currData -= waveupsp; + } + + sp += 0.07; + drawSin(); + } + this.timer = requestAnimationFrame(render); + }; + render(); + } + + render() { + const { radio } = this.state; + const { percent, title, height = 1 } = this.props; + return ( +
    (this.root = n)} + style={{ transform: `scale(${radio})` }} + > +
    + (this.node = n)} + width={height * 2} + height={height * 2} + /> +
    +
    + {title && {title}} +

    {percent}%

    +
    +
    + ); + } +} + +export default autoHeight()(WaterWave); diff --git a/demo/src/pages/dashboard/analysis/components/Charts/autoHeight.tsx b/demo/src/pages/dashboard/analysis/components/Charts/autoHeight.tsx new file mode 100644 index 00000000..5ec7bf39 --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/Charts/autoHeight.tsx @@ -0,0 +1,79 @@ +import React from 'react'; + +export type IReactComponent

    = + | React.StatelessComponent

    + | React.ComponentClass

    + | React.ClassicComponentClass

    ; + +function computeHeight(node: HTMLDivElement) { + const { style } = node; + style.height = '100%'; + const totalHeight = parseInt(`${getComputedStyle(node).height}`, 10); + const padding = + parseInt(`${getComputedStyle(node).paddingTop}`, 10) + + parseInt(`${getComputedStyle(node).paddingBottom}`, 10); + return totalHeight - padding; +} + +function getAutoHeight(n: HTMLDivElement | undefined) { + if (!n) { + return 0; + } + + const node = n; + + let height = computeHeight(node); + const parentNode = node.parentNode as HTMLDivElement; + if (parentNode) { + height = computeHeight(parentNode); + } + + return height; +} + +type AutoHeightProps = { + height?: number; +}; + +function autoHeight() { + return

    ( + WrappedComponent: React.ComponentClass

    | React.FC

    , + ): React.ComponentClass

    => { + class AutoHeightComponent extends React.Component

    { + state = { + computedHeight: 0, + }; + + root: HTMLDivElement | undefined = undefined; + + componentDidMount() { + const { height } = this.props; + if (!height) { + let h = getAutoHeight(this.root); + this.setState({ computedHeight: h }); + if (h < 1) { + h = getAutoHeight(this.root); + this.setState({ computedHeight: h }); + } + } + } + + handleRoot = (node: HTMLDivElement) => { + this.root = node; + }; + + render() { + const { height } = this.props; + const { computedHeight } = this.state; + const h = height || computedHeight; + return ( +

    + {h > 0 && } +
    + ); + } + } + return AutoHeightComponent; + }; +} +export default autoHeight; diff --git a/demo/src/pages/dashboard/analysis/components/Charts/index.less b/demo/src/pages/dashboard/analysis/components/Charts/index.less new file mode 100644 index 00000000..190428bc --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/Charts/index.less @@ -0,0 +1,19 @@ +.miniChart { + position: relative; + width: 100%; + .chartContent { + position: absolute; + bottom: -28px; + width: 100%; + > div { + margin: 0 -5px; + overflow: hidden; + } + } + .chartLoading { + position: absolute; + top: 16px; + left: 50%; + margin-left: -7px; + } +} diff --git a/demo/src/pages/dashboard/analysis/components/Charts/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/index.tsx new file mode 100644 index 00000000..7ad687f0 --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/Charts/index.tsx @@ -0,0 +1,13 @@ +import numeral from 'numeral'; +import ChartCard from './ChartCard'; +import Field from './Field'; + +const yuan = (val: number | string) => `¥ ${numeral(val).format('0,0')}`; + +const Charts = { + yuan, + ChartCard, + Field, +}; + +export { Charts as default, yuan, ChartCard, Field }; diff --git a/demo/src/pages/dashboard/analysis/components/IntroduceRow.tsx b/demo/src/pages/dashboard/analysis/components/IntroduceRow.tsx new file mode 100644 index 00000000..cf0f3fd0 --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/IntroduceRow.tsx @@ -0,0 +1,135 @@ +import { InfoCircleOutlined } from '@ant-design/icons'; +import { TinyArea, TinyColumn, Progress } from '@ant-design/charts'; +import { Col, Row, Tooltip } from 'antd'; + +import numeral from 'numeral'; +import { ChartCard, Field } from './Charts'; +import type { DataItem } from '../data.d'; +import Trend from './Trend'; +import Yuan from '../utils/Yuan'; +import styles from '../style.less'; + +const topColResponsiveProps = { + xs: 24, + sm: 12, + md: 12, + lg: 12, + xl: 6, + style: { marginBottom: 24 }, +}; + +const IntroduceRow = ({ loading, visitData }: { loading: boolean; visitData: DataItem[] }) => ( + + + + + + } + loading={loading} + total={() => 126560} + footer={} + contentHeight={46} + > + + 周同比 + 12% + + + 日同比 + 11% + + + + + + + + + } + total={numeral(8846).format('0,0')} + footer={} + contentHeight={46} + > + + + + + + + + } + total={numeral(6560).format('0,0')} + footer={} + contentHeight={46} + > + + + + + + + + } + total="78%" + footer={ +
    + + 周同比 + 12% + + + 日同比 + 11% + +
    + } + contentHeight={46} + > + +
    + +
    +); + +export default IntroduceRow; diff --git a/demo/src/pages/dashboard/analysis/components/NumberInfo/index.less b/demo/src/pages/dashboard/analysis/components/NumberInfo/index.less new file mode 100644 index 00000000..847d25ee --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/NumberInfo/index.less @@ -0,0 +1,68 @@ +@import '~antd/es/style/themes/default.less'; + +.numberInfo { + .suffix { + margin-left: 4px; + color: @text-color; + font-size: 16px; + font-style: normal; + } + .numberInfoTitle { + margin-bottom: 16px; + color: @text-color; + font-size: @font-size-lg; + transition: all 0.3s; + } + .numberInfoSubTitle { + height: 22px; + overflow: hidden; + color: @text-color-secondary; + font-size: @font-size-base; + line-height: 22px; + white-space: nowrap; + text-overflow: ellipsis; + word-break: break-all; + } + .numberInfoValue { + margin-top: 4px; + overflow: hidden; + font-size: 0; + white-space: nowrap; + text-overflow: ellipsis; + word-break: break-all; + & > span { + display: inline-block; + height: 32px; + margin-right: 32px; + color: @heading-color; + font-size: 24px; + line-height: 32px; + } + .subTotal { + margin-right: 0; + color: @text-color-secondary; + font-size: @font-size-lg; + vertical-align: top; + .anticon { + margin-left: 4px; + font-size: 12px; + transform: scale(0.82); + } + :global { + .anticon-caret-up { + color: @red-6; + } + .anticon-caret-down { + color: @green-6; + } + } + } + } +} +.numberInfolight { + .numberInfoValue { + & > span { + color: @text-color; + } + } +} diff --git a/demo/src/pages/dashboard/analysis/components/NumberInfo/index.tsx b/demo/src/pages/dashboard/analysis/components/NumberInfo/index.tsx new file mode 100644 index 00000000..60b4e946 --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/NumberInfo/index.tsx @@ -0,0 +1,62 @@ +import { CaretUpOutlined, CaretDownOutlined } from '@ant-design/icons'; +import React from 'react'; +import classNames from 'classnames'; +import styles from './index.less'; + +export type NumberInfoProps = { + title?: React.ReactNode | string; + subTitle?: React.ReactNode | string; + total?: React.ReactNode | string; + status?: 'up' | 'down'; + theme?: string; + gap?: number; + subTotal?: number; + suffix?: string; + style?: React.CSSProperties; +}; +const NumberInfo: React.FC = ({ + theme, + title, + subTitle, + total, + subTotal, + status, + suffix, + gap, + ...rest +}) => ( +
    + {title && ( +
    + {title} +
    + )} + {subTitle && ( +
    + {subTitle} +
    + )} +
    + + {total} + {suffix && {suffix}} + + {(status || subTotal) && ( + + {subTotal} + {status && status === 'up' ? : } + + )} +
    +
    +); + +export default NumberInfo; diff --git a/demo/src/pages/dashboard/analysis/components/OfflineData.tsx b/demo/src/pages/dashboard/analysis/components/OfflineData.tsx new file mode 100644 index 00000000..eca987bd --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/OfflineData.tsx @@ -0,0 +1,76 @@ +import { Card, Col, Row, Tabs } from 'antd'; +import { RingProgress, Line } from '@ant-design/charts'; +import type { OfflineDataType, DataItem } from '../data.d'; + +import NumberInfo from './NumberInfo'; +import styles from '../style.less'; + +const CustomTab = ({ + data, + currentTabKey: currentKey, +}: { + data: OfflineDataType; + currentTabKey: string; +}) => ( + + + + + + + + +); + +const { TabPane } = Tabs; + +const OfflineData = ({ + activeKey, + loading, + offlineData, + offlineChartData, + handleTabChange, +}: { + activeKey: string; + loading: boolean; + offlineData: OfflineDataType[]; + offlineChartData: DataItem[]; + handleTabChange: (activeKey: string) => void; +}) => ( + + + {offlineData.map((shop) => ( + } key={shop.name}> +
    + +
    +
    + ))} +
    +
    +); + +export default OfflineData; diff --git a/demo/src/pages/dashboard/analysis/components/PageLoading/index.tsx b/demo/src/pages/dashboard/analysis/components/PageLoading/index.tsx new file mode 100644 index 00000000..dd96277b --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/PageLoading/index.tsx @@ -0,0 +1,9 @@ +import { Spin } from 'antd'; + +// loading components from code split +// https://umijs.org/plugin/umi-plugin-react.html#dynamicimport +export default () => ( +
    + +
    +); diff --git a/demo/src/pages/dashboard/analysis/components/ProportionSales.tsx b/demo/src/pages/dashboard/analysis/components/ProportionSales.tsx new file mode 100644 index 00000000..f96d0ea1 --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/ProportionSales.tsx @@ -0,0 +1,76 @@ +import { Card, Radio, Typography } from 'antd'; +import numeral from 'numeral'; +import type { RadioChangeEvent } from 'antd/es/radio'; +import { Donut } from '@ant-design/charts'; +import type { DonutConfig } from '@ant-design/charts/es/donut'; +import React from 'react'; +import type { DataItem } from '../data.d'; +import styles from '../style.less'; + +const { Text } = Typography; + +const ProportionSales = ({ + dropdownGroup, + salesType, + loading, + salesPieData, + handleChangeSalesType, +}: { + loading: boolean; + dropdownGroup: React.ReactNode; + salesType: 'all' | 'online' | 'stores'; + salesPieData: DataItem[]; + handleChangeSalesType?: (e: RadioChangeEvent) => void; +}) => ( + + {dropdownGroup} +
    + + 全部渠道 + 线上 + 门店 + +
    +
    + } + > +
    + 销售额 + { + // eslint-disable-next-line no-underscore-dangle + return `${item._origin.x}: ${numeral(item._origin.y).format('0,0')}`; + }, + }} + statistic={ + { + totalLabel: '销售额', + } as DonutConfig['statistic'] + } + /> +
    + +); + +export default ProportionSales; diff --git a/demo/src/pages/dashboard/analysis/components/SalesCard.tsx b/demo/src/pages/dashboard/analysis/components/SalesCard.tsx new file mode 100644 index 00000000..152d9cef --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/SalesCard.tsx @@ -0,0 +1,189 @@ +import { Card, Col, DatePicker, Row, Tabs } from 'antd'; +import type { RangePickerProps } from 'antd/es/date-picker/generatePicker'; +import type moment from 'moment'; +import { Column } from '@ant-design/charts'; + +import numeral from 'numeral'; +import type { DataItem } from '../data.d'; +import styles from '../style.less'; + +type RangePickerValue = RangePickerProps['value']; +export type TimeType = 'today' | 'week' | 'month' | 'year'; + +const { RangePicker } = DatePicker; +const { TabPane } = Tabs; + +const rankingListData: { title: string; total: number }[] = []; +for (let i = 0; i < 7; i += 1) { + rankingListData.push({ + title: `工专路 ${i} 号店`, + total: 323234, + }); +} + +const SalesCard = ({ + rangePickerValue, + salesData, + isActive, + handleRangePickerChange, + loading, + selectDate, +}: { + rangePickerValue: RangePickerValue; + isActive: (key: TimeType) => string; + salesData: DataItem[]; + loading: boolean; + handleRangePickerChange: (dates: RangePickerValue, dateStrings: [string, string]) => void; + selectDate: (key: TimeType) => void; +}) => ( + + + } + size="large" + tabBarStyle={{ marginBottom: 24 }} + > + + + +
    + +
    + + +
    +

    门店销售额排名

    +
      + {rankingListData.map((item, i) => ( +
    • + + {i + 1} + + + {item.title} + + + {numeral(item.total).format('0,0')} + +
    • + ))} +
    +
    + +
    +
    + + + +
    + +
    + + +
    +

    门店访问量排名

    +
      + {rankingListData.map((item, i) => ( +
    • + + {i + 1} + + + {item.title} + + {numeral(item.total).format('0,0')} +
    • + ))} +
    +
    + +
    +
    + + +
    +); + +export default SalesCard; diff --git a/demo/src/pages/dashboard/analysis/components/TopSearch.tsx b/demo/src/pages/dashboard/analysis/components/TopSearch.tsx new file mode 100644 index 00000000..48bfe03a --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/TopSearch.tsx @@ -0,0 +1,113 @@ +import { InfoCircleOutlined } from '@ant-design/icons'; +import { Card, Col, Row, Table, Tooltip } from 'antd'; +import { TinyArea } from '@ant-design/charts'; +import React from 'react'; +import numeral from 'numeral'; +import type { DataItem } from '../data.d'; + +import NumberInfo from './NumberInfo'; +import Trend from './Trend'; +import styles from '../style.less'; + +const columns = [ + { + title: '排名', + dataIndex: 'index', + key: 'index', + }, + { + title: '搜索关键词', + dataIndex: 'keyword', + key: 'keyword', + render: (text: React.ReactNode) => {text}, + }, + { + title: '用户数', + dataIndex: 'count', + key: 'count', + sorter: (a: { count: number }, b: { count: number }) => a.count - b.count, + className: styles.alignRight, + }, + { + title: '周涨幅', + dataIndex: 'range', + key: 'range', + sorter: (a: { range: number }, b: { range: number }) => a.range - b.range, + render: (text: React.ReactNode, record: { status: number }) => ( + + {text}% + + ), + }, +]; + +const TopSearch = ({ + loading, + visitData2, + searchData, + dropdownGroup, +}: { + loading: boolean; + visitData2: DataItem[]; + dropdownGroup: React.ReactNode; + searchData: DataItem[]; +}) => ( + + + + + 搜索用户数 + + + + + } + gap={8} + total={numeral(12321).format('0,0')} + status="up" + subTotal={17.1} + /> + + + + + 人均搜索次数 + + + + + } + total={2.7} + status="down" + subTotal={26.2} + gap={8} + /> + + + + + rowKey={(record) => record.index} + size="small" + columns={columns} + dataSource={searchData} + pagination={{ + style: { marginBottom: 0 }, + pageSize: 5, + }} + /> + +); + +export default TopSearch; diff --git a/demo/src/pages/dashboard/analysis/components/Trend/index.less b/demo/src/pages/dashboard/analysis/components/Trend/index.less new file mode 100644 index 00000000..3d7fdf99 --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/Trend/index.less @@ -0,0 +1,37 @@ +@import '~antd/es/style/themes/default.less'; + +.trendItem { + display: inline-block; + font-size: @font-size-base; + line-height: 22px; + + .up, + .down { + position: relative; + top: 1px; + margin-left: 4px; + span { + font-size: 12px; + transform: scale(0.83); + } + } + .up { + color: @red-6; + } + .down { + top: -1px; + color: @green-6; + } + + &.trendItemGrey .up, + &.trendItemGrey .down { + color: @text-color; + } + + &.reverseColor .up { + color: @green-6; + } + &.reverseColor .down { + color: @red-6; + } +} diff --git a/demo/src/pages/dashboard/analysis/components/Trend/index.tsx b/demo/src/pages/dashboard/analysis/components/Trend/index.tsx new file mode 100644 index 00000000..58f7196a --- /dev/null +++ b/demo/src/pages/dashboard/analysis/components/Trend/index.tsx @@ -0,0 +1,42 @@ +import { CaretUpOutlined, CaretDownOutlined } from '@ant-design/icons'; +import React from 'react'; +import classNames from 'classnames'; +import styles from './index.less'; + +export type TrendProps = { + colorful?: boolean; + flag: 'up' | 'down'; + style?: React.CSSProperties; + reverseColor?: boolean; + className?: string; +}; + +const Trend: React.FC = ({ + colorful = true, + reverseColor = false, + flag, + children, + className, + ...rest +}) => { + const classString = classNames( + styles.trendItem, + { + [styles.trendItemGrey]: !colorful, + [styles.reverseColor]: reverseColor && colorful, + }, + className, + ); + return ( +
    + {children} + {flag && ( + + {flag === 'up' ? : } + + )} +
    + ); +}; + +export default Trend; diff --git a/demo/src/pages/dashboard/analysis/data.d.ts b/demo/src/pages/dashboard/analysis/data.d.ts new file mode 100644 index 00000000..7604d10d --- /dev/null +++ b/demo/src/pages/dashboard/analysis/data.d.ts @@ -0,0 +1,46 @@ +import { DataItem } from '@antv/g2plot/esm/interface/config'; + +export { DataItem }; + +export interface VisitDataType { + x: string; + y: number; +} + +export type SearchDataType = { + index: number; + keyword: string; + count: number; + range: number; + status: number; +}; + +export type OfflineDataType = { + name: string; + cvr: number; +}; + +export interface OfflineChartData { + date: number; + type: number; + value: number; +} + +export type RadarData = { + name: string; + label: string; + value: number; +}; + +export interface AnalysisData { + visitData: DataItem[]; + visitData2: DataItem[]; + salesData: DataItem[]; + searchData: DataItem[]; + offlineData: OfflineDataType[]; + offlineChartData: DataItem[]; + salesTypeData: DataItem[]; + salesTypeDataOnline: DataItem[]; + salesTypeDataOffline: DataItem[]; + radarData: RadarData[]; +} diff --git a/demo/src/pages/dashboard/analysis/index.tsx b/demo/src/pages/dashboard/analysis/index.tsx new file mode 100644 index 00000000..331d7e6a --- /dev/null +++ b/demo/src/pages/dashboard/analysis/index.tsx @@ -0,0 +1,162 @@ +import type { FC } from 'react'; +import { Suspense, useState } from 'react'; +import { EllipsisOutlined } from '@ant-design/icons'; +import { Col, Dropdown, Menu, Row } from 'antd'; +import { GridContent } from '@ant-design/pro-layout'; +import type { RadioChangeEvent } from 'antd/es/radio'; +import type { RangePickerProps } from 'antd/es/date-picker/generatePicker'; +import type moment from 'moment'; +import IntroduceRow from './components/IntroduceRow'; +import SalesCard from './components/SalesCard'; +import TopSearch from './components/TopSearch'; +import ProportionSales from './components/ProportionSales'; +import OfflineData from './components/OfflineData'; +import { useRequest } from 'umi'; + +import { fakeChartData } from './service'; +import PageLoading from './components/PageLoading'; +import type { TimeType } from './components/SalesCard'; +import { getTimeDistance } from './utils/utils'; +import type { AnalysisData } from './data.d'; +import styles from './style.less'; + +type RangePickerValue = RangePickerProps['value']; + +type AnalysisProps = { + dashboardAndanalysis: AnalysisData; + loading: boolean; +}; + +type SalesType = 'all' | 'online' | 'stores'; + +const Analysis: FC = () => { + const [salesType, setSalesType] = useState('all'); + const [currentTabKey, setCurrentTabKey] = useState(''); + const [rangePickerValue, setRangePickerValue] = useState( + getTimeDistance('year'), + ); + + const { loading, data } = useRequest(fakeChartData); + + const selectDate = (type: TimeType) => { + setRangePickerValue(getTimeDistance(type)); + }; + + const handleRangePickerChange = (value: RangePickerValue) => { + setRangePickerValue(value); + }; + + const isActive = (type: TimeType) => { + if (!rangePickerValue) { + return ''; + } + const value = getTimeDistance(type); + if (!value) { + return ''; + } + if (!rangePickerValue[0] || !rangePickerValue[1]) { + return ''; + } + if ( + rangePickerValue[0].isSame(value[0] as moment.Moment, 'day') && + rangePickerValue[1].isSame(value[1] as moment.Moment, 'day') + ) { + return styles.currentDate; + } + return ''; + }; + + let salesPieData; + if (salesType === 'all') { + salesPieData = data?.salesTypeData; + } else { + salesPieData = salesType === 'online' ? data?.salesTypeDataOnline : data?.salesTypeDataOffline; + } + + const menu = ( + + 操作一 + 操作二 + + ); + + const dropdownGroup = ( + + + + + + ); + + const handleChangeSalesType = (e: RadioChangeEvent) => { + setSalesType(e.target.value); + }; + + const handleTabChange = (key: string) => { + setCurrentTabKey(key); + }; + + const activeKey = currentTabKey || (data?.offlineData[0] && data?.offlineData[0].name) || ''; + + return ( + + <> + }> + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default Analysis; diff --git a/demo/src/pages/dashboard/analysis/service.ts b/demo/src/pages/dashboard/analysis/service.ts new file mode 100644 index 00000000..c8a6b08a --- /dev/null +++ b/demo/src/pages/dashboard/analysis/service.ts @@ -0,0 +1,6 @@ +import { request } from 'umi'; +import type { AnalysisData } from './data'; + +export async function fakeChartData(): Promise<{ data: AnalysisData }> { + return request('/api/fake_analysis_chart_data'); +} diff --git a/demo/src/pages/dashboard/analysis/style.less b/demo/src/pages/dashboard/analysis/style.less new file mode 100644 index 00000000..38a790b6 --- /dev/null +++ b/demo/src/pages/dashboard/analysis/style.less @@ -0,0 +1,189 @@ +@import '~antd/es/style/themes/default.less'; + +.iconGroup { + span.anticon { + margin-left: 16px; + color: @text-color-secondary; + cursor: pointer; + transition: color 0.32s; + &:hover { + color: @text-color; + } + } +} + +.rankingList { + margin: 25px 0 0; + padding: 0; + list-style: none; + li { + display: flex; + align-items: center; + margin-top: 16px; + zoom: 1; + &::before, + &::after { + display: table; + content: ' '; + } + &::after { + clear: both; + height: 0; + font-size: 0; + visibility: hidden; + } + span { + color: @text-color; + font-size: 14px; + line-height: 22px; + } + .rankingItemNumber { + display: inline-block; + width: 20px; + height: 20px; + margin-top: 1.5px; + margin-right: 16px; + font-weight: 600; + font-size: 12px; + line-height: 20px; + text-align: center; + background-color: @tag-default-bg; + border-radius: 20px; + &.active { + color: #fff; + background-color: #314659; + } + } + .rankingItemTitle { + flex: 1; + margin-right: 8px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + } +} + +.salesExtra { + display: inline-block; + margin-right: 24px; + a { + margin-left: 24px; + color: @text-color; + &:hover { + color: @primary-color; + } + &.currentDate { + color: @primary-color; + } + } +} + +.salesCard { + .salesBar { + padding: 0 0 32px 32px; + } + .salesRank { + padding: 0 32px 32px 72px; + } + :global { + .ant-tabs-bar, + .ant-tabs-nav-wrap { + padding-left: 16px; + .ant-tabs-nav .ant-tabs-tab { + padding-top: 16px; + padding-bottom: 14px; + line-height: 24px; + } + } + .ant-tabs-extra-content { + padding-right: 24px; + line-height: 55px; + } + .ant-card-head { + position: relative; + } + .ant-card-head-title { + align-items: normal; + } + } +} + +.salesCardExtra { + height: inherit; +} + +.salesTypeRadio { + position: absolute; + right: 54px; + bottom: 12px; +} + +.offlineCard { + :global { + .ant-tabs-ink-bar { + bottom: auto; + } + .ant-tabs-bar { + border-bottom: none; + } + .ant-tabs-nav-container-scrolling { + padding-right: 40px; + padding-left: 40px; + } + .ant-tabs-tab-prev-icon::before { + position: relative; + left: 6px; + } + .ant-tabs-tab-next-icon::before { + position: relative; + right: 6px; + } + .ant-tabs-tab-active h4 { + color: @primary-color; + } + } +} + +.trendText { + margin-left: 8px; + color: @heading-color; +} + +@media screen and (max-width: @screen-lg) { + .salesExtra { + display: none; + } + + .rankingList { + li { + span:first-child { + margin-right: 8px; + } + } + } +} + +@media screen and (max-width: @screen-md) { + .rankingTitle { + margin-top: 16px; + } + + .salesCard .salesBar { + padding: 16px; + } +} + +@media screen and (max-width: @screen-sm) { + .salesExtraWrap { + display: none; + } + + .salesCard { + :global { + .ant-tabs-content { + padding-top: 30px; + } + } + } +} diff --git a/demo/src/pages/dashboard/analysis/utils/Yuan.tsx b/demo/src/pages/dashboard/analysis/utils/Yuan.tsx new file mode 100644 index 00000000..7027d3c3 --- /dev/null +++ b/demo/src/pages/dashboard/analysis/utils/Yuan.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import { yuan } from '../components/Charts'; +/** 减少使用 dangerouslySetInnerHTML */ +export default class Yuan extends React.Component<{ + children: React.ReactText; +}> { + main: HTMLSpanElement | undefined | null = null; + + componentDidMount() { + this.renderToHtml(); + } + + componentDidUpdate() { + this.renderToHtml(); + } + + renderToHtml = () => { + const { children } = this.props; + if (this.main) { + this.main.innerHTML = yuan(children); + } + }; + + render() { + return ( + { + this.main = ref; + }} + /> + ); + } +} diff --git a/demo/src/pages/dashboard/analysis/utils/utils.less b/demo/src/pages/dashboard/analysis/utils/utils.less new file mode 100644 index 00000000..de1aa642 --- /dev/null +++ b/demo/src/pages/dashboard/analysis/utils/utils.less @@ -0,0 +1,50 @@ +.textOverflow() { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-break: break-all; +} + +.textOverflowMulti(@line: 3, @bg: #fff) { + position: relative; + max-height: @line * 1.5em; + margin-right: -1em; + padding-right: 1em; + overflow: hidden; + line-height: 1.5em; + text-align: justify; + &::before { + position: absolute; + right: 14px; + bottom: 0; + padding: 0 1px; + background: @bg; + content: '...'; + } + &::after { + position: absolute; + right: 14px; + width: 1em; + height: 1em; + margin-top: 0.2em; + background: white; + content: ''; + } +} + +// mixins for clearfix +// ------------------------ +.clearfix() { + zoom: 1; + &::before, + &::after { + display: table; + content: ' '; + } + &::after { + clear: both; + height: 0; + font-size: 0; + visibility: hidden; + } +} diff --git a/demo/src/pages/dashboard/analysis/utils/utils.ts b/demo/src/pages/dashboard/analysis/utils/utils.ts new file mode 100644 index 00000000..6a0da9a2 --- /dev/null +++ b/demo/src/pages/dashboard/analysis/utils/utils.ts @@ -0,0 +1,52 @@ +import moment from 'moment'; +import type { RangePickerProps } from 'antd/es/date-picker/generatePicker'; + +type RangePickerValue = RangePickerProps['value']; + +export function fixedZero(val: number) { + return val * 1 < 10 ? `0${val}` : val; +} + +export function getTimeDistance(type: 'today' | 'week' | 'month' | 'year'): RangePickerValue { + const now = new Date(); + const oneDay = 1000 * 60 * 60 * 24; + + if (type === 'today') { + now.setHours(0); + now.setMinutes(0); + now.setSeconds(0); + return [moment(now), moment(now.getTime() + (oneDay - 1000))]; + } + + if (type === 'week') { + let day = now.getDay(); + now.setHours(0); + now.setMinutes(0); + now.setSeconds(0); + + if (day === 0) { + day = 6; + } else { + day -= 1; + } + + const beginTime = now.getTime() - day * oneDay; + + return [moment(beginTime), moment(beginTime + (7 * oneDay - 1000))]; + } + const year = now.getFullYear(); + + if (type === 'month') { + const month = now.getMonth(); + const nextDate = moment(now).add(1, 'months'); + const nextYear = nextDate.year(); + const nextMonth = nextDate.month(); + + return [ + moment(`${year}-${fixedZero(month + 1)}-01 00:00:00`), + moment(moment(`${nextYear}-${fixedZero(nextMonth + 1)}-01 00:00:00`).valueOf() - 1000), + ]; + } + + return [moment(`${year}-01-01 00:00:00`), moment(`${year}-12-31 23:59:59`)]; +} diff --git a/demo/src/pages/dashboard/monitor/_mock.ts b/demo/src/pages/dashboard/monitor/_mock.ts new file mode 100644 index 00000000..7ab870eb --- /dev/null +++ b/demo/src/pages/dashboard/monitor/_mock.ts @@ -0,0 +1,14 @@ +import mockjs from 'mockjs'; +import type { Request, Response } from 'express'; + +const getTags = (_: Request, res: Response) => { + return res.json({ + data: mockjs.mock({ + 'list|100': [{ name: '@city', 'value|1-100': 150, 'type|0-2': 1 }], + }), + }); +}; + +export default { + 'GET /api/tags': getTags, +}; diff --git a/demo/src/pages/dashboard/monitor/components/ActiveChart/index.less b/demo/src/pages/dashboard/monitor/components/ActiveChart/index.less new file mode 100644 index 00000000..2f5d15f2 --- /dev/null +++ b/demo/src/pages/dashboard/monitor/components/ActiveChart/index.less @@ -0,0 +1,51 @@ +.activeChart { + position: relative; +} +.activeChartGrid { + p { + position: absolute; + top: 80px; + } + p:last-child { + top: 115px; + } +} +.activeChartLegend { + position: relative; + height: 20px; + margin-top: 8px; + font-size: 0; + line-height: 20px; + span { + display: inline-block; + width: 33.33%; + font-size: 12px; + text-align: center; + } + span:first-child { + text-align: left; + } + span:last-child { + text-align: right; + } +} +.dashedLine { + position: relative; + top: -70px; + left: -3px; + height: 1px; + + .line { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-image: linear-gradient(to right, transparent 50%, #e9e9e9 50%); + background-size: 6px; + } +} + +.dashedLine:last-child { + top: -36px; +} diff --git a/demo/src/pages/dashboard/monitor/components/ActiveChart/index.tsx b/demo/src/pages/dashboard/monitor/components/ActiveChart/index.tsx new file mode 100644 index 00000000..9f0df840 --- /dev/null +++ b/demo/src/pages/dashboard/monitor/components/ActiveChart/index.tsx @@ -0,0 +1,90 @@ +import { Component } from 'react'; +import { TinyArea } from '@ant-design/charts'; + +import { Statistic } from 'antd'; +import styles from './index.less'; + +function fixedZero(val: number) { + return val * 1 < 10 ? `0${val}` : val; +} + +function getActiveData() { + const activeData = []; + for (let i = 0; i < 24; i += 1) { + activeData.push({ + x: `${fixedZero(i)}:00`, + y: Math.floor(Math.random() * 200) + i * 50, + }); + } + return activeData; +} + +export default class ActiveChart extends Component { + state = { + activeData: getActiveData(), + }; + + timer: number | undefined = undefined; + + requestRef: number | undefined = undefined; + + componentDidMount() { + this.loopData(); + } + + componentWillUnmount() { + clearTimeout(this.timer); + if (this.requestRef) { + cancelAnimationFrame(this.requestRef); + } + } + + loopData = () => { + this.requestRef = requestAnimationFrame(() => { + this.timer = window.setTimeout(() => { + this.setState( + { + activeData: getActiveData(), + }, + () => { + this.loopData(); + }, + ); + }, 1000); + }); + }; + + render() { + const { activeData = [] } = this.state; + + return ( +
    + +
    + +
    + {activeData && ( +
    +
    +

    {[...activeData].sort()[activeData.length - 1].y + 200} 亿元

    +

    {[...activeData].sort()[Math.floor(activeData.length / 2)].y} 亿元

    +
    +
    +
    +
    +
    +
    +
    +
    + )} + {activeData && ( +
    + 00:00 + {activeData[Math.floor(activeData.length / 2)].x} + {activeData[activeData.length - 1].x} +
    + )} +
    + ); + } +} diff --git a/demo/src/pages/dashboard/monitor/components/Charts/Gauge/index.tsx b/demo/src/pages/dashboard/monitor/components/Charts/Gauge/index.tsx new file mode 100644 index 00000000..a4975fa6 --- /dev/null +++ b/demo/src/pages/dashboard/monitor/components/Charts/Gauge/index.tsx @@ -0,0 +1,180 @@ +import { Axis, Chart, Coord, Geom, Guide, Shape } from 'bizcharts'; + +import React from 'react'; +import autoHeight from '../autoHeight'; + +const { Arc, Html, Line } = Guide; + +export type GaugeProps = { + title: React.ReactNode; + color?: string; + height?: number; + bgColor?: number; + percent: number; + forceFit?: boolean; + style?: React.CSSProperties; + formatter?: (value: string) => string; +}; + +const defaultFormatter = (val: string): string => { + switch (val) { + case '2': + return '差'; + case '4': + return '中'; + case '6': + return '良'; + case '8': + return '优'; + default: + return ''; + } +}; + +if (Shape.registerShape) { + Shape.registerShape('point', 'pointer', { + drawShape(cfg: any, group: any) { + let point = cfg.points[0]; + point = (this as any).parsePoint(point); + const center = (this as any).parsePoint({ + x: 0, + y: 0, + }); + group.addShape('line', { + attrs: { + x1: center.x, + y1: center.y, + x2: point.x, + y2: point.y, + stroke: cfg.color, + lineWidth: 2, + lineCap: 'round', + }, + }); + return group.addShape('circle', { + attrs: { + x: center.x, + y: center.y, + r: 6, + stroke: cfg.color, + lineWidth: 3, + fill: '#fff', + }, + }); + }, + }); +} + +const Gauge: React.FC = (props) => { + const { + title, + height = 1, + percent, + forceFit = true, + formatter = defaultFormatter, + color = '#2F9CFF', + bgColor = '#F0F2F5', + } = props; + const cols = { + value: { + type: 'linear', + min: 0, + max: 10, + tickCount: 6, + nice: true, + }, + }; + const data = [{ value: percent / 10 }]; + + const renderHtml = () => ` +
    +
    ${title}
    +
    + ${(data[0].value * 10).toFixed(2)}% +
    +
    `; + + const textStyle: { + fontSize: number; + fill: string; + textAlign: 'center'; + } = { + fontSize: 12, + fill: 'rgba(0, 0, 0, 0.65)', + textAlign: 'center', + }; + return ( + + + + + + + + + + + + + + + ); +}; + +export default autoHeight()(Gauge); diff --git a/demo/src/pages/dashboard/monitor/components/Charts/MiniArea/index.tsx b/demo/src/pages/dashboard/monitor/components/Charts/MiniArea/index.tsx new file mode 100644 index 00000000..5b20ae85 --- /dev/null +++ b/demo/src/pages/dashboard/monitor/components/Charts/MiniArea/index.tsx @@ -0,0 +1,131 @@ +import type { AxisProps } from 'bizcharts'; +import { Axis, Chart, Geom, Tooltip } from 'bizcharts'; + +import React from 'react'; +import autoHeight from '../autoHeight'; +import styles from '../index.less'; + +export type MiniAreaProps = { + color?: string; + height?: number; + borderColor?: string; + line?: boolean; + animate?: boolean; + xAxis?: AxisProps; + forceFit?: boolean; + scale?: { + x?: { + tickCount: number; + }; + y?: { + tickCount: number; + }; + }; + yAxis?: Partial; + borderWidth?: number; + data: { + x: number | string; + y: number; + }[]; +}; + +const MiniArea: React.FC = (props) => { + const { + height = 1, + data = [], + forceFit = true, + color = 'rgba(24, 144, 255, 0.2)', + borderColor = '#1089ff', + scale = { x: {}, y: {} }, + borderWidth = 2, + line, + xAxis, + yAxis, + animate = true, + } = props; + + const padding: [number, number, number, number] = [36, 5, 30, 5]; + + const scaleProps = { + x: { + type: 'cat', + range: [0, 1], + ...scale.x, + }, + y: { + min: 0, + ...scale.y, + }, + }; + + const tooltip: [string, (...args: any[]) => { name?: string; value: string }] = [ + 'x*y', + (x: string, y: string) => ({ + name: x, + value: y, + }), + ]; + + const chartHeight = height + 54; + + return ( +
    +
    + {height > 0 && ( + + + + + + {line ? ( + + ) : ( + + )} + + )} +
    +
    + ); +}; + +export default autoHeight()(MiniArea); diff --git a/demo/src/pages/dashboard/monitor/components/Charts/Pie/index.tsx b/demo/src/pages/dashboard/monitor/components/Charts/Pie/index.tsx new file mode 100644 index 00000000..520c5c57 --- /dev/null +++ b/demo/src/pages/dashboard/monitor/components/Charts/Pie/index.tsx @@ -0,0 +1,310 @@ +import { Chart, Coord, Geom, Tooltip } from 'bizcharts'; +import React, { Component } from 'react'; + +import { DataView } from '@antv/data-set'; +import Debounce from 'lodash.debounce'; +import { Divider } from 'antd'; +import ReactFitText from 'react-fittext'; +import classNames from 'classnames'; +import autoHeight from '../autoHeight'; +import styles from './index.less'; + +export type PieProps = { + animate?: boolean; + color?: string; + colors?: string[]; + selected?: boolean; + height?: number; + margin?: [number, number, number, number]; + hasLegend?: boolean; + padding?: [number, number, number, number]; + percent?: number; + data?: { + x: string | string; + y: number; + }[]; + inner?: number; + lineWidth?: number; + forceFit?: boolean; + style?: React.CSSProperties; + className?: string; + total?: React.ReactNode | number | (() => React.ReactNode | number); + title?: React.ReactNode; + tooltip?: boolean; + valueFormat?: (value: string) => string | React.ReactNode; + subTitle?: React.ReactNode; +}; +type PieState = { + legendData: { checked: boolean; x: string; color: string; percent: number; y: string }[]; + legendBlock: boolean; +}; +class Pie extends Component { + state: PieState = { + legendData: [], + legendBlock: false, + }; + + chart: G2.Chart | undefined = undefined; + + root: HTMLDivElement | undefined = undefined; + + requestRef: number | undefined = 0; + + // for window resize auto responsive legend + resize = Debounce(() => { + const { hasLegend } = this.props; + const { legendBlock } = this.state; + if (!hasLegend || !this.root) { + window.removeEventListener('resize', this.resize); + return; + } + if ( + this.root && + this.root.parentNode && + (this.root.parentNode as HTMLElement).clientWidth <= 380 + ) { + if (!legendBlock) { + this.setState({ + legendBlock: true, + }); + } + } else if (legendBlock) { + this.setState({ + legendBlock: false, + }); + } + }, 300); + + componentDidMount() { + window.addEventListener( + 'resize', + () => { + this.requestRef = requestAnimationFrame(() => this.resize()); + }, + { passive: true }, + ); + } + + componentDidUpdate(preProps: PieProps) { + const { data } = this.props; + if (data !== preProps.data) { + // because of charts data create when rendered + // so there is a trick for get rendered time + this.getLegendData(); + } + } + + componentWillUnmount() { + if (this.requestRef) { + window.cancelAnimationFrame(this.requestRef); + } + window.removeEventListener('resize', this.resize); + if (this.resize) { + (this.resize as any).cancel(); + } + } + + getG2Instance = (chart: G2.Chart) => { + this.chart = chart; + requestAnimationFrame(() => { + this.getLegendData(); + this.resize(); + }); + }; + + // for custom lengend view + getLegendData = () => { + if (!this.chart) return; + const geom = this.chart.getAllGeoms()[0]; // 获取所有的图形 + if (!geom) return; + // g2 的类型有问题 + const items = (geom as any).get('dataArray') || []; // 获取图形对应的 + + const legendData = items.map((item: { color: any; _origin: any }[]) => { + /* eslint no-underscore-dangle:0 */ + const origin = item[0]._origin; + origin.color = item[0].color; + origin.checked = true; + return origin; + }); + + this.setState({ + legendData, + }); + }; + + handleRoot = (n: HTMLDivElement) => { + this.root = n; + }; + + handleLegendClick = (item: { checked: boolean }, i: string | number) => { + const newItem = item; + newItem.checked = !newItem.checked; + + const { legendData } = this.state; + legendData[i] = newItem; + + const filteredLegendData = legendData.filter((l) => l.checked).map((l) => l.x); + + if (this.chart) { + this.chart.filter('x', (val) => filteredLegendData.indexOf(`${val}`) > -1); + } + + this.setState({ + legendData, + }); + }; + + render() { + const { + valueFormat, + subTitle, + total, + hasLegend = false, + className, + style, + height = 0, + forceFit = true, + percent, + color, + inner = 0.75, + animate = true, + colors, + lineWidth = 1, + } = this.props; + + const { legendData, legendBlock } = this.state; + const pieClassName = classNames(styles.pie, className, { + [styles.hasLegend]: !!hasLegend, + [styles.legendBlock]: legendBlock, + }); + + const { + data: propsData, + selected: propsSelected = true, + tooltip: propsTooltip = true, + } = this.props; + + let data = propsData || []; + let selected = propsSelected; + let tooltip = propsTooltip; + + const defaultColors = colors; + data = data || []; + selected = selected || true; + tooltip = tooltip || true; + let formatColor; + + const scale = { + x: { + type: 'cat', + range: [0, 1], + }, + y: { + min: 0, + }, + }; + + if (percent || percent === 0) { + selected = false; + tooltip = false; + formatColor = (value: string) => { + if (value === '占比') { + return color || 'rgba(24, 144, 255, 0.85)'; + } + return '#F0F2F5'; + }; + + data = [ + { + x: '占比', + y: parseFloat(`${percent}`), + }, + { + x: '反比', + y: 100 - parseFloat(`${percent}`), + }, + ]; + } + + const tooltipFormat: [string, (...args: any[]) => { name?: string; value: string }] = [ + 'x*percent', + (x: string, p: number) => ({ + name: x, + value: `${(p * 100).toFixed(2)}%`, + }), + ]; + + const padding = [12, 0, 12, 0] as [number, number, number, number]; + + const dv = new DataView(); + dv.source(data).transform({ + type: 'percent', + field: 'y', + dimension: 'x', + as: 'percent', + }); + + return ( +
    + +
    + + {!!tooltip && } + + + + + {(subTitle || total) && ( +
    + {subTitle &&

    {subTitle}

    } + {/* eslint-disable-next-line */} + {total && ( +
    {typeof total === 'function' ? total() : total}
    + )} +
    + )} +
    +
    + + {hasLegend && ( +
      + {legendData.map((item, i) => ( +
    • this.handleLegendClick(item, i)}> + + {item.x} + + + {`${(Number.isNaN(item.percent) ? 0 : item.percent * 100).toFixed(2)}%`} + + {valueFormat ? valueFormat(item.y) : item.y} +
    • + ))} +
    + )} +
    + ); + } +} + +export default autoHeight()(Pie); diff --git a/demo/src/pages/dashboard/monitor/components/Charts/TagCloud/index.tsx b/demo/src/pages/dashboard/monitor/components/Charts/TagCloud/index.tsx new file mode 100644 index 00000000..f3ee5192 --- /dev/null +++ b/demo/src/pages/dashboard/monitor/components/Charts/TagCloud/index.tsx @@ -0,0 +1,211 @@ +import { Chart, Coord, Geom, Shape, Tooltip } from 'bizcharts'; +import React, { Component } from 'react'; + +import DataSet from '@antv/data-set'; +import Debounce from 'lodash.debounce'; +import classNames from 'classnames'; +import autoHeight from '../autoHeight'; +import styles from './index.less'; + +/* eslint no-underscore-dangle: 0 */ +/* eslint no-param-reassign: 0 */ + +const imgUrl = 'https://gw.alipayobjects.com/zos/rmsportal/gWyeGLCdFFRavBGIDzWk.png'; + +export type TagCloudProps = { + data: { + name: string; + value: string; + }[]; + height?: number; + className?: string; + style?: React.CSSProperties; +}; + +type TagCloudState = { + dv: any; + height?: number; + width: number; +}; + +class TagCloud extends Component { + state = { + dv: null, + height: 0, + width: 0, + }; + + requestRef: number = 0; + + isUnmount: boolean = false; + + root: HTMLDivElement | undefined = undefined; + + imageMask: HTMLImageElement | undefined = undefined; + + componentDidMount() { + requestAnimationFrame(() => { + this.initTagCloud(); + this.renderChart(this.props); + }); + window.addEventListener('resize', this.resize, { passive: true }); + } + + componentDidUpdate(preProps?: TagCloudProps) { + const { data } = this.props; + if (preProps && JSON.stringify(preProps.data) !== JSON.stringify(data)) { + this.renderChart(this.props); + } + } + + componentWillUnmount() { + this.isUnmount = true; + window.cancelAnimationFrame(this.requestRef); + window.removeEventListener('resize', this.resize); + } + + resize = () => { + this.requestRef = requestAnimationFrame(() => { + this.renderChart(this.props); + }); + }; + + saveRootRef = (node: HTMLDivElement) => { + this.root = node; + }; + + initTagCloud = () => { + function getTextAttrs(cfg: { + x?: any; + y?: any; + style?: any; + opacity?: any; + origin?: any; + color?: any; + }) { + return { + ...cfg.style, + fillOpacity: cfg.opacity, + fontSize: cfg.origin._origin.size, + rotate: cfg.origin._origin.rotate, + text: cfg.origin._origin.text, + textAlign: 'center', + fontFamily: cfg.origin._origin.font, + fill: cfg.color, + textBaseline: 'Alphabetic', + }; + } + + (Shape as any).registerShape('point', 'cloud', { + drawShape( + cfg: { x: any; y: any }, + container: { addShape: (arg0: string, arg1: { attrs: any }) => void }, + ) { + const attrs = getTextAttrs(cfg); + return container.addShape('text', { + attrs: { + ...attrs, + x: cfg.x, + y: cfg.y, + }, + }); + }, + }); + }; + + renderChart = Debounce((nextProps: TagCloudProps) => { + // const colors = ['#1890FF', '#41D9C7', '#2FC25B', '#FACC14', '#9AE65C']; + const { data, height } = nextProps || this.props; + if (data.length < 1 || !this.root) { + return; + } + + const h = height; + const w = this.root.offsetWidth; + + const onload = () => { + const dv = new DataSet.View().source(data); + const range = dv.range('value'); + const [min, max] = range; + dv.transform({ + type: 'tag-cloud', + fields: ['name', 'value'], + imageMask: this.imageMask, + font: 'Verdana', + size: [w, h], // 宽高设置最好根据 imageMask 做调整 + padding: 0, + timeInterval: 5000, // max execute time + rotate() { + return 0; + }, + fontSize(d: { value: number }) { + const size = ((d.value - min) / (max - min)) ** 2; + return size * (17.5 - 5) + 5; + }, + }); + + if (this.isUnmount) { + return; + } + + this.setState({ + dv, + width: w, + height: h, + }); + }; + + if (!this.imageMask) { + this.imageMask = new Image(); + this.imageMask.crossOrigin = ''; + this.imageMask.src = imgUrl; + + this.imageMask.onload = onload; + } else { + onload(); + } + }, 200); + + render() { + const { className, height } = this.props; + const { dv, width, height: stateHeight } = this.state; + + return ( +
    + {dv && ( + + + + + + )} +
    + ); + } +} + +export default autoHeight()(TagCloud); diff --git a/demo/src/pages/dashboard/monitor/components/Charts/WaterWave/index.tsx b/demo/src/pages/dashboard/monitor/components/Charts/WaterWave/index.tsx new file mode 100644 index 00000000..a9b64110 --- /dev/null +++ b/demo/src/pages/dashboard/monitor/components/Charts/WaterWave/index.tsx @@ -0,0 +1,235 @@ +import React, { Component } from 'react'; + +import autoHeight from '../autoHeight'; +import styles from './index.less'; + +/* eslint no-return-assign: 0 */ +/* eslint no-mixed-operators: 0 */ +// riddle: https://riddle.alibaba-inc.com/riddles/2d9a4b90 + +export type WaterWaveProps = { + title: React.ReactNode; + color?: string; + height?: number; + percent: number; + style?: React.CSSProperties; +}; + +class WaterWave extends Component { + state = { + radio: 1, + }; + + timer: number = 0; + + root: HTMLDivElement | undefined | null = null; + + node: HTMLCanvasElement | undefined | null = null; + + componentDidMount() { + this.renderChart(); + this.resize(); + window.addEventListener( + 'resize', + () => { + requestAnimationFrame(() => this.resize()); + }, + { passive: true }, + ); + } + + componentDidUpdate(props: WaterWaveProps) { + const { percent } = this.props; + if (props.percent !== percent) { + // 不加这个会造成绘制缓慢 + this.renderChart('update'); + } + } + + componentWillUnmount() { + cancelAnimationFrame(this.timer); + if (this.node) { + this.node.innerHTML = ''; + } + window.removeEventListener('resize', this.resize); + } + + resize = () => { + if (this.root) { + const { height = 1 } = this.props; + const { offsetWidth } = this.root.parentNode as HTMLElement; + this.setState({ + radio: offsetWidth < height ? offsetWidth / height : 1, + }); + } + }; + + renderChart(type?: string) { + const { percent, color = '#1890FF' } = this.props; + const data = percent / 100; + cancelAnimationFrame(this.timer); + + if (!this.node || (data !== 0 && !data)) { + return; + } + + const canvas = this.node; + const ctx = canvas.getContext('2d'); + if (!ctx) { + return; + } + const canvasWidth = canvas.width; + const canvasHeight = canvas.height; + const radius = canvasWidth / 2; + const lineWidth = 2; + const cR = radius - lineWidth; + + ctx.beginPath(); + ctx.lineWidth = lineWidth * 2; + + const axisLength = canvasWidth - lineWidth; + const unit = axisLength / 8; + const range = 0.2; // 振幅 + let currRange = range; + const xOffset = lineWidth; + let sp = 0; // 周期偏移量 + let currData = 0; + const waveupsp = 0.005; // 水波上涨速度 + + let arcStack: number[][] = []; + const bR = radius - lineWidth; + const circleOffset = -(Math.PI / 2); + let circleLock = true; + + for (let i = circleOffset; i < circleOffset + 2 * Math.PI; i += 1 / (8 * Math.PI)) { + arcStack.push([radius + bR * Math.cos(i), radius + bR * Math.sin(i)]); + } + + const cStartPoint = arcStack.shift() as number[]; + ctx.strokeStyle = color; + ctx.moveTo(cStartPoint[0], cStartPoint[1]); + + const drawSin = () => { + if (!ctx) { + return; + } + ctx.beginPath(); + ctx.save(); + + const sinStack = []; + for (let i = xOffset; i <= xOffset + axisLength; i += 20 / axisLength) { + const x = sp + (xOffset + i) / unit; + const y = Math.sin(x) * currRange; + const dx = i; + const dy = 2 * cR * (1 - currData) + (radius - cR) - unit * y; + + ctx.lineTo(dx, dy); + sinStack.push([dx, dy]); + } + + const startPoint = sinStack.shift() as number[]; + + ctx.lineTo(xOffset + axisLength, canvasHeight); + ctx.lineTo(xOffset, canvasHeight); + ctx.lineTo(startPoint[0], startPoint[1]); + + const gradient = ctx.createLinearGradient(0, 0, 0, canvasHeight); + gradient.addColorStop(0, '#ffffff'); + gradient.addColorStop(1, color); + ctx.fillStyle = gradient; + ctx.fill(); + ctx.restore(); + }; + + const render = () => { + if (!ctx) { + return; + } + ctx.clearRect(0, 0, canvasWidth, canvasHeight); + if (circleLock && type !== 'update') { + if (arcStack.length) { + const temp = arcStack.shift() as number[]; + ctx.lineTo(temp[0], temp[1]); + ctx.stroke(); + } else { + circleLock = false; + ctx.lineTo(cStartPoint[0], cStartPoint[1]); + ctx.stroke(); + arcStack = []; + + ctx.globalCompositeOperation = 'destination-over'; + ctx.beginPath(); + ctx.lineWidth = lineWidth; + ctx.arc(radius, radius, bR, 0, 2 * Math.PI, true); + + ctx.beginPath(); + ctx.save(); + ctx.arc(radius, radius, radius - 3 * lineWidth, 0, 2 * Math.PI, true); + + ctx.restore(); + ctx.clip(); + ctx.fillStyle = color; + } + } else { + if (data >= 0.85) { + if (currRange > range / 4) { + const t = range * 0.01; + currRange -= t; + } + } else if (data <= 0.1) { + if (currRange < range * 1.5) { + const t = range * 0.01; + currRange += t; + } + } else { + if (currRange <= range) { + const t = range * 0.01; + currRange += t; + } + if (currRange >= range) { + const t = range * 0.01; + currRange -= t; + } + } + if (data - currData > 0) { + currData += waveupsp; + } + if (data - currData < 0) { + currData -= waveupsp; + } + + sp += 0.07; + drawSin(); + } + this.timer = requestAnimationFrame(render); + }; + render(); + } + + render() { + const { radio } = this.state; + const { percent, title, height = 1 } = this.props; + return ( +
    (this.root = n)} + style={{ transform: `scale(${radio})` }} + > +
    + (this.node = n)} + width={height * 2} + height={height * 2} + /> +
    +
    + {title && {title}} +

    {percent}%

    +
    +
    + ); + } +} + +export default autoHeight()(WaterWave); diff --git a/demo/src/pages/dashboard/monitor/components/Charts/autoHeight.tsx b/demo/src/pages/dashboard/monitor/components/Charts/autoHeight.tsx new file mode 100644 index 00000000..f37acace --- /dev/null +++ b/demo/src/pages/dashboard/monitor/components/Charts/autoHeight.tsx @@ -0,0 +1,79 @@ +import React from 'react'; + +export type IReactComponent

    = + | React.StatelessComponent

    + | React.ComponentClass

    + | React.ClassicComponentClass

    ; + +function computeHeight(node: HTMLDivElement) { + const { style } = node; + style.height = '100%'; + const totalHeight = parseInt(`${getComputedStyle(node).height}`, 10); + const padding = + parseInt(`${getComputedStyle(node).paddingTop}`, 10) + + parseInt(`${getComputedStyle(node).paddingBottom}`, 10); + return totalHeight - padding; +} + +function getAutoHeight(n: HTMLDivElement) { + if (!n) { + return 0; + } + + const node = n; + + let height = computeHeight(node); + const parentNode = node.parentNode as HTMLDivElement; + if (parentNode) { + height = computeHeight(parentNode); + } + + return height; +} + +type AutoHeightProps = { + height?: number; +}; + +function autoHeight() { + return

    ( + WrappedComponent: React.ComponentClass

    | React.FC

    , + ): React.ComponentClass

    => { + class AutoHeightComponent extends React.Component

    { + state = { + computedHeight: 0, + }; + + root: HTMLDivElement | null = null; + + componentDidMount() { + const { height } = this.props; + if (!height && this.root) { + let h = getAutoHeight(this.root); + this.setState({ computedHeight: h }); + if (h < 1) { + h = getAutoHeight(this.root); + this.setState({ computedHeight: h }); + } + } + } + + handleRoot = (node: HTMLDivElement) => { + this.root = node; + }; + + render() { + const { height } = this.props; + const { computedHeight } = this.state; + const h = height || computedHeight; + return ( +

    + {h > 0 && } +
    + ); + } + } + return AutoHeightComponent; + }; +} +export default autoHeight; diff --git a/demo/src/pages/dashboard/monitor/components/Map/index.tsx b/demo/src/pages/dashboard/monitor/components/Map/index.tsx new file mode 100644 index 00000000..ff9d924f --- /dev/null +++ b/demo/src/pages/dashboard/monitor/components/Map/index.tsx @@ -0,0 +1,145 @@ +import * as React from 'react'; +import { HeatmapLayer, MapboxScene, PointLayer } from '@antv/l7-react'; +import { PageLoading } from '@ant-design/pro-layout'; + +const colors = ['#eff3ff', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#084594']; +export default class Map extends React.Component { + state = { + data: null, + grid: null, + loading: false, + }; + + public async componentDidMount() { + const [geoData, gridData] = await Promise.all([ + fetch( + 'https://gw.alipayobjects.com/os/bmw-prod/c5dba875-b6ea-4e88-b778-66a862906c93.json', + ).then((d) => d.json()), + fetch( + 'https://gw.alipayobjects.com/os/bmw-prod/8990e8b4-c58e-419b-afb9-8ea3daff2dd1.json', + ).then((d) => d.json()), + ]); + this.setState({ + data: geoData, + grid: gridData, + loading: true, + }); + } + + public render() { + const { data, grid, loading } = this.state; + return loading === false ? ( + + ) : ( + + {grid && ( + + )} + {data && [ + , + { + return v > 2000; + }, + }} + size={{ + values: 12, + }} + style={{ + opacity: 1, + strokeOpacity: 1, + strokeWidth: 0, + }} + />, + ]} + + ); + } +} diff --git a/demo/src/pages/dashboard/monitor/data.d.ts b/demo/src/pages/dashboard/monitor/data.d.ts new file mode 100644 index 00000000..b6efef35 --- /dev/null +++ b/demo/src/pages/dashboard/monitor/data.d.ts @@ -0,0 +1,5 @@ +export type TagType = { + name: string; + value: number; + type: string; +}; diff --git a/demo/src/pages/dashboard/monitor/index.tsx b/demo/src/pages/dashboard/monitor/index.tsx new file mode 100644 index 00000000..779d200a --- /dev/null +++ b/demo/src/pages/dashboard/monitor/index.tsx @@ -0,0 +1,152 @@ +import { Card, Col, Row, Statistic } from 'antd'; +import { useRequest } from 'umi'; +import type { FC } from 'react'; +import { Gauge, WordCloud, Liquid, RingProgress } from '@ant-design/charts'; +import type { WordCloudData } from '@antv/g2plot/esm/plots/word-cloud/layer'; + +import { GridContent } from '@ant-design/pro-layout'; +import numeral from 'numeral'; +import Map from './components/Map'; +import ActiveChart from './components/ActiveChart'; +import { queryTags } from './service'; +import styles from './style.less'; + +const { Countdown } = Statistic; + +const deadline = Date.now() + 1000 * 60 * 60 * 24 * 2 + 1000 * 30; // Moment is also OK + +const Monitor: FC = () => { + const { loading, data } = useRequest(queryTags); + + const wordCloudData: WordCloudData[] = (data?.list || []).map((item) => { + return { + id: +Date.now(), + word: item.name, + weight: item.value, + }; + }); + + return ( + + <> + + + + + + + + + + + + + + + + + +
    + +
    +
    + + + + + + + + + +
    + + + + + + + {/* */} + + + + + + + + + + + + + + {/* */} + + + + + `${((100 * value) / 10000).toFixed(1)}%`, + }} + /> + + + + +
    + ); +}; + +export default Monitor; diff --git a/demo/src/pages/dashboard/monitor/service.ts b/demo/src/pages/dashboard/monitor/service.ts new file mode 100644 index 00000000..431c4106 --- /dev/null +++ b/demo/src/pages/dashboard/monitor/service.ts @@ -0,0 +1,6 @@ +import { request } from 'umi'; +import type { TagType } from './data'; + +export async function queryTags(): Promise<{ data: { list: TagType[] } }> { + return request('/api/tags'); +} diff --git a/demo/src/pages/dashboard/monitor/style.less b/demo/src/pages/dashboard/monitor/style.less new file mode 100644 index 00000000..d2f0c686 --- /dev/null +++ b/demo/src/pages/dashboard/monitor/style.less @@ -0,0 +1,21 @@ +@import '~antd/es/style/themes/default.less'; + +.mapChart { + height: 452px; + padding-top: 24px; + img { + display: inline-block; + max-width: 100%; + max-height: 437px; + } +} + +.pieCard :global(.pie-stat) { + font-size: 24px !important; +} + +@media screen and (max-width: @screen-lg) { + .mapChart { + height: auto; + } +} diff --git a/demo/src/pages/dashboard/workplace/_mock.ts b/demo/src/pages/dashboard/workplace/_mock.ts new file mode 100644 index 00000000..41b9e38a --- /dev/null +++ b/demo/src/pages/dashboard/workplace/_mock.ts @@ -0,0 +1,410 @@ +import moment from 'moment'; +import type { Request, Response } from 'express'; +import type { SearchDataType, OfflineDataType, DataItem } from './data.d'; + +// mock data +const visitData: DataItem[] = []; +const beginDay = new Date().getTime(); + +const fakeY = [7, 5, 4, 2, 4, 7, 5, 6, 5, 9, 6, 3, 1, 5, 3, 6, 5]; +for (let i = 0; i < fakeY.length; i += 1) { + visitData.push({ + x: moment(new Date(beginDay + 1000 * 60 * 60 * 24 * i)).format('YYYY-MM-DD'), + y: fakeY[i], + }); +} + +const visitData2: DataItem[] = []; +const fakeY2 = [1, 6, 4, 8, 3, 7, 2]; +for (let i = 0; i < fakeY2.length; i += 1) { + visitData2.push({ + x: moment(new Date(beginDay + 1000 * 60 * 60 * 24 * i)).format('YYYY-MM-DD'), + y: fakeY2[i], + }); +} + +const salesData: DataItem[] = []; +for (let i = 0; i < 12; i += 1) { + salesData.push({ + x: `${i + 1}月`, + y: Math.floor(Math.random() * 1000) + 200, + }); +} +const searchData: SearchDataType[] = []; +for (let i = 0; i < 50; i += 1) { + searchData.push({ + index: i + 1, + keyword: `搜索关键词-${i}`, + count: Math.floor(Math.random() * 1000), + range: Math.floor(Math.random() * 100), + status: Math.floor((Math.random() * 10) % 2), + }); +} +const salesTypeData = [ + { + x: '家用电器', + y: 4544, + }, + { + x: '食用酒水', + y: 3321, + }, + { + x: '个护健康', + y: 3113, + }, + { + x: '服饰箱包', + y: 2341, + }, + { + x: '母婴产品', + y: 1231, + }, + { + x: '其他', + y: 1231, + }, +]; + +const salesTypeDataOnline = [ + { + x: '家用电器', + y: 244, + }, + { + x: '食用酒水', + y: 321, + }, + { + x: '个护健康', + y: 311, + }, + { + x: '服饰箱包', + y: 41, + }, + { + x: '母婴产品', + y: 121, + }, + { + x: '其他', + y: 111, + }, +]; + +const salesTypeDataOffline = [ + { + x: '家用电器', + y: 99, + }, + { + x: '食用酒水', + y: 188, + }, + { + x: '个护健康', + y: 344, + }, + { + x: '服饰箱包', + y: 255, + }, + { + x: '其他', + y: 65, + }, +]; + +const offlineData: OfflineDataType[] = []; +for (let i = 0; i < 10; i += 1) { + offlineData.push({ + name: `Stores ${i}`, + cvr: Math.ceil(Math.random() * 9) / 10, + }); +} +const offlineChartData: DataItem[] = []; +for (let i = 0; i < 20; i += 1) { + offlineChartData.push({ + x: new Date().getTime() + 1000 * 60 * 30 * i, + y1: Math.floor(Math.random() * 100) + 10, + y2: Math.floor(Math.random() * 100) + 10, + }); +} + +const titles = [ + 'Alipay', + 'Angular', + 'Ant Design', + 'Ant Design Pro', + 'Bootstrap', + 'React', + 'Vue', + 'Webpack', +]; +const avatars = [ + 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', // Alipay + 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', // Angular + 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', // Ant Design + 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', // Ant Design Pro + 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', // Bootstrap + 'https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png', // React + 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', // Vue + 'https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png', // Webpack +]; + +const avatars2 = [ + 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png', + 'https://gw.alipayobjects.com/zos/rmsportal/cnrhVkzwxjPwAaCfPbdc.png', + 'https://gw.alipayobjects.com/zos/rmsportal/gaOngJwsRYRaVAuXXcmB.png', + 'https://gw.alipayobjects.com/zos/rmsportal/ubnKSIfAJTxIgXOKlciN.png', + 'https://gw.alipayobjects.com/zos/rmsportal/WhxKECPNujWoWEFNdnJE.png', + 'https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png', + 'https://gw.alipayobjects.com/zos/rmsportal/psOgztMplJMGpVEqfcgF.png', + 'https://gw.alipayobjects.com/zos/rmsportal/ZpBqSxLxVEXfcUNoPKrz.png', + 'https://gw.alipayobjects.com/zos/rmsportal/laiEnJdGHVOhJrUShBaJ.png', + 'https://gw.alipayobjects.com/zos/rmsportal/UrQsqscbKEpNuJcvBZBu.png', +]; + +const getNotice = (_: Request, res: Response) => { + res.json({ + data: [ + { + id: 'xxx1', + title: titles[0], + logo: avatars[0], + description: '那是一种内在的东西,他们到达不了,也无法触及的', + updatedAt: new Date(), + member: '科学搬砖组', + href: '', + memberLink: '', + }, + { + id: 'xxx2', + title: titles[1], + logo: avatars[1], + description: '希望是一个好东西,也许是最好的,好东西是不会消亡的', + updatedAt: new Date('2017-07-24'), + member: '全组都是吴彦祖', + href: '', + memberLink: '', + }, + { + id: 'xxx3', + title: titles[2], + logo: avatars[2], + description: '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆', + updatedAt: new Date(), + member: '中二少女团', + href: '', + memberLink: '', + }, + { + id: 'xxx4', + title: titles[3], + logo: avatars[3], + description: '那时候我只会想自己想要什么,从不想自己拥有什么', + updatedAt: new Date('2017-07-23'), + member: '程序员日常', + href: '', + memberLink: '', + }, + { + id: 'xxx5', + title: titles[4], + logo: avatars[4], + description: '凛冬将至', + updatedAt: new Date('2017-07-23'), + member: '高逼格设计天团', + href: '', + memberLink: '', + }, + { + id: 'xxx6', + title: titles[5], + logo: avatars[5], + description: '生命就像一盒巧克力,结果往往出人意料', + updatedAt: new Date('2017-07-23'), + member: '骗你来学计算机', + href: '', + memberLink: '', + }, + ], + }); +}; + +const getActivities = (_: Request, res: Response) => { + res.json({ + data: [ + { + id: 'trend-1', + updatedAt: new Date(), + user: { + name: '曲丽丽', + avatar: avatars2[0], + }, + group: { + name: '高逼格设计天团', + link: 'http://github.com/', + }, + project: { + name: '六月迭代', + link: 'http://github.com/', + }, + template: '在 @{group} 新建项目 @{project}', + }, + { + id: 'trend-2', + updatedAt: new Date(), + user: { + name: '付小小', + avatar: avatars2[1], + }, + group: { + name: '高逼格设计天团', + link: 'http://github.com/', + }, + project: { + name: '六月迭代', + link: 'http://github.com/', + }, + template: '在 @{group} 新建项目 @{project}', + }, + { + id: 'trend-3', + updatedAt: new Date(), + user: { + name: '林东东', + avatar: avatars2[2], + }, + group: { + name: '中二少女团', + link: 'http://github.com/', + }, + project: { + name: '六月迭代', + link: 'http://github.com/', + }, + template: '在 @{group} 新建项目 @{project}', + }, + { + id: 'trend-4', + updatedAt: new Date(), + user: { + name: '周星星', + avatar: avatars2[4], + }, + project: { + name: '5 月日常迭代', + link: 'http://github.com/', + }, + template: '将 @{project} 更新至已发布状态', + }, + { + id: 'trend-5', + updatedAt: new Date(), + user: { + name: '朱偏右', + avatar: avatars2[3], + }, + project: { + name: '工程效能', + link: 'http://github.com/', + }, + comment: { + name: '留言', + link: 'http://github.com/', + }, + template: '在 @{project} 发布了 @{comment}', + }, + { + id: 'trend-6', + updatedAt: new Date(), + user: { + name: '乐哥', + avatar: avatars2[5], + }, + group: { + name: '程序员日常', + link: 'http://github.com/', + }, + project: { + name: '品牌迭代', + link: 'http://github.com/', + }, + template: '在 @{group} 新建项目 @{project}', + }, + ], + }); +}; + +const radarOriginData = [ + { + name: '个人', + ref: 10, + koubei: 8, + output: 4, + contribute: 5, + hot: 7, + }, + { + name: '团队', + ref: 3, + koubei: 9, + output: 6, + contribute: 3, + hot: 1, + }, + { + name: '部门', + ref: 4, + koubei: 1, + output: 6, + contribute: 5, + hot: 7, + }, +]; + +const radarData: any[] = []; +const radarTitleMap = { + ref: '引用', + koubei: '口碑', + output: '产量', + contribute: '贡献', + hot: '热度', +}; +radarOriginData.forEach((item) => { + Object.keys(item).forEach((key) => { + if (key !== 'name') { + radarData.push({ + name: item.name, + label: radarTitleMap[key], + value: item[key], + }); + } + }); +}); + +const getChartData = (_: Request, res: Response) => { + res.json({ + data: { + visitData, + visitData2, + salesData, + searchData, + offlineData, + offlineChartData, + salesTypeData, + salesTypeDataOnline, + salesTypeDataOffline, + radarData, + }, + }); +}; + +export default { + 'GET /api/project/notice': getNotice, + 'GET /api/activities': getActivities, + 'GET /api/fake_workplace_chart_data': getChartData, +}; diff --git a/demo/src/pages/dashboard/workplace/components/EditableLinkGroup/index.less b/demo/src/pages/dashboard/workplace/components/EditableLinkGroup/index.less new file mode 100644 index 00000000..5add1b0b --- /dev/null +++ b/demo/src/pages/dashboard/workplace/components/EditableLinkGroup/index.less @@ -0,0 +1,16 @@ +@import '~antd/es/style/themes/default.less'; + +.linkGroup { + padding: 20px 0 8px 24px; + font-size: 0; + & > a { + display: inline-block; + width: 25%; + margin-bottom: 13px; + color: @text-color; + font-size: @font-size-base; + &:hover { + color: @primary-color; + } + } +} diff --git a/demo/src/pages/dashboard/workplace/components/EditableLinkGroup/index.tsx b/demo/src/pages/dashboard/workplace/components/EditableLinkGroup/index.tsx new file mode 100644 index 00000000..73b34384 --- /dev/null +++ b/demo/src/pages/dashboard/workplace/components/EditableLinkGroup/index.tsx @@ -0,0 +1,47 @@ +import React, { createElement } from 'react'; +import { PlusOutlined } from '@ant-design/icons'; +import { Button } from 'antd'; + +import styles from './index.less'; + +export type EditableLink = { + title: string; + href: string; + id?: string; +}; + +type EditableLinkGroupProps = { + onAdd: () => void; + links: EditableLink[]; + linkElement: any; +}; + +const EditableLinkGroup: React.FC = (props) => { + const { links, linkElement, onAdd } = props; + return ( +
    + {links.map((link) => + createElement( + linkElement, + { + key: `linkGroup-item-${link.id || link.title}`, + to: link.href, + href: link.href, + }, + link.title, + ), + )} + +
    + ); +}; + +EditableLinkGroup.defaultProps = { + links: [], + onAdd: () => {}, + linkElement: 'a', +}; + +export default EditableLinkGroup; diff --git a/demo/src/pages/dashboard/workplace/components/Radar/autoHeight.tsx b/demo/src/pages/dashboard/workplace/components/Radar/autoHeight.tsx new file mode 100644 index 00000000..5ec7bf39 --- /dev/null +++ b/demo/src/pages/dashboard/workplace/components/Radar/autoHeight.tsx @@ -0,0 +1,79 @@ +import React from 'react'; + +export type IReactComponent

    = + | React.StatelessComponent

    + | React.ComponentClass

    + | React.ClassicComponentClass

    ; + +function computeHeight(node: HTMLDivElement) { + const { style } = node; + style.height = '100%'; + const totalHeight = parseInt(`${getComputedStyle(node).height}`, 10); + const padding = + parseInt(`${getComputedStyle(node).paddingTop}`, 10) + + parseInt(`${getComputedStyle(node).paddingBottom}`, 10); + return totalHeight - padding; +} + +function getAutoHeight(n: HTMLDivElement | undefined) { + if (!n) { + return 0; + } + + const node = n; + + let height = computeHeight(node); + const parentNode = node.parentNode as HTMLDivElement; + if (parentNode) { + height = computeHeight(parentNode); + } + + return height; +} + +type AutoHeightProps = { + height?: number; +}; + +function autoHeight() { + return

    ( + WrappedComponent: React.ComponentClass

    | React.FC

    , + ): React.ComponentClass

    => { + class AutoHeightComponent extends React.Component

    { + state = { + computedHeight: 0, + }; + + root: HTMLDivElement | undefined = undefined; + + componentDidMount() { + const { height } = this.props; + if (!height) { + let h = getAutoHeight(this.root); + this.setState({ computedHeight: h }); + if (h < 1) { + h = getAutoHeight(this.root); + this.setState({ computedHeight: h }); + } + } + } + + handleRoot = (node: HTMLDivElement) => { + this.root = node; + }; + + render() { + const { height } = this.props; + const { computedHeight } = this.state; + const h = height || computedHeight; + return ( +

    + {h > 0 && } +
    + ); + } + } + return AutoHeightComponent; + }; +} +export default autoHeight; diff --git a/demo/src/pages/dashboard/workplace/components/Radar/index.tsx b/demo/src/pages/dashboard/workplace/components/Radar/index.tsx new file mode 100644 index 00000000..f7b8596a --- /dev/null +++ b/demo/src/pages/dashboard/workplace/components/Radar/index.tsx @@ -0,0 +1,219 @@ +import { Axis, Chart, Coord, Geom, Tooltip } from 'bizcharts'; +import { Col, Row } from 'antd'; +import React, { Component } from 'react'; + +import autoHeight from './autoHeight'; +import styles from './index.less'; + +export type RadarProps = { + title?: React.ReactNode; + height?: number; + padding?: [number, number, number, number]; + hasLegend?: boolean; + data: { + name: string; + label: string; + value: string | number; + }[]; + colors?: string[]; + animate?: boolean; + forceFit?: boolean; + tickCount?: number; + style?: React.CSSProperties; +}; +type RadarState = { + legendData: { + checked: boolean; + name: string; + color: string; + percent: number; + value: string; + }[]; +}; +/* eslint react/no-danger:0 */ +class Radar extends Component { + state: RadarState = { + legendData: [], + }; + + chart: G2.Chart | undefined = undefined; + + node: HTMLDivElement | undefined = undefined; + + componentDidMount() { + this.getLegendData(); + } + + componentDidUpdate(preProps: RadarProps) { + const { data } = this.props; + if (data !== preProps.data) { + this.getLegendData(); + } + } + + getG2Instance = (chart: G2.Chart) => { + this.chart = chart; + }; + + // for custom lengend view + getLegendData = () => { + if (!this.chart) return; + const geom = this.chart.getAllGeoms()[0]; // 获取所有的图形 + if (!geom) return; + const items = (geom as any).get('dataArray') || []; // 获取图形对应的 + + const legendData = items.map((item: { color: any; _origin: any }[]) => { + // eslint-disable-next-line no-underscore-dangle + const origins = item.map((t) => t._origin); + const result = { + name: origins[0].name, + color: item[0].color, + checked: true, + value: origins.reduce((p, n) => p + n.value, 0), + }; + + return result; + }); + + this.setState({ + legendData, + }); + }; + + handleRef = (n: HTMLDivElement) => { + this.node = n; + }; + + handleLegendClick = ( + item: { + checked: boolean; + name: string; + }, + i: string | number, + ) => { + const newItem = item; + newItem.checked = !newItem.checked; + + const { legendData } = this.state; + legendData[i] = newItem; + + const filteredLegendData = legendData.filter((l) => l.checked).map((l) => l.name); + + if (this.chart) { + this.chart.filter('name', (val) => filteredLegendData.indexOf(`${val}`) > -1); + this.chart.repaint(); + } + + this.setState({ + legendData, + }); + }; + + render() { + const defaultColors = [ + '#1890FF', + '#FACC14', + '#2FC25B', + '#8543E0', + '#F04864', + '#13C2C2', + '#fa8c16', + '#a0d911', + ]; + + const { + data = [], + height = 0, + title, + hasLegend = false, + forceFit = true, + tickCount = 5, + padding = [35, 30, 16, 30] as [number, number, number, number], + animate = true, + colors = defaultColors, + } = this.props; + + const { legendData } = this.state; + + const scale = { + value: { + min: 0, + tickCount, + }, + }; + + const chartHeight = height - (hasLegend ? 80 : 22); + + return ( +
    + {title &&

    {title}

    } + + + + + + + + + {hasLegend && ( + + {legendData.map((item, i) => ( + this.handleLegendClick(item, i)} + > +
    +

    + + {item.name} +

    +
    {item.value}
    +
    + + ))} +
    + )} +
    + ); + } +} + +export default autoHeight()(Radar); diff --git a/demo/src/pages/dashboard/workplace/data.d.ts b/demo/src/pages/dashboard/workplace/data.d.ts new file mode 100644 index 00000000..e96271ec --- /dev/null +++ b/demo/src/pages/dashboard/workplace/data.d.ts @@ -0,0 +1,111 @@ +import { DataItem } from '@antv/g2plot/esm/interface/config'; + +export { DataItem }; + +export interface TagType { + key: string; + label: string; +} + +export type SearchDataType = { + index: number; + keyword: string; + count: number; + range: number; + status: number; +}; + +export type OfflineDataType = { + name: string; + cvr: number; +}; + +export interface RadarData { + name: string; + label: string; + value: number; +} + +export type AnalysisData = { + visitData: VisitDataType[]; + visitData2: VisitDataType[]; + salesData: VisitDataType[]; + searchData: SearchDataType[]; + offlineData: OfflineDataType[]; + offlineChartData: OfflineChartData[]; + salesTypeData: VisitDataType[]; + salesTypeDataOnline: VisitDataType[]; + salesTypeDataOffline: VisitDataType[]; + radarData: DataItem[]; +}; + +export type GeographicType = { + province: { + label: string; + key: string; + }; + city: { + label: string; + key: string; + }; +}; + +export type NoticeType = { + id: string; + title: string; + logo: string; + description: string; + updatedAt: string; + member: string; + href: string; + memberLink: string; +}; + +export type CurrentUser = { + name: string; + avatar: string; + userid: string; + notice: NoticeType[]; + email: string; + signature: string; + title: string; + group: string; + tags: TagType[]; + notifyCount: number; + unreadCount: number; + country: string; + geographic: GeographicType; + address: string; + phone: string; +}; + +export type Member = { + avatar: string; + name: string; + id: string; +}; + +export type ActivitiesType = { + id: string; + updatedAt: string; + user: { + name: string; + avatar: string; + }; + group: { + name: string; + link: string; + }; + project: { + name: string; + link: string; + }; + + template: string; +}; + +export type RadarDataType = { + label: string; + name: string; + value: number; +}; diff --git a/demo/src/pages/dashboard/workplace/index.tsx b/demo/src/pages/dashboard/workplace/index.tsx new file mode 100644 index 00000000..701e64a1 --- /dev/null +++ b/demo/src/pages/dashboard/workplace/index.tsx @@ -0,0 +1,242 @@ +import type { FC } from 'react'; +import { Avatar, Card, Col, List, Skeleton, Row, Statistic } from 'antd'; +import { Radar } from '@ant-design/charts'; + +import { Link, useRequest } from 'umi'; +import { PageContainer } from '@ant-design/pro-layout'; +import moment from 'moment'; +import EditableLinkGroup from './components/EditableLinkGroup'; +import styles from './style.less'; +import type { ActivitiesType, CurrentUser } from './data.d'; +import { queryProjectNotice, queryActivities, fakeChartData } from './service'; + +const links = [ + { + title: '操作一', + href: '', + }, + { + title: '操作二', + href: '', + }, + { + title: '操作三', + href: '', + }, + { + title: '操作四', + href: '', + }, + { + title: '操作五', + href: '', + }, + { + title: '操作六', + href: '', + }, +]; + +const PageHeaderContent: FC<{ currentUser: Partial }> = ({ currentUser }) => { + const loading = currentUser && Object.keys(currentUser).length; + if (!loading) { + return ; + } + return ( +
    +
    + +
    +
    +
    + 早安, + {currentUser.name} + ,祝你开心每一天! +
    +
    + {currentUser.title} |{currentUser.group} +
    +
    +
    + ); +}; + +const ExtraContent: FC> = () => ( +
    +
    + +
    +
    + +
    +
    + +
    +
    +); + +const Workplace: FC = () => { + const { loading: projectLoading, data: projectNotice = [] } = useRequest(queryProjectNotice); + const { loading: activitiesLoading, data: activities = [] } = useRequest(queryActivities); + const { data } = useRequest(fakeChartData); + + const renderActivities = (item: ActivitiesType) => { + const events = item.template.split(/@\{([^{}]*)\}/gi).map((key) => { + if (item[key]) { + return ( + + {item[key].name} + + ); + } + return key; + }); + return ( + + } + title={ + + {item.user.name} +   + {events} + + } + description={ + + {moment(item.updatedAt).fromNow()} + + } + /> + + ); + }; + + return ( + + } + extraContent={} + > + + + 全部项目} + loading={projectLoading} + bodyStyle={{ padding: 0 }} + > + {projectNotice.map((item) => ( + + + + + {item.title} +
    + } + description={item.description} + /> +
    + {item.member || ''} + {item.updatedAt && ( + + {moment(item.updatedAt).fromNow()} + + )} +
    + + + ))} + + + + loading={activitiesLoading} + renderItem={(item) => renderActivities(item)} + dataSource={activities} + className={styles.activitiesList} + size="large" + /> + + + + + {}} links={links} linkElement={Link} /> + + +
    + +
    +
    + +
    + + {projectNotice.map((item) => ( + + + + {item.member} + + + ))} + +
    +
    + + + + ); +}; + +export default Workplace; diff --git a/demo/src/pages/dashboard/workplace/service.ts b/demo/src/pages/dashboard/workplace/service.ts new file mode 100644 index 00000000..9d5cd915 --- /dev/null +++ b/demo/src/pages/dashboard/workplace/service.ts @@ -0,0 +1,14 @@ +import { request } from 'umi'; +import type { NoticeType, ActivitiesType, AnalysisData } from './data'; + +export async function queryProjectNotice(): Promise<{ data: NoticeType[] }> { + return request('/api/project/notice'); +} + +export async function queryActivities(): Promise<{ data: ActivitiesType[] }> { + return request('/api/activities'); +} + +export async function fakeChartData(): Promise<{ data: AnalysisData }> { + return request('/api/fake_workplace_chart_data'); +} diff --git a/demo/src/pages/dashboard/workplace/style.less b/demo/src/pages/dashboard/workplace/style.less new file mode 100644 index 00000000..46c10e14 --- /dev/null +++ b/demo/src/pages/dashboard/workplace/style.less @@ -0,0 +1,250 @@ +@import '~antd/es/style/themes/default.less'; + +.textOverflow() { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-break: break-all; +} + +// mixins for clearfix +// ------------------------ +.clearfix() { + zoom: 1; + &::before, + &::after { + display: table; + content: ' '; + } + &::after { + clear: both; + height: 0; + font-size: 0; + visibility: hidden; + } +} + +.activitiesList { + padding: 0 24px 8px 24px; + .username { + color: @text-color; + } + .event { + font-weight: normal; + } +} + +.pageHeaderContent { + display: flex; + .avatar { + flex: 0 1 72px; + & > span { + display: block; + width: 72px; + height: 72px; + border-radius: 72px; + } + } + .content { + position: relative; + top: 4px; + flex: 1 1 auto; + margin-left: 24px; + color: @text-color-secondary; + line-height: 22px; + .contentTitle { + margin-bottom: 12px; + color: @heading-color; + font-weight: 500; + font-size: 20px; + line-height: 28px; + } + } +} + +.extraContent { + .clearfix(); + + float: right; + white-space: nowrap; + .statItem { + position: relative; + display: inline-block; + padding: 0 32px; + > p:first-child { + margin-bottom: 4px; + color: @text-color-secondary; + font-size: @font-size-base; + line-height: 22px; + } + > p { + margin: 0; + color: @heading-color; + font-size: 30px; + line-height: 38px; + > span { + color: @text-color-secondary; + font-size: 20px; + } + } + &::after { + position: absolute; + top: 8px; + right: 0; + width: 1px; + height: 40px; + background-color: @border-color-split; + content: ''; + } + &:last-child { + padding-right: 0; + &::after { + display: none; + } + } + } +} + +.members { + a { + display: block; + height: 24px; + margin: 12px 0; + color: @text-color; + transition: all 0.3s; + .textOverflow(); + .member { + margin-left: 12px; + font-size: @font-size-base; + line-height: 24px; + vertical-align: top; + } + &:hover { + color: @primary-color; + } + } +} + +.projectList { + :global { + .ant-card-meta-description { + height: 44px; + overflow: hidden; + color: @text-color-secondary; + line-height: 22px; + } + } + .cardTitle { + font-size: 0; + a { + display: inline-block; + height: 24px; + margin-left: 12px; + color: @heading-color; + font-size: @font-size-base; + line-height: 24px; + vertical-align: top; + &:hover { + color: @primary-color; + } + } + } + .projectGrid { + width: 33.33%; + } + .projectItemContent { + display: flex; + height: 20px; + margin-top: 8px; + overflow: hidden; + font-size: 12px; + line-height: 20px; + .textOverflow(); + a { + display: inline-block; + flex: 1 1 0; + color: @text-color-secondary; + .textOverflow(); + &:hover { + color: @primary-color; + } + } + .datetime { + flex: 0 0 auto; + float: right; + color: @disabled-color; + } + } +} + +.datetime { + color: @disabled-color; +} + +@media screen and (max-width: @screen-xl) and (min-width: @screen-lg) { + .activeCard { + margin-bottom: 24px; + } + .members { + margin-bottom: 0; + } + .extraContent { + margin-left: -44px; + .statItem { + padding: 0 16px; + } + } +} + +@media screen and (max-width: @screen-lg) { + .activeCard { + margin-bottom: 24px; + } + .members { + margin-bottom: 0; + } + .extraContent { + float: none; + margin-right: 0; + .statItem { + padding: 0 16px; + text-align: left; + &::after { + display: none; + } + } + } +} + +@media screen and (max-width: @screen-md) { + .extraContent { + margin-left: -16px; + } + .projectList { + .projectGrid { + width: 50%; + } + } +} + +@media screen and (max-width: @screen-sm) { + .pageHeaderContent { + display: block; + .content { + margin-left: 0; + } + } + .extraContent { + .statItem { + float: none; + } + } +} + +@media screen and (max-width: @screen-xs) { + .projectList { + .projectGrid { + width: 100%; + } + } +} diff --git a/demo/src/pages/document.ejs b/demo/src/pages/document.ejs new file mode 100644 index 00000000..6db8355f --- /dev/null +++ b/demo/src/pages/document.ejs @@ -0,0 +1,236 @@ + + + + + + + + + + + Ant Design Pro + + + + +
    + +
    + logo +
    +
    + +
    +
    +
    + + Ant Design +
    +
    +
    + + diff --git a/demo/src/pages/editor/flow/common/IconFont/index.ts b/demo/src/pages/editor/flow/common/IconFont/index.ts new file mode 100644 index 00000000..987647c0 --- /dev/null +++ b/demo/src/pages/editor/flow/common/IconFont/index.ts @@ -0,0 +1,7 @@ +import { createFromIconfontCN } from '@ant-design/icons'; + +const IconFont = createFromIconfontCN({ + scriptUrl: 'https://at.alicdn.com/t/font_1101588_01zniftxm9yp.js', +}); + +export default IconFont; diff --git a/demo/src/pages/editor/flow/components/EditorContextMenu/FlowContextMenu.tsx b/demo/src/pages/editor/flow/components/EditorContextMenu/FlowContextMenu.tsx new file mode 100644 index 00000000..c5cc4e50 --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorContextMenu/FlowContextMenu.tsx @@ -0,0 +1,34 @@ +import { CanvasMenu, ContextMenu, EdgeMenu, GroupMenu, MultiMenu, NodeMenu } from 'gg-editor'; + +import MenuItem from './MenuItem'; +import styles from './index.less'; + +const FlowContextMenu = () => ( + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export default FlowContextMenu; diff --git a/demo/src/pages/editor/flow/components/EditorContextMenu/KoniContextMenu.tsx b/demo/src/pages/editor/flow/components/EditorContextMenu/KoniContextMenu.tsx new file mode 100644 index 00000000..8b049a5e --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorContextMenu/KoniContextMenu.tsx @@ -0,0 +1,3 @@ +import FlowContextMenu from './FlowContextMenu'; + +export default FlowContextMenu; diff --git a/demo/src/pages/editor/flow/components/EditorContextMenu/MenuItem.tsx b/demo/src/pages/editor/flow/components/EditorContextMenu/MenuItem.tsx new file mode 100644 index 00000000..297967ab --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorContextMenu/MenuItem.tsx @@ -0,0 +1,27 @@ +import { Command } from 'gg-editor'; +import React from 'react'; +import IconFont from '../../common/IconFont'; +import styles from './index.less'; + +const upperFirst = (str: string) => + str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); + +type MenuItemProps = { + command: string; + icon?: string; + text?: string; +}; +const MenuItem: React.FC = (props) => { + const { command, icon, text } = props; + + return ( + +
    + + {text || upperFirst(command)} +
    +
    + ); +}; + +export default MenuItem; diff --git a/demo/src/pages/editor/flow/components/EditorContextMenu/MindContextMenu.tsx b/demo/src/pages/editor/flow/components/EditorContextMenu/MindContextMenu.tsx new file mode 100644 index 00000000..5a8b4076 --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorContextMenu/MindContextMenu.tsx @@ -0,0 +1,22 @@ +import { CanvasMenu, ContextMenu, NodeMenu } from 'gg-editor'; + +import MenuItem from './MenuItem'; +import styles from './index.less'; + +const MindContextMenu = () => ( + + + + + + + + + + + + + +); + +export default MindContextMenu; diff --git a/demo/src/pages/editor/flow/components/EditorContextMenu/index.less b/demo/src/pages/editor/flow/components/EditorContextMenu/index.less new file mode 100644 index 00000000..39cbd2e9 --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorContextMenu/index.less @@ -0,0 +1,41 @@ +@import '~antd/es/style/themes/default.less'; + +.contextMenu { + display: none; + overflow: hidden; + background: @component-background; + border-radius: 4px; + box-shadow: @box-shadow-base; + + .item { + display: flex; + align-items: center; + padding: 5px 12px; + cursor: pointer; + transition: all 0.3s; + user-select: none; + + &:hover { + background: @select-item-selected-bg; + } + + span.anticon { + margin-right: 8px; + } + } + + :global { + .disable { + :local { + .item { + color: @disabled-color; + cursor: auto; + + &:hover { + background: @item-hover-bg; + } + } + } + } + } +} diff --git a/demo/src/pages/editor/flow/components/EditorContextMenu/index.tsx b/demo/src/pages/editor/flow/components/EditorContextMenu/index.tsx new file mode 100644 index 00000000..6ee93423 --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorContextMenu/index.tsx @@ -0,0 +1,5 @@ +import FlowContextMenu from './FlowContextMenu'; +import KoniContextMenu from './KoniContextMenu'; +import MindContextMenu from './MindContextMenu'; + +export { FlowContextMenu, MindContextMenu, KoniContextMenu }; diff --git a/demo/src/pages/editor/flow/components/EditorDetailPanel/DetailForm.tsx b/demo/src/pages/editor/flow/components/EditorDetailPanel/DetailForm.tsx new file mode 100644 index 00000000..c89265b6 --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorDetailPanel/DetailForm.tsx @@ -0,0 +1,114 @@ +import React from 'react'; +import { Card, Input, Select, Form } from 'antd'; +import { withPropsAPI } from 'gg-editor'; + +const upperFirst = (str: string) => + str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); + +const { Item } = Form; +const { Option } = Select; + +const inlineFormItemLayout = { + labelCol: { + sm: { span: 8 }, + }, + wrapperCol: { + sm: { span: 16 }, + }, +}; + +type DetailFormProps = { + type: string; + propsAPI?: any; +}; + +class DetailForm extends React.Component { + get item() { + const { propsAPI } = this.props; + return propsAPI.getSelected()[0]; + } + + handleFieldChange = (values: any) => { + const { propsAPI } = this.props; + const { getSelected, executeCommand, update } = propsAPI; + + setTimeout(() => { + const item = getSelected()[0]; + if (!item) { + return; + } + executeCommand(() => { + update(item, { + ...values, + }); + }); + }, 0); + }; + + handleInputBlur = (type: string) => (e: React.FormEvent) => { + e.preventDefault(); + this.handleFieldChange({ + [type]: e.currentTarget.value, + }); + }; + + renderNodeDetail = () => { + const { label } = this.item.getModel(); + + return ( +
    + + + +
    + ); + }; + + renderEdgeDetail = () => { + const { label = '', shape = 'flow-smooth' } = this.item.getModel(); + + return ( +
    + + + + + + +
    + ); + }; + + renderGroupDetail = () => { + const { label = '新建分组' } = this.item.getModel(); + + return ( +
    + + + +
    + ); + }; + + render() { + const { type } = this.props; + if (!this.item) { + return null; + } + + return ( + + {type === 'node' && this.renderNodeDetail()} + {type === 'edge' && this.renderEdgeDetail()} + {type === 'group' && this.renderGroupDetail()} + + ); + } +} + +export default withPropsAPI(DetailForm as any); diff --git a/demo/src/pages/editor/flow/components/EditorDetailPanel/FlowDetailPanel.tsx b/demo/src/pages/editor/flow/components/EditorDetailPanel/FlowDetailPanel.tsx new file mode 100644 index 00000000..bb7035c9 --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorDetailPanel/FlowDetailPanel.tsx @@ -0,0 +1,27 @@ +import { CanvasPanel, DetailPanel, EdgePanel, GroupPanel, MultiPanel, NodePanel } from 'gg-editor'; + +import { Card } from 'antd'; +import DetailForm from './DetailForm'; +import styles from './index.less'; + +const FlowDetailPanel = () => ( + + + + + + + + + + + + + + + + + +); + +export default FlowDetailPanel; diff --git a/demo/src/pages/editor/flow/components/EditorDetailPanel/KoniDetailPanel.tsx b/demo/src/pages/editor/flow/components/EditorDetailPanel/KoniDetailPanel.tsx new file mode 100644 index 00000000..18aea9a4 --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorDetailPanel/KoniDetailPanel.tsx @@ -0,0 +1,3 @@ +import FlowDetailPanel from './FlowDetailPanel'; + +export default FlowDetailPanel; diff --git a/demo/src/pages/editor/flow/components/EditorDetailPanel/MindDetailPanel.tsx b/demo/src/pages/editor/flow/components/EditorDetailPanel/MindDetailPanel.tsx new file mode 100644 index 00000000..dceaf36e --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorDetailPanel/MindDetailPanel.tsx @@ -0,0 +1,18 @@ +import { CanvasPanel, DetailPanel, NodePanel } from 'gg-editor'; + +import { Card } from 'antd'; +import DetailForm from './DetailForm'; +import styles from './index.less'; + +const MindDetailPanel = () => ( + + + + + + + + +); + +export default MindDetailPanel; diff --git a/demo/src/pages/editor/flow/components/EditorDetailPanel/index.less b/demo/src/pages/editor/flow/components/EditorDetailPanel/index.less new file mode 100644 index 00000000..0b2c564b --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorDetailPanel/index.less @@ -0,0 +1,6 @@ +@import '~antd/es/style/themes/default.less'; + +.detailPanel { + flex: 1; + background-color: @component-background; +} diff --git a/demo/src/pages/editor/flow/components/EditorDetailPanel/index.tsx b/demo/src/pages/editor/flow/components/EditorDetailPanel/index.tsx new file mode 100644 index 00000000..50aa37a8 --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorDetailPanel/index.tsx @@ -0,0 +1,5 @@ +import FlowDetailPanel from './FlowDetailPanel'; +import KoniDetailPanel from './KoniDetailPanel'; +import MindDetailPanel from './MindDetailPanel'; + +export { FlowDetailPanel, MindDetailPanel, KoniDetailPanel }; diff --git a/demo/src/pages/editor/flow/components/EditorItemPanel/FlowItemPanel.tsx b/demo/src/pages/editor/flow/components/EditorItemPanel/FlowItemPanel.tsx new file mode 100644 index 00000000..c7dcbe60 --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorItemPanel/FlowItemPanel.tsx @@ -0,0 +1,53 @@ +import { Item, ItemPanel } from 'gg-editor'; + +import { Card } from 'antd'; +import styles from './index.less'; + +const FlowItemPanel = () => ( + + + + + + + + +); + +export default FlowItemPanel; diff --git a/demo/src/pages/editor/flow/components/EditorItemPanel/KoniItemPanel.tsx b/demo/src/pages/editor/flow/components/EditorItemPanel/KoniItemPanel.tsx new file mode 100644 index 00000000..3901d292 --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorItemPanel/KoniItemPanel.tsx @@ -0,0 +1,49 @@ +import { Item, ItemPanel } from 'gg-editor'; + +import { Card } from 'antd'; +import styles from './index.less'; + +const KoniItemPanel = () => ( + + + + + + + +); + +export default KoniItemPanel; diff --git a/demo/src/pages/editor/flow/components/EditorItemPanel/index.less b/demo/src/pages/editor/flow/components/EditorItemPanel/index.less new file mode 100644 index 00000000..b594a66b --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorItemPanel/index.less @@ -0,0 +1,19 @@ +@import '~antd/es/style/themes/default.less'; + +.itemPanel { + flex: 1; + + :global { + .ant-card { + height: 100%; + } + .ant-card-body { + display: flex; + flex-direction: column; + align-items: center; + > div { + margin-bottom: 16px; + } + } + } +} diff --git a/demo/src/pages/editor/flow/components/EditorItemPanel/index.tsx b/demo/src/pages/editor/flow/components/EditorItemPanel/index.tsx new file mode 100644 index 00000000..2ba03fbb --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorItemPanel/index.tsx @@ -0,0 +1,4 @@ +import FlowItemPanel from './FlowItemPanel'; +import KoniItemPanel from './KoniItemPanel'; + +export { FlowItemPanel, KoniItemPanel }; diff --git a/demo/src/pages/editor/flow/components/EditorMinimap/index.tsx b/demo/src/pages/editor/flow/components/EditorMinimap/index.tsx new file mode 100644 index 00000000..b337edbf --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorMinimap/index.tsx @@ -0,0 +1,10 @@ +import { Card } from 'antd'; +import { Minimap } from 'gg-editor'; + +const EditorMinimap = () => ( + + + +); + +export default EditorMinimap; diff --git a/demo/src/pages/editor/flow/components/EditorToolbar/FlowToolbar.tsx b/demo/src/pages/editor/flow/components/EditorToolbar/FlowToolbar.tsx new file mode 100644 index 00000000..90494876 --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorToolbar/FlowToolbar.tsx @@ -0,0 +1,29 @@ +import { Divider } from 'antd'; +import { Toolbar } from 'gg-editor'; +import ToolbarButton from './ToolbarButton'; +import styles from './index.less'; + +const FlowToolbar = () => ( + + + + + + + + + + + + + + + + + + + + +); + +export default FlowToolbar; diff --git a/demo/src/pages/editor/flow/components/EditorToolbar/KoniToolbar.tsx b/demo/src/pages/editor/flow/components/EditorToolbar/KoniToolbar.tsx new file mode 100644 index 00000000..f222007a --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorToolbar/KoniToolbar.tsx @@ -0,0 +1,3 @@ +import FlowToolbar from './FlowToolbar'; + +export default FlowToolbar; diff --git a/demo/src/pages/editor/flow/components/EditorToolbar/MindToolbar.tsx b/demo/src/pages/editor/flow/components/EditorToolbar/MindToolbar.tsx new file mode 100644 index 00000000..23761093 --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorToolbar/MindToolbar.tsx @@ -0,0 +1,24 @@ +import { Divider } from 'antd'; +import { Toolbar } from 'gg-editor'; +import ToolbarButton from './ToolbarButton'; +import styles from './index.less'; + +const FlowToolbar = () => ( + + + + + + + + + + + + + + + +); + +export default FlowToolbar; diff --git a/demo/src/pages/editor/flow/components/EditorToolbar/ToolbarButton.tsx b/demo/src/pages/editor/flow/components/EditorToolbar/ToolbarButton.tsx new file mode 100644 index 00000000..94f9e9c6 --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorToolbar/ToolbarButton.tsx @@ -0,0 +1,31 @@ +import { Command } from 'gg-editor'; +import React from 'react'; +import { Tooltip } from 'antd'; +import IconFont from '../../common/IconFont'; +import styles from './index.less'; + +const upperFirst = (str: string) => + str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); + +type ToolbarButtonProps = { + command: string; + icon?: string; + text?: string; +}; +const ToolbarButton: React.FC = (props) => { + const { command, icon, text } = props; + + return ( + + + + + + ); +}; + +export default ToolbarButton; diff --git a/demo/src/pages/editor/flow/components/EditorToolbar/index.less b/demo/src/pages/editor/flow/components/EditorToolbar/index.less new file mode 100644 index 00000000..d9e98d1f --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorToolbar/index.less @@ -0,0 +1,40 @@ +@import '~antd/es/style/themes/default.less'; + +.toolbar { + display: flex; + align-items: center; + + :global { + .command .anticon { + display: inline-block; + width: 27px; + height: 27px; + margin: 0 6px; + padding-top: 6px; + text-align: center; + cursor: pointer; + + &:hover { + border: 1px solid @item-active-bg; + } + } + + .disable .anticon { + color: @text-color-secondary; + cursor: auto; + + &:hover { + border: 1px solid @border-color-base; + } + } + } +} + +.tooltip { + :global { + .ant-tooltip-inner { + font-size: 12px; + border-radius: 0; + } + } +} diff --git a/demo/src/pages/editor/flow/components/EditorToolbar/index.tsx b/demo/src/pages/editor/flow/components/EditorToolbar/index.tsx new file mode 100644 index 00000000..58f1d277 --- /dev/null +++ b/demo/src/pages/editor/flow/components/EditorToolbar/index.tsx @@ -0,0 +1,5 @@ +import FlowToolbar from './FlowToolbar'; +import KoniToolbar from './KoniToolbar'; +import MindToolbar from './MindToolbar'; + +export { FlowToolbar, MindToolbar, KoniToolbar }; diff --git a/demo/src/pages/editor/flow/index.less b/demo/src/pages/editor/flow/index.less new file mode 100644 index 00000000..92dac57d --- /dev/null +++ b/demo/src/pages/editor/flow/index.less @@ -0,0 +1,48 @@ +@import '~antd/es/style/themes/default.less'; + +.editor { + display: flex; + flex: 1; + flex-direction: column; + width: 100%; + height: calc(100vh - 250px); + background: @component-background; +} + +.editorHd { + padding: 8px; + background: @descriptions-bg; + border: 1px solid @item-active-bg; +} + +.editorBd { + flex: 1; +} + +.editorSidebar, +.editorContent { + display: flex; + flex-direction: column; +} + +.editorSidebar { + background: @descriptions-bg; + :global { + .g6-editor-minimap-container { + background: none !important ; + } + } + &:first-child { + border-right: 1px solid @item-active-bg; + } + + &:last-child { + border-left: 1px solid @item-active-bg; + } +} + +.flow, +.mind, +.koni { + flex: 1; +} diff --git a/demo/src/pages/editor/flow/index.tsx b/demo/src/pages/editor/flow/index.tsx new file mode 100644 index 00000000..b8da7bb3 --- /dev/null +++ b/demo/src/pages/editor/flow/index.tsx @@ -0,0 +1,37 @@ +import { Col, Row } from 'antd'; +import GGEditor, { Flow } from 'gg-editor'; + +import { PageContainer } from '@ant-design/pro-layout'; +import EditorMinimap from './components/EditorMinimap'; +import { FlowContextMenu } from './components/EditorContextMenu'; +import { FlowDetailPanel } from './components/EditorDetailPanel'; +import { FlowItemPanel } from './components/EditorItemPanel'; +import { FlowToolbar } from './components/EditorToolbar'; +import styles from './index.less'; + +GGEditor.setTrackable(false); + +export default () => ( + + + + + + + + + + + + + + + + + + + + + + +); diff --git a/demo/src/pages/editor/koni/common/IconFont/index.ts b/demo/src/pages/editor/koni/common/IconFont/index.ts new file mode 100644 index 00000000..987647c0 --- /dev/null +++ b/demo/src/pages/editor/koni/common/IconFont/index.ts @@ -0,0 +1,7 @@ +import { createFromIconfontCN } from '@ant-design/icons'; + +const IconFont = createFromIconfontCN({ + scriptUrl: 'https://at.alicdn.com/t/font_1101588_01zniftxm9yp.js', +}); + +export default IconFont; diff --git a/demo/src/pages/editor/koni/components/EditorContextMenu/FlowContextMenu.tsx b/demo/src/pages/editor/koni/components/EditorContextMenu/FlowContextMenu.tsx new file mode 100644 index 00000000..c5cc4e50 --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorContextMenu/FlowContextMenu.tsx @@ -0,0 +1,34 @@ +import { CanvasMenu, ContextMenu, EdgeMenu, GroupMenu, MultiMenu, NodeMenu } from 'gg-editor'; + +import MenuItem from './MenuItem'; +import styles from './index.less'; + +const FlowContextMenu = () => ( + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export default FlowContextMenu; diff --git a/demo/src/pages/editor/koni/components/EditorContextMenu/KoniContextMenu.tsx b/demo/src/pages/editor/koni/components/EditorContextMenu/KoniContextMenu.tsx new file mode 100644 index 00000000..8b049a5e --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorContextMenu/KoniContextMenu.tsx @@ -0,0 +1,3 @@ +import FlowContextMenu from './FlowContextMenu'; + +export default FlowContextMenu; diff --git a/demo/src/pages/editor/koni/components/EditorContextMenu/MenuItem.tsx b/demo/src/pages/editor/koni/components/EditorContextMenu/MenuItem.tsx new file mode 100644 index 00000000..297967ab --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorContextMenu/MenuItem.tsx @@ -0,0 +1,27 @@ +import { Command } from 'gg-editor'; +import React from 'react'; +import IconFont from '../../common/IconFont'; +import styles from './index.less'; + +const upperFirst = (str: string) => + str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); + +type MenuItemProps = { + command: string; + icon?: string; + text?: string; +}; +const MenuItem: React.FC = (props) => { + const { command, icon, text } = props; + + return ( + +
    + + {text || upperFirst(command)} +
    +
    + ); +}; + +export default MenuItem; diff --git a/demo/src/pages/editor/koni/components/EditorContextMenu/MindContextMenu.tsx b/demo/src/pages/editor/koni/components/EditorContextMenu/MindContextMenu.tsx new file mode 100644 index 00000000..5a8b4076 --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorContextMenu/MindContextMenu.tsx @@ -0,0 +1,22 @@ +import { CanvasMenu, ContextMenu, NodeMenu } from 'gg-editor'; + +import MenuItem from './MenuItem'; +import styles from './index.less'; + +const MindContextMenu = () => ( + + + + + + + + + + + + + +); + +export default MindContextMenu; diff --git a/demo/src/pages/editor/koni/components/EditorContextMenu/index.less b/demo/src/pages/editor/koni/components/EditorContextMenu/index.less new file mode 100644 index 00000000..25d68b2c --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorContextMenu/index.less @@ -0,0 +1,40 @@ +@import '~antd/es/style/themes/default.less'; + +.contextMenu { + display: none; + overflow: hidden; + background: @component-background; + border-radius: 4px; + box-shadow: @box-shadow-base; + .item { + display: flex; + align-items: center; + padding: 5px 12px; + cursor: pointer; + transition: all 0.3s; + user-select: none; + + &:hover { + background: @select-item-selected-bg; + } + + .anticon { + margin-right: 8px; + } + } + + :global { + .disable { + :local { + .item { + color: @disabled-color; + cursor: auto; + + &:hover { + background: @item-hover-bg; + } + } + } + } + } +} diff --git a/demo/src/pages/editor/koni/components/EditorContextMenu/index.tsx b/demo/src/pages/editor/koni/components/EditorContextMenu/index.tsx new file mode 100644 index 00000000..6ee93423 --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorContextMenu/index.tsx @@ -0,0 +1,5 @@ +import FlowContextMenu from './FlowContextMenu'; +import KoniContextMenu from './KoniContextMenu'; +import MindContextMenu from './MindContextMenu'; + +export { FlowContextMenu, MindContextMenu, KoniContextMenu }; diff --git a/demo/src/pages/editor/koni/components/EditorDetailPanel/DetailForm.tsx b/demo/src/pages/editor/koni/components/EditorDetailPanel/DetailForm.tsx new file mode 100644 index 00000000..c89265b6 --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorDetailPanel/DetailForm.tsx @@ -0,0 +1,114 @@ +import React from 'react'; +import { Card, Input, Select, Form } from 'antd'; +import { withPropsAPI } from 'gg-editor'; + +const upperFirst = (str: string) => + str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); + +const { Item } = Form; +const { Option } = Select; + +const inlineFormItemLayout = { + labelCol: { + sm: { span: 8 }, + }, + wrapperCol: { + sm: { span: 16 }, + }, +}; + +type DetailFormProps = { + type: string; + propsAPI?: any; +}; + +class DetailForm extends React.Component { + get item() { + const { propsAPI } = this.props; + return propsAPI.getSelected()[0]; + } + + handleFieldChange = (values: any) => { + const { propsAPI } = this.props; + const { getSelected, executeCommand, update } = propsAPI; + + setTimeout(() => { + const item = getSelected()[0]; + if (!item) { + return; + } + executeCommand(() => { + update(item, { + ...values, + }); + }); + }, 0); + }; + + handleInputBlur = (type: string) => (e: React.FormEvent) => { + e.preventDefault(); + this.handleFieldChange({ + [type]: e.currentTarget.value, + }); + }; + + renderNodeDetail = () => { + const { label } = this.item.getModel(); + + return ( +
    + + + +
    + ); + }; + + renderEdgeDetail = () => { + const { label = '', shape = 'flow-smooth' } = this.item.getModel(); + + return ( +
    + + + + + + +
    + ); + }; + + renderGroupDetail = () => { + const { label = '新建分组' } = this.item.getModel(); + + return ( +
    + + + +
    + ); + }; + + render() { + const { type } = this.props; + if (!this.item) { + return null; + } + + return ( + + {type === 'node' && this.renderNodeDetail()} + {type === 'edge' && this.renderEdgeDetail()} + {type === 'group' && this.renderGroupDetail()} + + ); + } +} + +export default withPropsAPI(DetailForm as any); diff --git a/demo/src/pages/editor/koni/components/EditorDetailPanel/FlowDetailPanel.tsx b/demo/src/pages/editor/koni/components/EditorDetailPanel/FlowDetailPanel.tsx new file mode 100644 index 00000000..bb7035c9 --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorDetailPanel/FlowDetailPanel.tsx @@ -0,0 +1,27 @@ +import { CanvasPanel, DetailPanel, EdgePanel, GroupPanel, MultiPanel, NodePanel } from 'gg-editor'; + +import { Card } from 'antd'; +import DetailForm from './DetailForm'; +import styles from './index.less'; + +const FlowDetailPanel = () => ( + + + + + + + + + + + + + + + + + +); + +export default FlowDetailPanel; diff --git a/demo/src/pages/editor/koni/components/EditorDetailPanel/KoniDetailPanel.tsx b/demo/src/pages/editor/koni/components/EditorDetailPanel/KoniDetailPanel.tsx new file mode 100644 index 00000000..18aea9a4 --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorDetailPanel/KoniDetailPanel.tsx @@ -0,0 +1,3 @@ +import FlowDetailPanel from './FlowDetailPanel'; + +export default FlowDetailPanel; diff --git a/demo/src/pages/editor/koni/components/EditorDetailPanel/MindDetailPanel.tsx b/demo/src/pages/editor/koni/components/EditorDetailPanel/MindDetailPanel.tsx new file mode 100644 index 00000000..dceaf36e --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorDetailPanel/MindDetailPanel.tsx @@ -0,0 +1,18 @@ +import { CanvasPanel, DetailPanel, NodePanel } from 'gg-editor'; + +import { Card } from 'antd'; +import DetailForm from './DetailForm'; +import styles from './index.less'; + +const MindDetailPanel = () => ( + + + + + + + + +); + +export default MindDetailPanel; diff --git a/demo/src/pages/editor/koni/components/EditorDetailPanel/index.less b/demo/src/pages/editor/koni/components/EditorDetailPanel/index.less new file mode 100644 index 00000000..0b2c564b --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorDetailPanel/index.less @@ -0,0 +1,6 @@ +@import '~antd/es/style/themes/default.less'; + +.detailPanel { + flex: 1; + background-color: @component-background; +} diff --git a/demo/src/pages/editor/koni/components/EditorDetailPanel/index.tsx b/demo/src/pages/editor/koni/components/EditorDetailPanel/index.tsx new file mode 100644 index 00000000..50aa37a8 --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorDetailPanel/index.tsx @@ -0,0 +1,5 @@ +import FlowDetailPanel from './FlowDetailPanel'; +import KoniDetailPanel from './KoniDetailPanel'; +import MindDetailPanel from './MindDetailPanel'; + +export { FlowDetailPanel, MindDetailPanel, KoniDetailPanel }; diff --git a/demo/src/pages/editor/koni/components/EditorItemPanel/FlowItemPanel.tsx b/demo/src/pages/editor/koni/components/EditorItemPanel/FlowItemPanel.tsx new file mode 100644 index 00000000..c7dcbe60 --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorItemPanel/FlowItemPanel.tsx @@ -0,0 +1,53 @@ +import { Item, ItemPanel } from 'gg-editor'; + +import { Card } from 'antd'; +import styles from './index.less'; + +const FlowItemPanel = () => ( + + + + + + + + +); + +export default FlowItemPanel; diff --git a/demo/src/pages/editor/koni/components/EditorItemPanel/KoniItemPanel.tsx b/demo/src/pages/editor/koni/components/EditorItemPanel/KoniItemPanel.tsx new file mode 100644 index 00000000..3901d292 --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorItemPanel/KoniItemPanel.tsx @@ -0,0 +1,49 @@ +import { Item, ItemPanel } from 'gg-editor'; + +import { Card } from 'antd'; +import styles from './index.less'; + +const KoniItemPanel = () => ( + + + + + + + +); + +export default KoniItemPanel; diff --git a/demo/src/pages/editor/koni/components/EditorItemPanel/index.less b/demo/src/pages/editor/koni/components/EditorItemPanel/index.less new file mode 100644 index 00000000..b594a66b --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorItemPanel/index.less @@ -0,0 +1,19 @@ +@import '~antd/es/style/themes/default.less'; + +.itemPanel { + flex: 1; + + :global { + .ant-card { + height: 100%; + } + .ant-card-body { + display: flex; + flex-direction: column; + align-items: center; + > div { + margin-bottom: 16px; + } + } + } +} diff --git a/demo/src/pages/editor/koni/components/EditorItemPanel/index.tsx b/demo/src/pages/editor/koni/components/EditorItemPanel/index.tsx new file mode 100644 index 00000000..2ba03fbb --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorItemPanel/index.tsx @@ -0,0 +1,4 @@ +import FlowItemPanel from './FlowItemPanel'; +import KoniItemPanel from './KoniItemPanel'; + +export { FlowItemPanel, KoniItemPanel }; diff --git a/demo/src/pages/editor/koni/components/EditorMinimap/index.tsx b/demo/src/pages/editor/koni/components/EditorMinimap/index.tsx new file mode 100644 index 00000000..b337edbf --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorMinimap/index.tsx @@ -0,0 +1,10 @@ +import { Card } from 'antd'; +import { Minimap } from 'gg-editor'; + +const EditorMinimap = () => ( + + + +); + +export default EditorMinimap; diff --git a/demo/src/pages/editor/koni/components/EditorToolbar/FlowToolbar.tsx b/demo/src/pages/editor/koni/components/EditorToolbar/FlowToolbar.tsx new file mode 100644 index 00000000..90494876 --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorToolbar/FlowToolbar.tsx @@ -0,0 +1,29 @@ +import { Divider } from 'antd'; +import { Toolbar } from 'gg-editor'; +import ToolbarButton from './ToolbarButton'; +import styles from './index.less'; + +const FlowToolbar = () => ( + + + + + + + + + + + + + + + + + + + + +); + +export default FlowToolbar; diff --git a/demo/src/pages/editor/koni/components/EditorToolbar/KoniToolbar.tsx b/demo/src/pages/editor/koni/components/EditorToolbar/KoniToolbar.tsx new file mode 100644 index 00000000..f222007a --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorToolbar/KoniToolbar.tsx @@ -0,0 +1,3 @@ +import FlowToolbar from './FlowToolbar'; + +export default FlowToolbar; diff --git a/demo/src/pages/editor/koni/components/EditorToolbar/MindToolbar.tsx b/demo/src/pages/editor/koni/components/EditorToolbar/MindToolbar.tsx new file mode 100644 index 00000000..23761093 --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorToolbar/MindToolbar.tsx @@ -0,0 +1,24 @@ +import { Divider } from 'antd'; +import { Toolbar } from 'gg-editor'; +import ToolbarButton from './ToolbarButton'; +import styles from './index.less'; + +const FlowToolbar = () => ( + + + + + + + + + + + + + + + +); + +export default FlowToolbar; diff --git a/demo/src/pages/editor/koni/components/EditorToolbar/ToolbarButton.tsx b/demo/src/pages/editor/koni/components/EditorToolbar/ToolbarButton.tsx new file mode 100644 index 00000000..94f9e9c6 --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorToolbar/ToolbarButton.tsx @@ -0,0 +1,31 @@ +import { Command } from 'gg-editor'; +import React from 'react'; +import { Tooltip } from 'antd'; +import IconFont from '../../common/IconFont'; +import styles from './index.less'; + +const upperFirst = (str: string) => + str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); + +type ToolbarButtonProps = { + command: string; + icon?: string; + text?: string; +}; +const ToolbarButton: React.FC = (props) => { + const { command, icon, text } = props; + + return ( + + + + + + ); +}; + +export default ToolbarButton; diff --git a/demo/src/pages/editor/koni/components/EditorToolbar/index.less b/demo/src/pages/editor/koni/components/EditorToolbar/index.less new file mode 100644 index 00000000..4edd156f --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorToolbar/index.less @@ -0,0 +1,39 @@ +@import '~antd/es/style/themes/default.less'; + +.toolbar { + display: flex; + align-items: center; + :global { + .command .anticon { + display: inline-block; + width: 27px; + height: 27px; + margin: 0 6px; + padding-top: 6px; + text-align: center; + cursor: pointer; + + &:hover { + border: 1px solid @item-active-bg; + } + } + + .disable .anticon { + color: @text-color-secondary; + cursor: auto; + + &:hover { + border: 1px solid @border-color-base; + } + } + } +} + +.tooltip { + :global { + .ant-tooltip-inner { + font-size: 12px; + border-radius: 0; + } + } +} diff --git a/demo/src/pages/editor/koni/components/EditorToolbar/index.tsx b/demo/src/pages/editor/koni/components/EditorToolbar/index.tsx new file mode 100644 index 00000000..58f1d277 --- /dev/null +++ b/demo/src/pages/editor/koni/components/EditorToolbar/index.tsx @@ -0,0 +1,5 @@ +import FlowToolbar from './FlowToolbar'; +import KoniToolbar from './KoniToolbar'; +import MindToolbar from './MindToolbar'; + +export { FlowToolbar, MindToolbar, KoniToolbar }; diff --git a/demo/src/pages/editor/koni/index.less b/demo/src/pages/editor/koni/index.less new file mode 100644 index 00000000..42923fcb --- /dev/null +++ b/demo/src/pages/editor/koni/index.less @@ -0,0 +1,56 @@ +@import '~antd/es/style/themes/default.less'; + +.editor { + display: flex; + flex: 1; + flex-direction: column; + width: 100%; + height: calc(100vh - 250px); + background: @descriptions-bg; +} + +.editorHd { + padding: 8px; + background: @descriptions-bg; + border: 1px solid @item-active-bg; +} + +.editorBd { + flex: 1; +} + +.editorSidebar, +.editorContent { + display: flex; + flex-direction: column; +} + +.editorContent { + :global { + .graph-container canvas { + vertical-align: middle; + } + } +} + +.editorSidebar { + background: @descriptions-bg; + :global { + .g6-editor-minimap-container { + background: none !important ; + } + } + &:first-child { + border-right: 1px solid @item-active-bg; + } + + &:last-child { + border-left: 1px solid @item-active-bg; + } +} + +.flow, +.mind, +.koni { + flex: 1; +} diff --git a/demo/src/pages/editor/koni/index.tsx b/demo/src/pages/editor/koni/index.tsx new file mode 100644 index 00000000..f94da640 --- /dev/null +++ b/demo/src/pages/editor/koni/index.tsx @@ -0,0 +1,37 @@ +import { Col, Row } from 'antd'; +import GGEditor, { Koni } from 'gg-editor'; + +import { PageContainer } from '@ant-design/pro-layout'; +import EditorMinimap from './components/EditorMinimap'; +import { KoniContextMenu } from './components/EditorContextMenu'; +import { KoniDetailPanel } from './components/EditorDetailPanel'; +import { KoniItemPanel } from './components/EditorItemPanel'; +import { KoniToolbar } from './components/EditorToolbar'; +import styles from './index.less'; + +GGEditor.setTrackable(false); + +export default () => ( + + + + + + + + + + + + + + + + + + + + + + +); diff --git a/demo/src/pages/editor/mind/common/IconFont/index.ts b/demo/src/pages/editor/mind/common/IconFont/index.ts new file mode 100644 index 00000000..987647c0 --- /dev/null +++ b/demo/src/pages/editor/mind/common/IconFont/index.ts @@ -0,0 +1,7 @@ +import { createFromIconfontCN } from '@ant-design/icons'; + +const IconFont = createFromIconfontCN({ + scriptUrl: 'https://at.alicdn.com/t/font_1101588_01zniftxm9yp.js', +}); + +export default IconFont; diff --git a/demo/src/pages/editor/mind/components/EditorContextMenu/FlowContextMenu.tsx b/demo/src/pages/editor/mind/components/EditorContextMenu/FlowContextMenu.tsx new file mode 100644 index 00000000..c5cc4e50 --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorContextMenu/FlowContextMenu.tsx @@ -0,0 +1,34 @@ +import { CanvasMenu, ContextMenu, EdgeMenu, GroupMenu, MultiMenu, NodeMenu } from 'gg-editor'; + +import MenuItem from './MenuItem'; +import styles from './index.less'; + +const FlowContextMenu = () => ( + + + + + + + + + + + + + + + + + + + + + + + + + +); + +export default FlowContextMenu; diff --git a/demo/src/pages/editor/mind/components/EditorContextMenu/KoniContextMenu.tsx b/demo/src/pages/editor/mind/components/EditorContextMenu/KoniContextMenu.tsx new file mode 100644 index 00000000..8b049a5e --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorContextMenu/KoniContextMenu.tsx @@ -0,0 +1,3 @@ +import FlowContextMenu from './FlowContextMenu'; + +export default FlowContextMenu; diff --git a/demo/src/pages/editor/mind/components/EditorContextMenu/MenuItem.tsx b/demo/src/pages/editor/mind/components/EditorContextMenu/MenuItem.tsx new file mode 100644 index 00000000..297967ab --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorContextMenu/MenuItem.tsx @@ -0,0 +1,27 @@ +import { Command } from 'gg-editor'; +import React from 'react'; +import IconFont from '../../common/IconFont'; +import styles from './index.less'; + +const upperFirst = (str: string) => + str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); + +type MenuItemProps = { + command: string; + icon?: string; + text?: string; +}; +const MenuItem: React.FC = (props) => { + const { command, icon, text } = props; + + return ( + +
    + + {text || upperFirst(command)} +
    +
    + ); +}; + +export default MenuItem; diff --git a/demo/src/pages/editor/mind/components/EditorContextMenu/MindContextMenu.tsx b/demo/src/pages/editor/mind/components/EditorContextMenu/MindContextMenu.tsx new file mode 100644 index 00000000..5a8b4076 --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorContextMenu/MindContextMenu.tsx @@ -0,0 +1,22 @@ +import { CanvasMenu, ContextMenu, NodeMenu } from 'gg-editor'; + +import MenuItem from './MenuItem'; +import styles from './index.less'; + +const MindContextMenu = () => ( + + + + + + + + + + + + + +); + +export default MindContextMenu; diff --git a/demo/src/pages/editor/mind/components/EditorContextMenu/index.less b/demo/src/pages/editor/mind/components/EditorContextMenu/index.less new file mode 100644 index 00000000..25d68b2c --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorContextMenu/index.less @@ -0,0 +1,40 @@ +@import '~antd/es/style/themes/default.less'; + +.contextMenu { + display: none; + overflow: hidden; + background: @component-background; + border-radius: 4px; + box-shadow: @box-shadow-base; + .item { + display: flex; + align-items: center; + padding: 5px 12px; + cursor: pointer; + transition: all 0.3s; + user-select: none; + + &:hover { + background: @select-item-selected-bg; + } + + .anticon { + margin-right: 8px; + } + } + + :global { + .disable { + :local { + .item { + color: @disabled-color; + cursor: auto; + + &:hover { + background: @item-hover-bg; + } + } + } + } + } +} diff --git a/demo/src/pages/editor/mind/components/EditorContextMenu/index.tsx b/demo/src/pages/editor/mind/components/EditorContextMenu/index.tsx new file mode 100644 index 00000000..6ee93423 --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorContextMenu/index.tsx @@ -0,0 +1,5 @@ +import FlowContextMenu from './FlowContextMenu'; +import KoniContextMenu from './KoniContextMenu'; +import MindContextMenu from './MindContextMenu'; + +export { FlowContextMenu, MindContextMenu, KoniContextMenu }; diff --git a/demo/src/pages/editor/mind/components/EditorDetailPanel/DetailForm.tsx b/demo/src/pages/editor/mind/components/EditorDetailPanel/DetailForm.tsx new file mode 100644 index 00000000..c89265b6 --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorDetailPanel/DetailForm.tsx @@ -0,0 +1,114 @@ +import React from 'react'; +import { Card, Input, Select, Form } from 'antd'; +import { withPropsAPI } from 'gg-editor'; + +const upperFirst = (str: string) => + str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); + +const { Item } = Form; +const { Option } = Select; + +const inlineFormItemLayout = { + labelCol: { + sm: { span: 8 }, + }, + wrapperCol: { + sm: { span: 16 }, + }, +}; + +type DetailFormProps = { + type: string; + propsAPI?: any; +}; + +class DetailForm extends React.Component { + get item() { + const { propsAPI } = this.props; + return propsAPI.getSelected()[0]; + } + + handleFieldChange = (values: any) => { + const { propsAPI } = this.props; + const { getSelected, executeCommand, update } = propsAPI; + + setTimeout(() => { + const item = getSelected()[0]; + if (!item) { + return; + } + executeCommand(() => { + update(item, { + ...values, + }); + }); + }, 0); + }; + + handleInputBlur = (type: string) => (e: React.FormEvent) => { + e.preventDefault(); + this.handleFieldChange({ + [type]: e.currentTarget.value, + }); + }; + + renderNodeDetail = () => { + const { label } = this.item.getModel(); + + return ( +
    + + + +
    + ); + }; + + renderEdgeDetail = () => { + const { label = '', shape = 'flow-smooth' } = this.item.getModel(); + + return ( +
    + + + + + + +
    + ); + }; + + renderGroupDetail = () => { + const { label = '新建分组' } = this.item.getModel(); + + return ( +
    + + + +
    + ); + }; + + render() { + const { type } = this.props; + if (!this.item) { + return null; + } + + return ( + + {type === 'node' && this.renderNodeDetail()} + {type === 'edge' && this.renderEdgeDetail()} + {type === 'group' && this.renderGroupDetail()} + + ); + } +} + +export default withPropsAPI(DetailForm as any); diff --git a/demo/src/pages/editor/mind/components/EditorDetailPanel/FlowDetailPanel.tsx b/demo/src/pages/editor/mind/components/EditorDetailPanel/FlowDetailPanel.tsx new file mode 100644 index 00000000..bb7035c9 --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorDetailPanel/FlowDetailPanel.tsx @@ -0,0 +1,27 @@ +import { CanvasPanel, DetailPanel, EdgePanel, GroupPanel, MultiPanel, NodePanel } from 'gg-editor'; + +import { Card } from 'antd'; +import DetailForm from './DetailForm'; +import styles from './index.less'; + +const FlowDetailPanel = () => ( + + + + + + + + + + + + + + + + + +); + +export default FlowDetailPanel; diff --git a/demo/src/pages/editor/mind/components/EditorDetailPanel/KoniDetailPanel.tsx b/demo/src/pages/editor/mind/components/EditorDetailPanel/KoniDetailPanel.tsx new file mode 100644 index 00000000..18aea9a4 --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorDetailPanel/KoniDetailPanel.tsx @@ -0,0 +1,3 @@ +import FlowDetailPanel from './FlowDetailPanel'; + +export default FlowDetailPanel; diff --git a/demo/src/pages/editor/mind/components/EditorDetailPanel/MindDetailPanel.tsx b/demo/src/pages/editor/mind/components/EditorDetailPanel/MindDetailPanel.tsx new file mode 100644 index 00000000..dceaf36e --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorDetailPanel/MindDetailPanel.tsx @@ -0,0 +1,18 @@ +import { CanvasPanel, DetailPanel, NodePanel } from 'gg-editor'; + +import { Card } from 'antd'; +import DetailForm from './DetailForm'; +import styles from './index.less'; + +const MindDetailPanel = () => ( + + + + + + + + +); + +export default MindDetailPanel; diff --git a/demo/src/pages/editor/mind/components/EditorDetailPanel/index.less b/demo/src/pages/editor/mind/components/EditorDetailPanel/index.less new file mode 100644 index 00000000..0b2c564b --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorDetailPanel/index.less @@ -0,0 +1,6 @@ +@import '~antd/es/style/themes/default.less'; + +.detailPanel { + flex: 1; + background-color: @component-background; +} diff --git a/demo/src/pages/editor/mind/components/EditorDetailPanel/index.tsx b/demo/src/pages/editor/mind/components/EditorDetailPanel/index.tsx new file mode 100644 index 00000000..50aa37a8 --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorDetailPanel/index.tsx @@ -0,0 +1,5 @@ +import FlowDetailPanel from './FlowDetailPanel'; +import KoniDetailPanel from './KoniDetailPanel'; +import MindDetailPanel from './MindDetailPanel'; + +export { FlowDetailPanel, MindDetailPanel, KoniDetailPanel }; diff --git a/demo/src/pages/editor/mind/components/EditorItemPanel/FlowItemPanel.tsx b/demo/src/pages/editor/mind/components/EditorItemPanel/FlowItemPanel.tsx new file mode 100644 index 00000000..c7dcbe60 --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorItemPanel/FlowItemPanel.tsx @@ -0,0 +1,53 @@ +import { Item, ItemPanel } from 'gg-editor'; + +import { Card } from 'antd'; +import styles from './index.less'; + +const FlowItemPanel = () => ( + + + + + + + + +); + +export default FlowItemPanel; diff --git a/demo/src/pages/editor/mind/components/EditorItemPanel/KoniItemPanel.tsx b/demo/src/pages/editor/mind/components/EditorItemPanel/KoniItemPanel.tsx new file mode 100644 index 00000000..3901d292 --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorItemPanel/KoniItemPanel.tsx @@ -0,0 +1,49 @@ +import { Item, ItemPanel } from 'gg-editor'; + +import { Card } from 'antd'; +import styles from './index.less'; + +const KoniItemPanel = () => ( + + + + + + + +); + +export default KoniItemPanel; diff --git a/demo/src/pages/editor/mind/components/EditorItemPanel/index.less b/demo/src/pages/editor/mind/components/EditorItemPanel/index.less new file mode 100644 index 00000000..b594a66b --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorItemPanel/index.less @@ -0,0 +1,19 @@ +@import '~antd/es/style/themes/default.less'; + +.itemPanel { + flex: 1; + + :global { + .ant-card { + height: 100%; + } + .ant-card-body { + display: flex; + flex-direction: column; + align-items: center; + > div { + margin-bottom: 16px; + } + } + } +} diff --git a/demo/src/pages/editor/mind/components/EditorItemPanel/index.tsx b/demo/src/pages/editor/mind/components/EditorItemPanel/index.tsx new file mode 100644 index 00000000..2ba03fbb --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorItemPanel/index.tsx @@ -0,0 +1,4 @@ +import FlowItemPanel from './FlowItemPanel'; +import KoniItemPanel from './KoniItemPanel'; + +export { FlowItemPanel, KoniItemPanel }; diff --git a/demo/src/pages/editor/mind/components/EditorMinimap/index.tsx b/demo/src/pages/editor/mind/components/EditorMinimap/index.tsx new file mode 100644 index 00000000..b337edbf --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorMinimap/index.tsx @@ -0,0 +1,10 @@ +import { Card } from 'antd'; +import { Minimap } from 'gg-editor'; + +const EditorMinimap = () => ( + + + +); + +export default EditorMinimap; diff --git a/demo/src/pages/editor/mind/components/EditorToolbar/FlowToolbar.tsx b/demo/src/pages/editor/mind/components/EditorToolbar/FlowToolbar.tsx new file mode 100644 index 00000000..90494876 --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorToolbar/FlowToolbar.tsx @@ -0,0 +1,29 @@ +import { Divider } from 'antd'; +import { Toolbar } from 'gg-editor'; +import ToolbarButton from './ToolbarButton'; +import styles from './index.less'; + +const FlowToolbar = () => ( + + + + + + + + + + + + + + + + + + + + +); + +export default FlowToolbar; diff --git a/demo/src/pages/editor/mind/components/EditorToolbar/KoniToolbar.tsx b/demo/src/pages/editor/mind/components/EditorToolbar/KoniToolbar.tsx new file mode 100644 index 00000000..f222007a --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorToolbar/KoniToolbar.tsx @@ -0,0 +1,3 @@ +import FlowToolbar from './FlowToolbar'; + +export default FlowToolbar; diff --git a/demo/src/pages/editor/mind/components/EditorToolbar/MindToolbar.tsx b/demo/src/pages/editor/mind/components/EditorToolbar/MindToolbar.tsx new file mode 100644 index 00000000..23761093 --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorToolbar/MindToolbar.tsx @@ -0,0 +1,24 @@ +import { Divider } from 'antd'; +import { Toolbar } from 'gg-editor'; +import ToolbarButton from './ToolbarButton'; +import styles from './index.less'; + +const FlowToolbar = () => ( + + + + + + + + + + + + + + + +); + +export default FlowToolbar; diff --git a/demo/src/pages/editor/mind/components/EditorToolbar/ToolbarButton.tsx b/demo/src/pages/editor/mind/components/EditorToolbar/ToolbarButton.tsx new file mode 100644 index 00000000..94f9e9c6 --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorToolbar/ToolbarButton.tsx @@ -0,0 +1,31 @@ +import { Command } from 'gg-editor'; +import React from 'react'; +import { Tooltip } from 'antd'; +import IconFont from '../../common/IconFont'; +import styles from './index.less'; + +const upperFirst = (str: string) => + str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); + +type ToolbarButtonProps = { + command: string; + icon?: string; + text?: string; +}; +const ToolbarButton: React.FC = (props) => { + const { command, icon, text } = props; + + return ( + + + + + + ); +}; + +export default ToolbarButton; diff --git a/demo/src/pages/editor/mind/components/EditorToolbar/index.less b/demo/src/pages/editor/mind/components/EditorToolbar/index.less new file mode 100644 index 00000000..d9e98d1f --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorToolbar/index.less @@ -0,0 +1,40 @@ +@import '~antd/es/style/themes/default.less'; + +.toolbar { + display: flex; + align-items: center; + + :global { + .command .anticon { + display: inline-block; + width: 27px; + height: 27px; + margin: 0 6px; + padding-top: 6px; + text-align: center; + cursor: pointer; + + &:hover { + border: 1px solid @item-active-bg; + } + } + + .disable .anticon { + color: @text-color-secondary; + cursor: auto; + + &:hover { + border: 1px solid @border-color-base; + } + } + } +} + +.tooltip { + :global { + .ant-tooltip-inner { + font-size: 12px; + border-radius: 0; + } + } +} diff --git a/demo/src/pages/editor/mind/components/EditorToolbar/index.tsx b/demo/src/pages/editor/mind/components/EditorToolbar/index.tsx new file mode 100644 index 00000000..58f1d277 --- /dev/null +++ b/demo/src/pages/editor/mind/components/EditorToolbar/index.tsx @@ -0,0 +1,5 @@ +import FlowToolbar from './FlowToolbar'; +import KoniToolbar from './KoniToolbar'; +import MindToolbar from './MindToolbar'; + +export { FlowToolbar, MindToolbar, KoniToolbar }; diff --git a/demo/src/pages/editor/mind/index.less b/demo/src/pages/editor/mind/index.less new file mode 100644 index 00000000..42923fcb --- /dev/null +++ b/demo/src/pages/editor/mind/index.less @@ -0,0 +1,56 @@ +@import '~antd/es/style/themes/default.less'; + +.editor { + display: flex; + flex: 1; + flex-direction: column; + width: 100%; + height: calc(100vh - 250px); + background: @descriptions-bg; +} + +.editorHd { + padding: 8px; + background: @descriptions-bg; + border: 1px solid @item-active-bg; +} + +.editorBd { + flex: 1; +} + +.editorSidebar, +.editorContent { + display: flex; + flex-direction: column; +} + +.editorContent { + :global { + .graph-container canvas { + vertical-align: middle; + } + } +} + +.editorSidebar { + background: @descriptions-bg; + :global { + .g6-editor-minimap-container { + background: none !important ; + } + } + &:first-child { + border-right: 1px solid @item-active-bg; + } + + &:last-child { + border-left: 1px solid @item-active-bg; + } +} + +.flow, +.mind, +.koni { + flex: 1; +} diff --git a/demo/src/pages/editor/mind/index.tsx b/demo/src/pages/editor/mind/index.tsx new file mode 100644 index 00000000..0760684d --- /dev/null +++ b/demo/src/pages/editor/mind/index.tsx @@ -0,0 +1,34 @@ +import { Col, Row } from 'antd'; +import GGEditor, { Mind } from 'gg-editor'; + +import { PageContainer } from '@ant-design/pro-layout'; +import EditorMinimap from './components/EditorMinimap'; +import { MindContextMenu } from './components/EditorContextMenu'; +import { MindDetailPanel } from './components/EditorDetailPanel'; +import { MindToolbar } from './components/EditorToolbar'; +import data from './worldCup2018.json'; +import styles from './index.less'; + +GGEditor.setTrackable(false); + +export default () => ( + + + + + + + + + + + + + + + + + + + +); diff --git a/demo/src/pages/editor/mind/worldCup2018.json b/demo/src/pages/editor/mind/worldCup2018.json new file mode 100644 index 00000000..44f3e63f --- /dev/null +++ b/demo/src/pages/editor/mind/worldCup2018.json @@ -0,0 +1,129 @@ +{ + "roots": [ + { + "label": "法国", + "children": [ + { + "label": "克罗地亚", + "side": "left", + "children": [ + { + "label": "克罗地亚", + "children": [ + { + "label": "克罗地亚", + "children": [ + { + "label": "克罗地亚" + }, + { + "label": "丹麦" + } + ] + }, + { + "label": "俄罗斯", + "children": [ + { + "label": "俄罗斯" + }, + { + "label": "西班牙" + } + ] + } + ] + }, + { + "label": "英格兰", + "children": [ + { + "label": "英格兰", + "children": [ + { + "label": "英格兰" + }, + { + "label": "哥伦比亚" + } + ] + }, + { + "label": "瑞典", + "children": [ + { + "label": "瑞士" + }, + { + "label": "瑞典" + } + ] + } + ] + } + ] + }, + { + "label": "法国", + "side": "right", + "children": [ + { + "label": "法国", + "children": [ + { + "label": "法国", + "children": [ + { + "label": "法国" + }, + { + "label": "阿根廷" + } + ] + }, + { + "label": "乌拉圭", + "children": [ + { + "label": "乌拉圭" + }, + { + "label": "葡萄牙" + } + ] + } + ] + }, + { + "label": "比利时", + "children": [ + { + "label": "比利时", + "children": [ + { + "label": "比利时" + }, + { + "label": "日本" + } + ] + }, + { + "label": "巴西", + "children": [ + { + "label": "巴西" + }, + { + "label": "墨西哥" + } + ] + } + ] + } + ] + } + ] + } + ] +} diff --git a/demo/src/pages/exception/403/index.tsx b/demo/src/pages/exception/403/index.tsx new file mode 100644 index 00000000..1c73f934 --- /dev/null +++ b/demo/src/pages/exception/403/index.tsx @@ -0,0 +1,18 @@ +import { Link } from 'umi'; +import { Result, Button } from 'antd'; + +export default () => ( + + + + } + /> +); diff --git a/demo/src/pages/exception/404/index.tsx b/demo/src/pages/exception/404/index.tsx new file mode 100644 index 00000000..60473b3f --- /dev/null +++ b/demo/src/pages/exception/404/index.tsx @@ -0,0 +1,18 @@ +import { Link } from 'umi'; +import { Result, Button } from 'antd'; + +export default () => ( + + + + } + /> +); diff --git a/demo/src/pages/exception/500/index.tsx b/demo/src/pages/exception/500/index.tsx new file mode 100644 index 00000000..44efc5b2 --- /dev/null +++ b/demo/src/pages/exception/500/index.tsx @@ -0,0 +1,18 @@ +import { Link } from 'umi'; +import { Result, Button } from 'antd'; + +export default () => ( + + + + } + /> +); diff --git a/demo/src/pages/form/advanced-form/_mock.ts b/demo/src/pages/form/advanced-form/_mock.ts new file mode 100644 index 00000000..67f34e09 --- /dev/null +++ b/demo/src/pages/form/advanced-form/_mock.ts @@ -0,0 +1,8 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import type { Request, Response } from 'express'; + +export default { + 'POST /api/advancedForm': (_: Request, res: Response) => { + res.send({ data: { message: 'Ok' } }); + }, +}; diff --git a/demo/src/pages/form/advanced-form/components/TableForm.tsx b/demo/src/pages/form/advanced-form/components/TableForm.tsx new file mode 100644 index 00000000..26059b67 --- /dev/null +++ b/demo/src/pages/form/advanced-form/components/TableForm.tsx @@ -0,0 +1,257 @@ +import { PlusOutlined } from '@ant-design/icons'; +import { Button, Divider, Input, Popconfirm, Table, message } from 'antd'; +import type { FC } from 'react'; +import React, { useState } from 'react'; + +import styles from '../style.less'; + +type TableFormDateType = { + key: string; + workId?: string; + name?: string; + department?: string; + isNew?: boolean; + editable?: boolean; +}; +type TableFormProps = { + value?: TableFormDateType[]; + onChange?: (value: TableFormDateType[]) => void; +}; + +const TableForm: FC = ({ value, onChange }) => { + const [clickedCancel, setClickedCancel] = useState(false); + const [loading, setLoading] = useState(false); + const [index, setIndex] = useState(0); + const [cacheOriginData, setCacheOriginData] = useState({}); + const [data, setData] = useState(value); + + const getRowByKey = (key: string, newData?: TableFormDateType[]) => + (newData || data)?.filter((item) => item.key === key)[0]; + + const toggleEditable = (e: React.MouseEvent | React.KeyboardEvent, key: string) => { + e.preventDefault(); + const newData = data?.map((item) => ({ ...item })); + const target = getRowByKey(key, newData); + if (target) { + // 进入编辑状态时保存原始数据 + if (!target.editable) { + cacheOriginData[key] = { ...target }; + setCacheOriginData(cacheOriginData); + } + target.editable = !target.editable; + setData(newData); + } + }; + const newMember = () => { + const newData = data?.map((item) => ({ ...item })) || []; + + newData.push({ + key: `NEW_TEMP_ID_${index}`, + workId: '', + name: '', + department: '', + editable: true, + isNew: true, + }); + + setIndex(index + 1); + setData(newData); + }; + + const remove = (key: string) => { + const newData = data?.filter((item) => item.key !== key) as TableFormDateType[]; + setData(newData); + if (onChange) { + onChange(newData); + } + }; + + const handleFieldChange = ( + e: React.ChangeEvent, + fieldName: string, + key: string, + ) => { + const newData = [...(data as TableFormDateType[])]; + const target = getRowByKey(key, newData); + if (target) { + target[fieldName] = e.target.value; + setData(newData); + } + }; + + const saveRow = (e: React.MouseEvent | React.KeyboardEvent, key: string) => { + e.persist(); + setLoading(true); + setTimeout(() => { + if (clickedCancel) { + setClickedCancel(false); + return; + } + const target = getRowByKey(key) || ({} as any); + if (!target.workId || !target.name || !target.department) { + message.error('请填写完整成员信息。'); + (e.target as HTMLInputElement).focus(); + setLoading(false); + return; + } + delete target.isNew; + toggleEditable(e, key); + if (onChange) { + onChange(data as TableFormDateType[]); + } + setLoading(false); + }, 500); + }; + + const handleKeyPress = (e: React.KeyboardEvent, key: string) => { + if (e.key === 'Enter') { + saveRow(e, key); + } + }; + + const cancel = (e: React.MouseEvent, key: string) => { + setClickedCancel(true); + e.preventDefault(); + const newData = [...(data as TableFormDateType[])]; + // 编辑前的原始数据 + let cacheData = []; + cacheData = newData.map((item) => { + if (item.key === key) { + if (cacheOriginData[key]) { + const originItem = { + ...item, + ...cacheOriginData[key], + editable: false, + }; + delete cacheOriginData[key]; + setCacheOriginData(cacheOriginData); + return originItem; + } + } + return item; + }); + setData(cacheData); + setClickedCancel(false); + }; + + const columns = [ + { + title: '成员姓名', + dataIndex: 'name', + key: 'name', + width: '20%', + render: (text: string, record: TableFormDateType) => { + if (record.editable) { + return ( + handleFieldChange(e, 'name', record.key)} + onKeyPress={(e) => handleKeyPress(e, record.key)} + placeholder="成员姓名" + /> + ); + } + return text; + }, + }, + { + title: '工号', + dataIndex: 'workId', + key: 'workId', + width: '20%', + render: (text: string, record: TableFormDateType) => { + if (record.editable) { + return ( + handleFieldChange(e, 'workId', record.key)} + onKeyPress={(e) => handleKeyPress(e, record.key)} + placeholder="工号" + /> + ); + } + return text; + }, + }, + { + title: '所属部门', + dataIndex: 'department', + key: 'department', + width: '40%', + render: (text: string, record: TableFormDateType) => { + if (record.editable) { + return ( + handleFieldChange(e, 'department', record.key)} + onKeyPress={(e) => handleKeyPress(e, record.key)} + placeholder="所属部门" + /> + ); + } + return text; + }, + }, + { + title: '操作', + key: 'action', + render: (text: string, record: TableFormDateType) => { + if (!!record.editable && loading) { + return null; + } + if (record.editable) { + if (record.isNew) { + return ( + + saveRow(e, record.key)}>添加 + + remove(record.key)}> + 删除 + + + ); + } + return ( + + saveRow(e, record.key)}>保存 + + cancel(e, record.key)}>取消 + + ); + } + return ( + + toggleEditable(e, record.key)}>编辑 + + remove(record.key)}> + 删除 + + + ); + }, + }, + ]; + + return ( + <> + + loading={loading} + columns={columns} + dataSource={data} + pagination={false} + rowClassName={(record) => (record.editable ? styles.editable : '')} + /> + + + ); +}; + +export default TableForm; diff --git a/demo/src/pages/form/advanced-form/index.tsx b/demo/src/pages/form/advanced-form/index.tsx new file mode 100644 index 00000000..b2b860b3 --- /dev/null +++ b/demo/src/pages/form/advanced-form/index.tsx @@ -0,0 +1,386 @@ +import { CloseCircleOutlined } from '@ant-design/icons'; +import { Card, Col, Popover, Row, message } from 'antd'; + +import type { FC } from 'react'; +import { useState } from 'react'; +import ProForm, { + ProFormDateRangePicker, + ProFormSelect, + ProFormText, + ProFormTimePicker, +} from '@ant-design/pro-form'; +import type { ProColumnType } from '@ant-design/pro-table'; +import { EditableProTable } from '@ant-design/pro-table'; +import { PageContainer, FooterToolbar } from '@ant-design/pro-layout'; +import { fakeSubmitForm } from './service'; +import styles from './style.less'; + +interface TableFormDateType { + key: string; + workId?: string; + name?: string; + department?: string; + isNew?: boolean; + editable?: boolean; +} +type InternalNamePath = (string | number)[]; + +const fieldLabels = { + name: '仓库名', + url: '仓库域名', + owner: '仓库管理员', + approver: '审批人', + dateRange: '生效日期', + type: '仓库类型', + name2: '任务名', + url2: '任务描述', + owner2: '执行人', + approver2: '责任人', + dateRange2: '生效日期', + type2: '任务类型', +}; + +const tableData = [ + { + key: '1', + workId: '00001', + name: 'John Brown', + department: 'New York No. 1 Lake Park', + }, + { + key: '2', + workId: '00002', + name: 'Jim Green', + department: 'London No. 1 Lake Park', + }, + { + key: '3', + workId: '00003', + name: 'Joe Black', + department: 'Sidney No. 1 Lake Park', + }, +]; + +interface ErrorField { + name: InternalNamePath; + errors: string[]; +} + +const AdvancedForm: FC> = () => { + const [error, setError] = useState([]); + const getErrorInfo = (errors: ErrorField[]) => { + const errorCount = errors.filter((item) => item.errors.length > 0).length; + if (!errors || errorCount === 0) { + return null; + } + const scrollToField = (fieldKey: string) => { + const labelNode = document.querySelector(`label[for="${fieldKey}"]`); + if (labelNode) { + labelNode.scrollIntoView(true); + } + }; + const errorList = errors.map((err) => { + if (!err || err.errors.length === 0) { + return null; + } + const key = err.name[0] as string; + return ( +
  • scrollToField(key)}> + +
    {err.errors[0]}
    +
    {fieldLabels[key]}
    +
  • + ); + }); + return ( + + { + if (trigger && trigger.parentNode) { + return trigger.parentNode as HTMLElement; + } + return trigger; + }} + > + + + {errorCount} + + ); + }; + + const onFinish = async (values: Record) => { + setError([]); + try { + await fakeSubmitForm(values); + message.success('提交成功'); + } catch { + // console.log + } + }; + + const onFinishFailed = (errorInfo: any) => { + setError(errorInfo.errorFields); + }; + + const columns: ProColumnType[] = [ + { + title: '成员姓名', + dataIndex: 'name', + key: 'name', + width: '20%', + }, + { + title: '工号', + dataIndex: 'workId', + key: 'workId', + width: '20%', + }, + { + title: '所属部门', + dataIndex: 'department', + key: 'department', + width: '40%', + }, + { + title: '操作', + key: 'action', + valueType: 'option', + render: (_, record: TableFormDateType, index, action) => { + return [ + { + action?.startEditable(record.key); + }} + > + 编辑 + , + ]; + }, + }, + ]; + + return ( + { + return ( + + {getErrorInfo(error)} + {dom} + + ); + }, + }} + initialValues={{ members: tableData }} + onFinish={onFinish} + onFinishFailed={onFinishFailed} + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + recordCreatorProps={{ + record: () => { + return { + key: `0${Date.now()}`, + }; + }, + }} + columns={columns} + rowKey="key" + /> + + + + + ); +}; + +export default AdvancedForm; diff --git a/demo/src/pages/form/advanced-form/service.ts b/demo/src/pages/form/advanced-form/service.ts new file mode 100644 index 00000000..dd58aff5 --- /dev/null +++ b/demo/src/pages/form/advanced-form/service.ts @@ -0,0 +1,8 @@ +import { request } from 'umi'; + +export async function fakeSubmitForm(params: any) { + return request('/api/advancedForm', { + method: 'POST', + data: params, + }); +} diff --git a/demo/src/pages/form/advanced-form/style.less b/demo/src/pages/form/advanced-form/style.less new file mode 100644 index 00000000..e83ac949 --- /dev/null +++ b/demo/src/pages/form/advanced-form/style.less @@ -0,0 +1,65 @@ +@import '~antd/es/style/themes/default.less'; + +.card { + margin-bottom: 24px; + + :global { + .ant-legacy-form-item .ant-legacy-form-item-control-wrapper { + width: 100%; + } + } +} + +.errorIcon { + margin-right: 24px; + color: @error-color; + cursor: pointer; + + span.anticon { + margin-right: 4px; + } +} + +.errorPopover { + :global { + .ant-popover-inner-content { + min-width: 256px; + max-height: 290px; + padding: 0; + overflow: auto; + } + } +} + +.errorListItem { + padding: 8px 16px; + list-style: none; + border-bottom: 1px solid @border-color-split; + cursor: pointer; + transition: all 0.3s; + &:hover { + background: @item-active-bg; + } + &:last-child { + border: 0; + } + .errorIcon { + float: left; + margin-top: 4px; + margin-right: 12px; + padding-bottom: 22px; + color: @error-color; + } + .errorField { + margin-top: 2px; + color: @text-color-secondary; + font-size: 12px; + } +} + +.editable { + td { + padding-top: 13px !important; + padding-bottom: 12.5px !important; + } +} diff --git a/demo/src/pages/form/basic-form/_mock.ts b/demo/src/pages/form/basic-form/_mock.ts new file mode 100644 index 00000000..2a5a4779 --- /dev/null +++ b/demo/src/pages/form/basic-form/_mock.ts @@ -0,0 +1,8 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import type { Request, Response } from 'express'; + +export default { + 'POST /api/basicForm': (_: Request, res: Response) => { + res.send({ data: { message: 'Ok' } }); + }, +}; diff --git a/demo/src/pages/form/basic-form/index.tsx b/demo/src/pages/form/basic-form/index.tsx new file mode 100644 index 00000000..d1e44831 --- /dev/null +++ b/demo/src/pages/form/basic-form/index.tsx @@ -0,0 +1,188 @@ +import { Card, message } from 'antd'; +import ProForm, { + ProFormDateRangePicker, + ProFormDependency, + ProFormDigit, + ProFormRadio, + ProFormSelect, + ProFormText, + ProFormTextArea, +} from '@ant-design/pro-form'; +import { useRequest } from 'umi'; +import type { FC } from 'react'; +import { PageContainer } from '@ant-design/pro-layout'; +import { fakeSubmitForm } from './service'; +import styles from './style.less'; + +const BasicForm: FC> = () => { + const { run } = useRequest(fakeSubmitForm, { + manual: true, + onSuccess: () => { + message.success('提交成功'); + }, + }); + + const onFinish = async (values: Record) => { + run(values); + }; + + return ( + + + + + + + + + + + 客户 + (选填) + + } + tooltip="目标的服务对象" + name="client" + placeholder="请描述你服务的客户,内部客户直接 @姓名/工号" + /> + + + 邀评人 + (选填) + + } + name="invites" + placeholder="请直接 @姓名/工号,最多可邀请 5 人" + /> + + + 权重 + (选填) + + } + name="weight" + placeholder="请输入" + min={0} + max={100} + width="xs" + fieldProps={{ + formatter: (value) => `${value || 0}%`, + parser: (value) => (value ? value.replace('%', '') : '0'), + }} + /> + + + + {({ publicType }) => { + return ( + + ); + }} + + + + + ); +}; + +export default BasicForm; diff --git a/demo/src/pages/form/basic-form/service.ts b/demo/src/pages/form/basic-form/service.ts new file mode 100644 index 00000000..b2648f0c --- /dev/null +++ b/demo/src/pages/form/basic-form/service.ts @@ -0,0 +1,8 @@ +import { request } from 'umi'; + +export async function fakeSubmitForm(params: any) { + return request('/api/basicForm', { + method: 'POST', + data: params, + }); +} diff --git a/demo/src/pages/form/basic-form/style.less b/demo/src/pages/form/basic-form/style.less new file mode 100644 index 00000000..60a374ba --- /dev/null +++ b/demo/src/pages/form/basic-form/style.less @@ -0,0 +1,6 @@ +@import '~antd/es/style/themes/default.less'; + +.optional { + color: @text-color-secondary; + font-style: normal; +} diff --git a/demo/src/pages/form/step-form/_mock.ts b/demo/src/pages/form/step-form/_mock.ts new file mode 100644 index 00000000..dac59aba --- /dev/null +++ b/demo/src/pages/form/step-form/_mock.ts @@ -0,0 +1,8 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import type { Request, Response } from 'express'; + +export default { + 'POST /api/stepForm': (_: Request, res: Response) => { + res.send({ data: { message: 'Ok' } }); + }, +}; diff --git a/demo/src/pages/form/step-form/data.d.ts b/demo/src/pages/form/step-form/data.d.ts new file mode 100644 index 00000000..4bddb0c8 --- /dev/null +++ b/demo/src/pages/form/step-form/data.d.ts @@ -0,0 +1,9 @@ +export interface StepDataType { + payAccount: string; + receiverAccount: string; + receiverName: string; + amount: string; + receiverMode: string; +} + +export type CurrentTypes = 'base' | 'confirm' | 'result'; diff --git a/demo/src/pages/form/step-form/index.tsx b/demo/src/pages/form/step-form/index.tsx new file mode 100644 index 00000000..e374dc3e --- /dev/null +++ b/demo/src/pages/form/step-form/index.tsx @@ -0,0 +1,196 @@ +import React, { useRef, useState } from 'react'; +import type { FormInstance } from 'antd'; +import { Card, Result, Button, Descriptions, Divider, Alert, Statistic } from 'antd'; +import { PageContainer } from '@ant-design/pro-layout'; +import ProForm, { ProFormDigit, ProFormSelect, ProFormText, StepsForm } from '@ant-design/pro-form'; +import type { StepDataType } from './data.d'; +import styles from './style.less'; + +const StepDescriptions: React.FC<{ + stepData: StepDataType; + bordered?: boolean; +}> = ({ stepData, bordered }) => { + const { payAccount, receiverAccount, receiverName, amount } = stepData; + return ( + + {payAccount} + {receiverAccount} + {receiverName} + + + 元 + + } + precision={2} + /> + + + ); +}; + +const StepResult: React.FC<{ + onFinish: () => Promise; +}> = (props) => { + return ( + + + + + } + className={styles.result} + > + {props.children} + + ); +}; + +const StepForm: React.FC> = () => { + const [stepData, setStepData] = useState({ + payAccount: 'ant-design@alipay.com', + receiverAccount: 'test@example.com', + receiverName: 'Alex', + amount: '500', + receiverMode: 'alipay', + }); + const [current, setCurrent] = useState(0); + const formRef = useRef(); + + return ( + + + { + if (props.step === 2) { + return null; + } + return dom; + }, + }} + > + + formRef={formRef} + title="填写转账信息" + initialValues={stepData} + onFinish={async (values) => { + setStepData(values); + return true; + }} + > + + + + + + + + + + + +
    + + + + +
    +
    + + { + setCurrent(0); + formRef.current?.resetFields(); + }} + > + + + +
    + +
    +

    说明

    +

    转账到支付宝账户

    +

    + 如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。 +

    +

    转账到银行卡

    +

    + 如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。 +

    +
    +
    +
    + ); +}; + +export default StepForm; diff --git a/demo/src/pages/form/step-form/service.ts b/demo/src/pages/form/step-form/service.ts new file mode 100644 index 00000000..51237c74 --- /dev/null +++ b/demo/src/pages/form/step-form/service.ts @@ -0,0 +1,8 @@ +import { request } from 'umi'; + +export async function fakeSubmitForm(params: any) { + return request('/api/stepForm', { + method: 'POST', + data: params, + }); +} diff --git a/demo/src/pages/form/step-form/style.less b/demo/src/pages/form/step-form/style.less new file mode 100644 index 00000000..443eb2ef --- /dev/null +++ b/demo/src/pages/form/step-form/style.less @@ -0,0 +1,11 @@ +@import '~antd/es/style/themes/default.less'; + +.card { + margin-bottom: 24px; +} + +.result { + max-width: 560px; + margin: 0 auto; + padding: 24px 0 8px; +} diff --git a/demo/src/pages/list/basic-list/_mock.ts b/demo/src/pages/list/basic-list/_mock.ts new file mode 100644 index 00000000..438153b5 --- /dev/null +++ b/demo/src/pages/list/basic-list/_mock.ts @@ -0,0 +1,160 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import type { Request, Response } from 'express'; +import type { BasicListItemDataType } from './data.d'; + +const titles = [ + 'Alipay', + 'Angular', + 'Ant Design', + 'Ant Design Pro', + 'Bootstrap', + 'React', + 'Vue', + 'Webpack', +]; +const avatars = [ + 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', // Alipay + 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', // Angular + 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', // Ant Design + 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', // Ant Design Pro + 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', // Bootstrap + 'https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png', // React + 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', // Vue + 'https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png', // Webpack +]; + +const covers = [ + 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png', + 'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png', + 'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png', + 'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png', +]; +const desc = [ + '那是一种内在的东西, 他们到达不了,也无法触及的', + '希望是一个好东西,也许是最好的,好东西是不会消亡的', + '生命就像一盒巧克力,结果往往出人意料', + '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆', + '那时候我只会想自己想要什么,从不想自己拥有什么', +]; + +const user = [ + '付小小', + '曲丽丽', + '林东东', + '周星星', + '吴加好', + '朱偏右', + '鱼酱', + '乐哥', + '谭小仪', + '仲尼', +]; + +function fakeList(count: number): BasicListItemDataType[] { + const list = []; + for (let i = 0; i < count; i += 1) { + list.push({ + id: `fake-list-${i}`, + owner: user[i % 10], + title: titles[i % 8], + avatar: avatars[i % 8], + cover: parseInt(`${i / 4}`, 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)], + status: ['active', 'exception', 'normal'][i % 3] as + | 'normal' + | 'exception' + | 'active' + | 'success', + percent: Math.ceil(Math.random() * 50) + 50, + logo: avatars[i % 8], + href: 'https://ant.design', + updatedAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), + createdAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), + subDescription: desc[i % 5], + description: + '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。', + activeUser: Math.ceil(Math.random() * 100000) + 100000, + newUser: Math.ceil(Math.random() * 1000) + 1000, + star: Math.ceil(Math.random() * 100) + 100, + like: Math.ceil(Math.random() * 100) + 100, + message: Math.ceil(Math.random() * 10) + 10, + content: + '段落示意:蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。', + members: [ + { + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png', + name: '曲丽丽', + id: 'member1', + }, + { + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png', + name: '王昭君', + id: 'member2', + }, + { + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png', + name: '董娜娜', + id: 'member3', + }, + ], + }); + } + + return list; +} + +let sourceData: BasicListItemDataType[] = []; + +function getFakeList(req: Request, res: Response) { + const params = req.query as any; + + const count = Number(params.count) * 1 || 20; + + const result = fakeList(count); + sourceData = result; + return res.json({ + data: { + list: result, + }, + }); +} + +function postFakeList(req: Request, res: Response) { + const { /* url = '', */ body } = req; + // const params = getUrlParams(url); + const { method, id } = body; + // const count = (params.count * 1) || 20; + let result = sourceData || []; + + switch (method) { + case 'delete': + result = result.filter((item) => item.id !== id); + break; + case 'update': + result.forEach((item, i) => { + if (item.id === id) { + result[i] = { ...item, ...body }; + } + }); + break; + case 'post': + result.unshift({ + ...body, + id: `fake-list-${result.length}`, + createdAt: new Date().getTime(), + }); + break; + default: + break; + } + + return res.json({ + data: { + list: result, + }, + }); +} + +export default { + 'GET /api/get_list': getFakeList, + 'POST /api/post_fake_list': postFakeList, +}; diff --git a/demo/src/pages/list/basic-list/components/OperationModal.tsx b/demo/src/pages/list/basic-list/components/OperationModal.tsx new file mode 100644 index 00000000..d524727d --- /dev/null +++ b/demo/src/pages/list/basic-list/components/OperationModal.tsx @@ -0,0 +1,105 @@ +import type { FC } from 'react'; +import { + ModalForm, + ProFormSelect, + ProFormDateTimePicker, + ProFormText, + ProFormTextArea, +} from '@ant-design/pro-form'; +import type { BasicListItemDataType } from '../data.d'; +import styles from '../style.less'; +import { Button, Result } from 'antd'; + +type OperationModalProps = { + done: boolean; + visible: boolean; + current: Partial | undefined; + onDone: () => void; + onSubmit: (values: BasicListItemDataType) => void; +}; + +const OperationModal: FC = (props) => { + const { done, visible, current, onDone, onSubmit, children } = props; + if (!visible) { + return null; + } + return ( + + visible={visible} + title={done ? null : `任务${current ? '编辑' : '添加'}`} + className={styles.standardListForm} + width={640} + onFinish={async (values) => { + onSubmit(values); + }} + initialValues={current} + submitter={{ + render: (_, dom) => (done ? null : dom), + }} + trigger={<>{children}} + modalProps={{ + onCancel: () => onDone(), + destroyOnClose: true, + bodyStyle: done ? { padding: '72px 0' } : {}, + }} + > + {!done ? ( + <> + + + + + + ) : ( + + 知道了 + + } + className={styles.formResult} + /> + )} + + ); +}; + +export default OperationModal; diff --git a/demo/src/pages/list/basic-list/data.d.ts b/demo/src/pages/list/basic-list/data.d.ts new file mode 100644 index 00000000..f1cfa668 --- /dev/null +++ b/demo/src/pages/list/basic-list/data.d.ts @@ -0,0 +1,29 @@ +export type Member = { + avatar: string; + name: string; + id: string; +}; + +export type BasicListItemDataType = { + id: string; + owner: string; + title: string; + avatar: string; + cover: string; + status: 'normal' | 'exception' | 'active' | 'success'; + percent: number; + logo: string; + href: string; + body?: any; + updatedAt: number; + createdAt: number; + subDescription: string; + description: string; + activeUser: number; + newUser: number; + star: number; + like: number; + message: number; + content: string; + members: Member[]; +}; diff --git a/demo/src/pages/list/basic-list/index.tsx b/demo/src/pages/list/basic-list/index.tsx new file mode 100644 index 00000000..a0d03139 --- /dev/null +++ b/demo/src/pages/list/basic-list/index.tsx @@ -0,0 +1,246 @@ +import type { FC } from 'react'; +import React, { useState } from 'react'; +import { DownOutlined, PlusOutlined } from '@ant-design/icons'; +import { + Avatar, + Button, + Card, + Col, + Dropdown, + Input, + List, + Menu, + Modal, + Progress, + Radio, + Row, +} from 'antd'; + +import { PageContainer } from '@ant-design/pro-layout'; +import { useRequest } from 'umi'; +import moment from 'moment'; +import OperationModal from './components/OperationModal'; +import { addFakeList, queryFakeList, removeFakeList, updateFakeList } from './service'; +import type { BasicListItemDataType } from './data.d'; +import styles from './style.less'; + +const RadioButton = Radio.Button; +const RadioGroup = Radio.Group; +const { Search } = Input; + +const Info: FC<{ + title: React.ReactNode; + value: React.ReactNode; + bordered?: boolean; +}> = ({ title, value, bordered }) => ( +
    + {title} +

    {value}

    + {bordered && } +
    +); + +const ListContent = ({ + data: { owner, createdAt, percent, status }, +}: { + data: BasicListItemDataType; +}) => ( +
    +
    + Owner +

    {owner}

    +
    +
    + 开始时间 +

    {moment(createdAt).format('YYYY-MM-DD HH:mm')}

    +
    +
    + +
    +
    +); + +export const BasicList: FC = () => { + const [done, setDone] = useState(false); + const [visible, setVisible] = useState(false); + const [current, setCurrent] = useState | undefined>(undefined); + + const { + data: listData, + loading, + mutate, + } = useRequest(() => { + return queryFakeList({ + count: 50, + }); + }); + const { run: postRun } = useRequest( + (method, params) => { + if (method === 'remove') { + return removeFakeList(params); + } + if (method === 'update') { + return updateFakeList(params); + } + return addFakeList(params); + }, + { + manual: true, + onSuccess: (result) => { + mutate(result); + }, + }, + ); + + const list = listData?.list || []; + + const paginationProps = { + showSizeChanger: true, + showQuickJumper: true, + pageSize: 5, + total: list.length, + }; + + const showEditModal = (item: BasicListItemDataType) => { + setVisible(true); + setCurrent(item); + }; + + const deleteItem = (id: string) => { + postRun('remove', { id }); + }; + + const editAndDelete = (key: string | number, currentItem: BasicListItemDataType) => { + if (key === 'edit') showEditModal(currentItem); + else if (key === 'delete') { + Modal.confirm({ + title: '删除任务', + content: '确定删除该任务吗?', + okText: '确认', + cancelText: '取消', + onOk: () => deleteItem(currentItem.id), + }); + } + }; + + const extraContent = ( +
    + + 全部 + 进行中 + 等待中 + + ({})} /> +
    + ); + + const MoreBtn: React.FC<{ + item: BasicListItemDataType; + }> = ({ item }) => ( + editAndDelete(key, item)}> + 编辑 + 删除 +
    + } + > + + 更多 + + + ); + + const handleDone = () => { + setDone(false); + setVisible(false); + setCurrent({}); + }; + + const handleSubmit = (values: BasicListItemDataType) => { + setDone(true); + const method = values?.id ? 'update' : 'add'; + postRun(method, values); + }; + + return ( +
    + +
    + + + + + + + + + + + + + + + + ( + { + e.preventDefault(); + showEditModal(item); + }} + > + 编辑 + , + , + ]} + > + } + title={{item.title}} + description={item.subDescription} + /> + + + )} + /> + +
    +
    + + +
    + ); +}; + +export default BasicList; diff --git a/demo/src/pages/list/basic-list/service.ts b/demo/src/pages/list/basic-list/service.ts new file mode 100644 index 00000000..4aa8f8d8 --- /dev/null +++ b/demo/src/pages/list/basic-list/service.ts @@ -0,0 +1,50 @@ +import { request } from 'umi'; +import type { BasicListItemDataType } from './data.d'; + +type ParamsType = { + count?: number; +} & Partial; + +export async function queryFakeList( + params: ParamsType, +): Promise<{ data: { list: BasicListItemDataType[] } }> { + return request('/api/get_list', { + params, + }); +} + +export async function removeFakeList( + params: ParamsType, +): Promise<{ data: { list: BasicListItemDataType[] } }> { + return request('/api/post_fake_list', { + method: 'POST', + data: { + ...params, + method: 'delete', + }, + }); +} + +export async function addFakeList( + params: ParamsType, +): Promise<{ data: { list: BasicListItemDataType[] } }> { + return request('/api/post_fake_list', { + method: 'POST', + data: { + ...params, + method: 'post', + }, + }); +} + +export async function updateFakeList( + params: ParamsType, +): Promise<{ data: { list: BasicListItemDataType[] } }> { + return request('/api/post_fake_list', { + method: 'POST', + data: { + ...params, + method: 'update', + }, + }); +} diff --git a/demo/src/pages/list/basic-list/style.less b/demo/src/pages/list/basic-list/style.less new file mode 100644 index 00000000..2d3a58cc --- /dev/null +++ b/demo/src/pages/list/basic-list/style.less @@ -0,0 +1,195 @@ +@import '~antd/es/style/themes/default.less'; +@import './utils/utils.less'; + +.standardList { + :global { + .ant-card-head { + border-bottom: none; + } + .ant-card-head-title { + padding: 24px 0; + line-height: 32px; + } + .ant-card-extra { + padding: 24px 0; + } + .ant-list-pagination { + margin-top: 24px; + text-align: right; + } + .ant-avatar-lg { + width: 48px; + height: 48px; + line-height: 48px; + } + } + .headerInfo { + position: relative; + text-align: center; + & > span { + display: inline-block; + margin-bottom: 4px; + color: @text-color-secondary; + font-size: @font-size-base; + line-height: 22px; + } + & > p { + margin: 0; + color: @heading-color; + font-size: 24px; + line-height: 32px; + } + & > em { + position: absolute; + top: 0; + right: 0; + width: 1px; + height: 56px; + background-color: @border-color-split; + } + } + .listContent { + font-size: 0; + .listContentItem { + display: inline-block; + margin-left: 40px; + color: @text-color-secondary; + font-size: @font-size-base; + vertical-align: middle; + > span { + line-height: 20px; + } + > p { + margin-top: 4px; + margin-bottom: 0; + line-height: 22px; + } + } + } + .extraContentSearch { + width: 272px; + margin-left: 16px; + } +} + +@media screen and (max-width: @screen-xs) { + .standardList { + :global { + .ant-list-item-content { + display: block; + flex: none; + width: 100%; + } + .ant-list-item-action { + margin-left: 0; + } + } + .listContent { + margin-left: 0; + & > div { + margin-left: 0; + } + } + .listCard { + :global { + .ant-card-head-title { + overflow: visible; + } + } + } + } +} + +@media screen and (max-width: @screen-sm) { + .standardList { + .extraContentSearch { + width: 100%; + margin-left: 0; + } + .headerInfo { + margin-bottom: 16px; + & > em { + display: none; + } + } + } +} + +@media screen and (max-width: @screen-md) { + .standardList { + .listContent { + & > div { + display: block; + } + & > div:last-child { + top: 0; + width: 100%; + } + } + } + .listCard { + :global { + .ant-radio-group { + display: block; + margin-bottom: 8px; + } + } + } +} + +@media screen and (max-width: @screen-lg) and (min-width: @screen-md) { + .standardList { + .listContent { + & > div { + display: block; + } + & > div:last-child { + top: 0; + width: 100%; + } + } + } +} + +@media screen and (max-width: @screen-xl) { + .standardList { + .listContent { + & > div { + margin-left: 24px; + } + & > div:last-child { + top: 0; + } + } + } +} + +@media screen and (max-width: 1400px) { + .standardList { + .listContent { + text-align: right; + & > div:last-child { + top: 0; + } + } + } +} + +.standardListForm { + :global { + .ant-form-item { + margin-bottom: 12px; + &:last-child { + margin-bottom: 32px; + padding-top: 4px; + } + } + } +} + +.formResult { + width: 100%; + [class^='title'] { + margin-bottom: 8px; + } +} diff --git a/demo/src/pages/list/basic-list/utils/utils.less b/demo/src/pages/list/basic-list/utils/utils.less new file mode 100644 index 00000000..de1aa642 --- /dev/null +++ b/demo/src/pages/list/basic-list/utils/utils.less @@ -0,0 +1,50 @@ +.textOverflow() { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-break: break-all; +} + +.textOverflowMulti(@line: 3, @bg: #fff) { + position: relative; + max-height: @line * 1.5em; + margin-right: -1em; + padding-right: 1em; + overflow: hidden; + line-height: 1.5em; + text-align: justify; + &::before { + position: absolute; + right: 14px; + bottom: 0; + padding: 0 1px; + background: @bg; + content: '...'; + } + &::after { + position: absolute; + right: 14px; + width: 1em; + height: 1em; + margin-top: 0.2em; + background: white; + content: ''; + } +} + +// mixins for clearfix +// ------------------------ +.clearfix() { + zoom: 1; + &::before, + &::after { + display: table; + content: ' '; + } + &::after { + clear: both; + height: 0; + font-size: 0; + visibility: hidden; + } +} diff --git a/demo/src/pages/list/card-list/_mock.ts b/demo/src/pages/list/card-list/_mock.ts new file mode 100644 index 00000000..0aed36a3 --- /dev/null +++ b/demo/src/pages/list/card-list/_mock.ts @@ -0,0 +1,120 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import type { Request, Response } from 'express'; +import type { CardListItemDataType } from './data.d'; + +const titles = [ + 'Alipay', + 'Angular', + 'Ant Design', + 'Ant Design Pro', + 'Bootstrap', + 'React', + 'Vue', + 'Webpack', +]; +const avatars = [ + 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', // Alipay + 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', // Angular + 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', // Ant Design + 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', // Ant Design Pro + 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', // Bootstrap + 'https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png', // React + 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', // Vue + 'https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png', // Webpack +]; + +const covers = [ + 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png', + 'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png', + 'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png', + 'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png', +]; +const desc = [ + '那是一种内在的东西, 他们到达不了,也无法触及的', + '希望是一个好东西,也许是最好的,好东西是不会消亡的', + '生命就像一盒巧克力,结果往往出人意料', + '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆', + '那时候我只会想自己想要什么,从不想自己拥有什么', +]; + +const user = [ + '付小小', + '曲丽丽', + '林东东', + '周星星', + '吴加好', + '朱偏右', + '鱼酱', + '乐哥', + '谭小仪', + '仲尼', +]; + +function fakeList(count: number): CardListItemDataType[] { + const list = []; + for (let i = 0; i < count; i += 1) { + list.push({ + id: `fake-list-${i}`, + owner: user[i % 10], + title: titles[i % 8], + avatar: avatars[i % 8], + cover: parseInt(`${i / 4}`, 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)], + status: ['active', 'exception', 'normal'][i % 3] as + | 'normal' + | 'exception' + | 'active' + | 'success', + percent: Math.ceil(Math.random() * 50) + 50, + logo: avatars[i % 8], + href: 'https://ant.design', + updatedAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), + createdAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), + subDescription: desc[i % 5], + description: + '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。', + activeUser: Math.ceil(Math.random() * 100000) + 100000, + newUser: Math.ceil(Math.random() * 1000) + 1000, + star: Math.ceil(Math.random() * 100) + 100, + like: Math.ceil(Math.random() * 100) + 100, + message: Math.ceil(Math.random() * 10) + 10, + content: + '段落示意:蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。', + members: [ + { + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png', + name: '曲丽丽', + id: 'member1', + }, + { + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png', + name: '王昭君', + id: 'member2', + }, + { + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png', + name: '董娜娜', + id: 'member3', + }, + ], + }); + } + + return list; +} + +function getFakeList(req: Request, res: Response) { + const params = req.query as any; + + const count = Number(params.count) * 1 || 20; + + const result = fakeList(count); + return res.json({ + data: { + list: result, + }, + }); +} + +export default { + 'GET /api/card_fake_list': getFakeList, +}; diff --git a/demo/src/pages/list/card-list/data.d.ts b/demo/src/pages/list/card-list/data.d.ts new file mode 100644 index 00000000..c7e663ff --- /dev/null +++ b/demo/src/pages/list/card-list/data.d.ts @@ -0,0 +1,29 @@ +export type Member = { + avatar: string; + name: string; + id: string; +}; + +export type CardListItemDataType = { + id: string; + owner: string; + title: string; + avatar: string; + cover: string; + status: 'normal' | 'exception' | 'active' | 'success'; + percent: number; + logo: string; + href: string; + body?: any; + updatedAt: number; + createdAt: number; + subDescription: string; + description: string; + activeUser: number; + newUser: number; + star: number; + like: number; + message: number; + content: string; + members: Member[]; +}; diff --git a/demo/src/pages/list/card-list/index.tsx b/demo/src/pages/list/card-list/index.tsx new file mode 100644 index 00000000..d7c46ef1 --- /dev/null +++ b/demo/src/pages/list/card-list/index.tsx @@ -0,0 +1,104 @@ +import { PlusOutlined } from '@ant-design/icons'; +import { Button, Card, List, Typography } from 'antd'; +import { PageContainer } from '@ant-design/pro-layout'; +import { useRequest } from 'umi'; +import { queryFakeList } from './service'; +import type { CardListItemDataType } from './data.d'; +import styles from './style.less'; + +const { Paragraph } = Typography; + +const CardList = () => { + const { data, loading } = useRequest(() => { + return queryFakeList({ + count: 8, + }); + }); + + const list = data?.list || []; + + const content = ( +
    +

    + 段落示意:蚂蚁金服务设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态, + 提供跨越设计与开发的体验解决方案。 +

    + +
    + ); + + const extraContent = ( +
    + 这是一个标题 +
    + ); + const nullData: Partial = {}; + return ( + +
    + > + rowKey="id" + loading={loading} + grid={{ + gutter: 16, + xs: 1, + sm: 2, + md: 3, + lg: 3, + xl: 4, + xxl: 4, + }} + dataSource={[nullData, ...list]} + renderItem={(item) => { + if (item && item.id) { + return ( + + 操作一, 操作二]} + > + } + title={{item.title}} + description={ + + {item.description} + + } + /> + + + ); + } + return ( + + + + ); + }} + /> +
    +
    + ); +}; + +export default CardList; diff --git a/demo/src/pages/list/card-list/service.ts b/demo/src/pages/list/card-list/service.ts new file mode 100644 index 00000000..fee9a314 --- /dev/null +++ b/demo/src/pages/list/card-list/service.ts @@ -0,0 +1,10 @@ +import { request } from 'umi'; +import type { CardListItemDataType } from './data.d'; + +export async function queryFakeList(params: { + count: number; +}): Promise<{ data: { list: CardListItemDataType[] } }> { + return request('/api/card_fake_list', { + params, + }); +} diff --git a/demo/src/pages/list/card-list/style.less b/demo/src/pages/list/card-list/style.less new file mode 100644 index 00000000..24a5bc67 --- /dev/null +++ b/demo/src/pages/list/card-list/style.less @@ -0,0 +1,107 @@ +@import '~antd/es/style/themes/default.less'; +@import './utils/utils.less'; + +.cardList { + .card { + :global { + .ant-card-meta-title { + margin-bottom: 12px; + & > a { + display: inline-block; + max-width: 100%; + color: @heading-color; + } + } + .ant-card-body:hover { + .ant-card-meta-title > a { + color: @primary-color; + } + } + } + } + .item { + height: 64px; + } + + :global { + .ant-list .ant-list-item-content-single { + max-width: 100%; + } + } +} + +.extraImg { + width: 155px; + margin-top: -20px; + text-align: center; + img { + width: 100%; + } +} + +.newButton { + width: 100%; + height: 201px; + color: @text-color-secondary; + background-color: @component-background; + border-color: @border-color-base; +} + +.cardAvatar { + width: 48px; + height: 48px; + border-radius: 48px; +} + +.cardDescription { + .textOverflowMulti(); +} + +.pageHeaderContent { + position: relative; +} + +.contentLink { + margin-top: 16px; + a { + margin-right: 32px; + img { + width: 24px; + } + } + img { + margin-right: 8px; + vertical-align: middle; + } +} + +@media screen and (max-width: @screen-lg) { + .contentLink { + a { + margin-right: 16px; + } + } +} +@media screen and (max-width: @screen-md) { + .extraImg { + display: none; + } +} + +@media screen and (max-width: @screen-sm) { + .pageHeaderContent { + padding-bottom: 30px; + } + .contentLink { + position: absolute; + bottom: -4px; + left: 0; + width: 1000px; + a { + margin-right: 16px; + } + img { + margin-right: 4px; + } + } +} diff --git a/demo/src/pages/list/card-list/utils/utils.less b/demo/src/pages/list/card-list/utils/utils.less new file mode 100644 index 00000000..de1aa642 --- /dev/null +++ b/demo/src/pages/list/card-list/utils/utils.less @@ -0,0 +1,50 @@ +.textOverflow() { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-break: break-all; +} + +.textOverflowMulti(@line: 3, @bg: #fff) { + position: relative; + max-height: @line * 1.5em; + margin-right: -1em; + padding-right: 1em; + overflow: hidden; + line-height: 1.5em; + text-align: justify; + &::before { + position: absolute; + right: 14px; + bottom: 0; + padding: 0 1px; + background: @bg; + content: '...'; + } + &::after { + position: absolute; + right: 14px; + width: 1em; + height: 1em; + margin-top: 0.2em; + background: white; + content: ''; + } +} + +// mixins for clearfix +// ------------------------ +.clearfix() { + zoom: 1; + &::before, + &::after { + display: table; + content: ' '; + } + &::after { + clear: both; + height: 0; + font-size: 0; + visibility: hidden; + } +} diff --git a/demo/src/pages/list/search/applications/_mock.ts b/demo/src/pages/list/search/applications/_mock.ts new file mode 100644 index 00000000..affe8bcc --- /dev/null +++ b/demo/src/pages/list/search/applications/_mock.ts @@ -0,0 +1,119 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import type { Request, Response } from 'express'; +import type { ListItemDataType } from './data.d'; + +const titles = [ + 'Alipay', + 'Angular', + 'Ant Design', + 'Ant Design Pro', + 'Bootstrap', + 'React', + 'Vue', + 'Webpack', +]; +const avatars = [ + 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', // Alipay + 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', // Angular + 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', // Ant Design + 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', // Ant Design Pro + 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', // Bootstrap + 'https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png', // React + 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', // Vue + 'https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png', // Webpack +]; + +const covers = [ + 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png', + 'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png', + 'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png', + 'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png', +]; +const desc = [ + '那是一种内在的东西, 他们到达不了,也无法触及的', + '希望是一个好东西,也许是最好的,好东西是不会消亡的', + '生命就像一盒巧克力,结果往往出人意料', + '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆', + '那时候我只会想自己想要什么,从不想自己拥有什么', +]; +const user = [ + '付小小', + '曲丽丽', + '林东东', + '周星星', + '吴加好', + '朱偏右', + '鱼酱', + '乐哥', + '谭小仪', + '仲尼', +]; + +function fakeList(count: number): ListItemDataType[] { + const list = []; + for (let i = 0; i < count; i += 1) { + list.push({ + id: `fake-list-${i}`, + owner: user[i % 10], + title: titles[i % 8], + avatar: avatars[i % 8], + cover: parseInt(`${i / 4}`, 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)], + status: ['active', 'exception', 'normal'][i % 3] as + | 'normal' + | 'exception' + | 'active' + | 'success', + percent: Math.ceil(Math.random() * 50) + 50, + logo: avatars[i % 8], + href: 'https://ant.design', + updatedAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), + createdAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), + subDescription: desc[i % 5], + description: + '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。', + activeUser: Math.ceil(Math.random() * 100000) + 100000, + newUser: Math.ceil(Math.random() * 1000) + 1000, + star: Math.ceil(Math.random() * 100) + 100, + like: Math.ceil(Math.random() * 100) + 100, + message: Math.ceil(Math.random() * 10) + 10, + content: + '段落示意:蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。', + members: [ + { + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png', + name: '曲丽丽', + id: 'member1', + }, + { + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png', + name: '王昭君', + id: 'member2', + }, + { + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png', + name: '董娜娜', + id: 'member3', + }, + ], + }); + } + + return list; +} + +function getFakeList(req: Request, res: Response) { + const params: any = req.query; + + const count = params.count * 1 || 20; + + const result = fakeList(count); + return res.json({ + data: { + list: result, + }, + }); +} + +export default { + 'GET /api/fake_list': getFakeList, +}; diff --git a/demo/src/pages/list/search/applications/components/StandardFormRow/index.less b/demo/src/pages/list/search/applications/components/StandardFormRow/index.less new file mode 100644 index 00000000..4067215f --- /dev/null +++ b/demo/src/pages/list/search/applications/components/StandardFormRow/index.less @@ -0,0 +1,87 @@ +@import '~antd/es/style/themes/default.less'; + +.standardFormRow { + display: flex; + margin-bottom: 16px; + padding-bottom: 16px; + border-bottom: 1px dashed @border-color-split; + + :global { + .ant-form-item, + .ant-legacy-form-item { + margin-right: 24px; + } + .ant-form-item-label, + .ant-legacy-form-item-label { + label { + margin-right: 0; + color: @text-color; + } + } + .ant-form-item-label, + .ant-legacy-form-item-label, + .ant-form-item-control, + .ant-legacy-form-item-control { + padding: 0; + line-height: 32px; + } + } + .label { + flex: 0 0 auto; + margin-right: 24px; + color: @heading-color; + font-size: @font-size-base; + text-align: right; + & > span { + display: inline-block; + height: 32px; + line-height: 32px; + &::after { + content: ':'; + } + } + } + .content { + flex: 1 1 0; + :global { + .ant-form-item, + .ant-legacy-form-item { + &:last-child { + margin-right: 0; + } + } + } + } +} + +.standardFormRowLast { + margin-bottom: 0; + padding-bottom: 0; + border: none; +} + +.standardFormRowBlock { + :global { + .ant-form-item, + .ant-legacy-form-item, + div.ant-form-item-control-wrapper, + div.ant-legacy-form-item-control-wrapper { + display: block; + } + } +} + +.standardFormRowGrid { + :global { + .ant-form-item, + .ant-legacy-form-item, + div.ant-form-item-control-wrapper, + div.ant-legacy-form-item-control-wrapper { + display: block; + } + .ant-form-item-label, + .ant-legacy-form-item-label { + float: left; + } + } +} diff --git a/demo/src/pages/list/search/applications/components/StandardFormRow/index.tsx b/demo/src/pages/list/search/applications/components/StandardFormRow/index.tsx new file mode 100644 index 00000000..fe4cb388 --- /dev/null +++ b/demo/src/pages/list/search/applications/components/StandardFormRow/index.tsx @@ -0,0 +1,39 @@ +import React from 'react'; +import classNames from 'classnames'; +import styles from './index.less'; + +type StandardFormRowProps = { + title?: string; + last?: boolean; + block?: boolean; + grid?: boolean; + style?: React.CSSProperties; +}; + +const StandardFormRow: React.FC = ({ + title, + children, + last, + block, + grid, + ...rest +}) => { + const cls = classNames(styles.standardFormRow, { + [styles.standardFormRowBlock]: block, + [styles.standardFormRowLast]: last, + [styles.standardFormRowGrid]: grid, + }); + + return ( +
    + {title && ( +
    + {title} +
    + )} +
    {children}
    +
    + ); +}; + +export default StandardFormRow; diff --git a/demo/src/pages/list/search/applications/components/TagSelect/index.less b/demo/src/pages/list/search/applications/components/TagSelect/index.less new file mode 100644 index 00000000..f366c587 --- /dev/null +++ b/demo/src/pages/list/search/applications/components/TagSelect/index.less @@ -0,0 +1,34 @@ +@import '~antd/es/style/themes/default.less'; + +.tagSelect { + position: relative; + max-height: 32px; + margin-left: -8px; + overflow: hidden; + line-height: 32px; + transition: all 0.3s; + user-select: none; + :global { + .ant-tag { + margin-right: 24px; + padding: 0 8px; + font-size: @font-size-base; + } + } + &.expanded { + max-height: 200px; + transition: all 0.3s; + } + .trigger { + position: absolute; + top: 0; + right: 0; + + span.anticon { + font-size: 12px; + } + } + &.hasExpandTag { + padding-right: 50px; + } +} diff --git a/demo/src/pages/list/search/applications/components/TagSelect/index.tsx b/demo/src/pages/list/search/applications/components/TagSelect/index.tsx new file mode 100644 index 00000000..5f10efd4 --- /dev/null +++ b/demo/src/pages/list/search/applications/components/TagSelect/index.tsx @@ -0,0 +1,142 @@ +import { DownOutlined, UpOutlined } from '@ant-design/icons'; +import { useBoolean, useControllableValue } from 'ahooks'; +import { Tag } from 'antd'; +import classNames from 'classnames'; +import type { FC } from 'react'; +import React from 'react'; +import styles from './index.less'; + +const { CheckableTag } = Tag; + +export interface TagSelectOptionProps { + value: string | number; + style?: React.CSSProperties; + checked?: boolean; + onChange?: (value: string | number, state: boolean) => void; +} + +const TagSelectOption: React.FC & { + isTagSelectOption: boolean; +} = ({ children, checked, onChange, value }) => ( + onChange && onChange(value, state)} + > + {children} + +); + +TagSelectOption.isTagSelectOption = true; + +type TagSelectOptionElement = React.ReactElement; +export interface TagSelectProps { + onChange?: (value: (string | number)[]) => void; + expandable?: boolean; + value?: (string | number)[]; + defaultValue?: (string | number)[]; + style?: React.CSSProperties; + hideCheckAll?: boolean; + actionsText?: { + expandText?: React.ReactNode; + collapseText?: React.ReactNode; + selectAllText?: React.ReactNode; + }; + className?: string; + Option?: TagSelectOptionProps; + children?: TagSelectOptionElement | TagSelectOptionElement[]; +} + +const TagSelect: FC & { Option: typeof TagSelectOption } = (props) => { + const { children, hideCheckAll = false, className, style, expandable, actionsText = {} } = props; + + const [expand, { toggle }] = useBoolean(); + + const [value, setValue] = useControllableValue<(string | number)[]>(props); + + const isTagSelectOption = (node: TagSelectOptionElement) => + node && + node.type && + (node.type.isTagSelectOption || node.type.displayName === 'TagSelectOption'); + + const getAllTags = () => { + const childrenArray = React.Children.toArray(children) as TagSelectOptionElement[]; + const checkedTags = childrenArray + .filter((child) => isTagSelectOption(child)) + .map((child) => child.props.value); + return checkedTags || []; + }; + + const onSelectAll = (checked: boolean) => { + let checkedTags: (string | number)[] = []; + if (checked) { + checkedTags = getAllTags(); + } + setValue(checkedTags); + }; + + const handleTagChange = (tag: string | number, checked: boolean) => { + const checkedTags: (string | number)[] = [...(value || [])]; + + const index = checkedTags.indexOf(tag); + if (checked && index === -1) { + checkedTags.push(tag); + } else if (!checked && index > -1) { + checkedTags.splice(index, 1); + } + setValue(checkedTags); + }; + + const checkedAll = getAllTags().length === value?.length; + const { expandText = '展开', collapseText = '收起', selectAllText = '全部' } = actionsText; + + const cls = classNames(styles.tagSelect, className, { + [styles.hasExpandTag]: expandable, + [styles.expanded]: expand, + }); + + return ( +
    + {hideCheckAll ? null : ( + + {selectAllText} + + )} + {children && + React.Children.map(children, (child: TagSelectOptionElement) => { + if (isTagSelectOption(child)) { + return React.cloneElement(child, { + key: `tag-select-${child.props.value}`, + value: child.props.value, + checked: value && value.indexOf(child.props.value) > -1, + onChange: handleTagChange, + }); + } + return child; + })} + {expandable && ( + { + toggle(); + }} + > + {expand ? ( + <> + {collapseText} + + ) : ( + <> + {expandText} + + + )} + + )} +
    + ); +}; + +TagSelect.Option = TagSelectOption; + +export default TagSelect; diff --git a/demo/src/pages/list/search/applications/data.d.ts b/demo/src/pages/list/search/applications/data.d.ts new file mode 100644 index 00000000..f39b0a60 --- /dev/null +++ b/demo/src/pages/list/search/applications/data.d.ts @@ -0,0 +1,33 @@ +export type Member = { + avatar: string; + name: string; + id: string; +}; + +export interface Params { + count: number; +} + +export interface ListItemDataType { + id: string; + owner: string; + title: string; + avatar: string; + cover: string; + status: 'normal' | 'exception' | 'active' | 'success'; + percent: number; + logo: string; + href: string; + body?: any; + updatedAt: number; + createdAt: number; + subDescription: string; + description: string; + activeUser: number; + newUser: number; + star: number; + like: number; + message: number; + content: string; + members: Member[]; +} diff --git a/demo/src/pages/list/search/applications/index.tsx b/demo/src/pages/list/search/applications/index.tsx new file mode 100644 index 00000000..abb16cac --- /dev/null +++ b/demo/src/pages/list/search/applications/index.tsx @@ -0,0 +1,195 @@ +import { + DownloadOutlined, + EditOutlined, + EllipsisOutlined, + ShareAltOutlined, +} from '@ant-design/icons'; +import { Avatar, Card, Col, Dropdown, Form, List, Menu, Row, Select, Tooltip } from 'antd'; +import numeral from 'numeral'; +import type { FC } from 'react'; +import React from 'react'; +import { useRequest } from 'umi'; +import StandardFormRow from './components/StandardFormRow'; +import TagSelect from './components/TagSelect'; +import type { ListItemDataType } from './data.d'; +import { queryFakeList } from './service'; +import styles from './style.less'; + +const { Option } = Select; + +export function formatWan(val: number) { + const v = val * 1; + if (!v || Number.isNaN(v)) return ''; + + let result: React.ReactNode = val; + if (val > 10000) { + result = ( + + {Math.floor(val / 10000)} + + 万 + + + ); + } + return result; +} + +const formItemLayout = { + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 }, + }, +}; + +const CardInfo: React.FC<{ + activeUser: React.ReactNode; + newUser: React.ReactNode; +}> = ({ activeUser, newUser }) => ( +
    +
    +

    活跃用户

    +

    {activeUser}

    +
    +
    +

    新增用户

    +

    {newUser}

    +
    +
    +); + +export const Applications: FC> = () => { + const { data, loading, run } = useRequest((values: any) => { + console.log('form data', values); + return queryFakeList({ + count: 8, + }); + }); + + const list = data?.list || []; + + const itemMenu = ( + + + + 1st menu item + + + + + 2nd menu item + + + + + 3d menu item + + + + ); + + return ( +
    + +
    { + run(values); + }} + > + + + + 类目一 + 类目二 + 类目三 + 类目四 + 类目五 + 类目六 + 类目七 + 类目八 + 类目九 + 类目十 + 类目十一 + 类目十二 + + + + + + + + + + + + + + + + + +
    +
    +
    + + rowKey="id" + grid={{ + gutter: 16, + xs: 1, + sm: 2, + md: 3, + lg: 3, + xl: 4, + xxl: 4, + }} + loading={loading} + dataSource={list} + renderItem={(item) => ( + + + + , + + + , + + + , + + + , + ]} + > + } title={item.title} /> +
    + +
    +
    +
    + )} + /> +
    + ); +}; + +export default Applications; diff --git a/demo/src/pages/list/search/applications/service.ts b/demo/src/pages/list/search/applications/service.ts new file mode 100644 index 00000000..b6fb5712 --- /dev/null +++ b/demo/src/pages/list/search/applications/service.ts @@ -0,0 +1,10 @@ +import { request } from 'umi'; +import type { Params, ListItemDataType } from './data.d'; + +export async function queryFakeList( + params: Params, +): Promise<{ data: { list: ListItemDataType[] } }> { + return request('/api/fake_list', { + params, + }); +} diff --git a/demo/src/pages/list/search/applications/style.less b/demo/src/pages/list/search/applications/style.less new file mode 100644 index 00000000..3daa5c3e --- /dev/null +++ b/demo/src/pages/list/search/applications/style.less @@ -0,0 +1,50 @@ +@import '~antd/es/style/themes/default.less'; + +.filterCardList { + :global { + .ant-card-meta-content { + margin-top: 0; + } + // disabled white space + .ant-card-meta-avatar { + font-size: 0; + } + + .ant-list .ant-list-item-content-single { + max-width: 100%; + } + } + .cardInfo { + margin-top: 16px; + margin-left: 40px; + zoom: 1; + &::before, + &::after { + display: table; + content: ' '; + } + &::after { + clear: both; + height: 0; + font-size: 0; + visibility: hidden; + } + & > div { + position: relative; + float: left; + width: 50%; + text-align: left; + p { + margin: 0; + font-size: 24px; + line-height: 32px; + } + p:first-child { + margin-bottom: 4px; + color: @text-color-secondary; + font-size: 12px; + line-height: 20px; + } + } + } +} diff --git a/demo/src/pages/list/search/applications/utils/utils.less b/demo/src/pages/list/search/applications/utils/utils.less new file mode 100644 index 00000000..de1aa642 --- /dev/null +++ b/demo/src/pages/list/search/applications/utils/utils.less @@ -0,0 +1,50 @@ +.textOverflow() { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-break: break-all; +} + +.textOverflowMulti(@line: 3, @bg: #fff) { + position: relative; + max-height: @line * 1.5em; + margin-right: -1em; + padding-right: 1em; + overflow: hidden; + line-height: 1.5em; + text-align: justify; + &::before { + position: absolute; + right: 14px; + bottom: 0; + padding: 0 1px; + background: @bg; + content: '...'; + } + &::after { + position: absolute; + right: 14px; + width: 1em; + height: 1em; + margin-top: 0.2em; + background: white; + content: ''; + } +} + +// mixins for clearfix +// ------------------------ +.clearfix() { + zoom: 1; + &::before, + &::after { + display: table; + content: ' '; + } + &::after { + clear: both; + height: 0; + font-size: 0; + visibility: hidden; + } +} diff --git a/demo/src/pages/list/search/articles/_mock.ts b/demo/src/pages/list/search/articles/_mock.ts new file mode 100644 index 00000000..e3fd954b --- /dev/null +++ b/demo/src/pages/list/search/articles/_mock.ts @@ -0,0 +1,119 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import type { Request, Response } from 'express'; +import type { ListItemDataType } from './data.d'; + +const titles = [ + 'Alipay', + 'Angular', + 'Ant Design', + 'Ant Design Pro', + 'Bootstrap', + 'React', + 'Vue', + 'Webpack', +]; +const avatars = [ + 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', // Alipay + 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', // Angular + 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', // Ant Design + 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', // Ant Design Pro + 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', // Bootstrap + 'https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png', // React + 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', // Vue + 'https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png', // Webpack +]; + +const covers = [ + 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png', + 'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png', + 'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png', + 'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png', +]; +const desc = [ + '那是一种内在的东西, 他们到达不了,也无法触及的', + '希望是一个好东西,也许是最好的,好东西是不会消亡的', + '生命就像一盒巧克力,结果往往出人意料', + '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆', + '那时候我只会想自己想要什么,从不想自己拥有什么', +]; +const user = [ + '付小小', + '曲丽丽', + '林东东', + '周星星', + '吴加好', + '朱偏右', + '鱼酱', + '乐哥', + '谭小仪', + '仲尼', +]; + +function fakeList(count: number): ListItemDataType[] { + const list = []; + for (let i = 0; i < count; i += 1) { + list.push({ + id: `fake-list-${Math.random().toString(36).slice(2, 6)}${i}`, + owner: user[i % 10], + title: titles[i % 8], + avatar: avatars[i % 8], + cover: parseInt(`${i / 4}`, 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)], + status: ['active', 'exception', 'normal'][i % 3] as + | 'normal' + | 'exception' + | 'active' + | 'success', + percent: Math.ceil(Math.random() * 50) + 50, + logo: avatars[i % 8], + href: 'https://ant.design', + updatedAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), + createdAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), + subDescription: desc[i % 5], + description: + '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。', + activeUser: Math.ceil(Math.random() * 100000) + 100000, + newUser: Math.ceil(Math.random() * 1000) + 1000, + star: Math.ceil(Math.random() * 100) + 100, + like: Math.ceil(Math.random() * 100) + 100, + message: Math.ceil(Math.random() * 10) + 10, + content: + '段落示意:蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。', + members: [ + { + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png', + name: '曲丽丽', + id: 'member1', + }, + { + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png', + name: '王昭君', + id: 'member2', + }, + { + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png', + name: '董娜娜', + id: 'member3', + }, + ], + }); + } + + return list; +} + +function getFakeList(req: Request, res: Response) { + const params: any = req.query; + + const count = params.count * 1 || 20; + + const result = fakeList(count); + return res.json({ + data: { + list: result, + }, + }); +} + +export default { + 'GET /api/fake_list': getFakeList, +}; diff --git a/demo/src/pages/list/search/articles/components/ArticleListContent/index.less b/demo/src/pages/list/search/articles/components/ArticleListContent/index.less new file mode 100644 index 00000000..eca0811c --- /dev/null +++ b/demo/src/pages/list/search/articles/components/ArticleListContent/index.less @@ -0,0 +1,38 @@ +@import '~antd/es/style/themes/default.less'; + +.listContent { + .description { + max-width: 720px; + line-height: 22px; + } + .extra { + margin-top: 16px; + color: @text-color-secondary; + line-height: 22px; + & > :global(.ant-avatar) { + position: relative; + top: 1px; + width: 20px; + height: 20px; + margin-right: 8px; + vertical-align: top; + } + & > em { + margin-left: 16px; + color: @disabled-color; + font-style: normal; + } + } +} + +@media screen and (max-width: @screen-xs) { + .listContent { + .extra { + & > em { + display: block; + margin-top: 8px; + margin-left: 0; + } + } + } +} diff --git a/demo/src/pages/list/search/articles/components/ArticleListContent/index.tsx b/demo/src/pages/list/search/articles/components/ArticleListContent/index.tsx new file mode 100644 index 00000000..b5734538 --- /dev/null +++ b/demo/src/pages/list/search/articles/components/ArticleListContent/index.tsx @@ -0,0 +1,29 @@ +import { Avatar } from 'antd'; +import React from 'react'; +import moment from 'moment'; +import styles from './index.less'; + +type ArticleListContentProps = { + data: { + content: React.ReactNode; + updatedAt: number; + avatar: string; + owner: string; + href: string; + }; +}; + +const ArticleListContent: React.FC = ({ + data: { content, updatedAt, avatar, owner, href }, +}) => ( +
    +
    {content}
    +
    + + {owner} 发布在 {href} + {moment(updatedAt).format('YYYY-MM-DD HH:mm')} +
    +
    +); + +export default ArticleListContent; diff --git a/demo/src/pages/list/search/articles/components/StandardFormRow/index.less b/demo/src/pages/list/search/articles/components/StandardFormRow/index.less new file mode 100644 index 00000000..d619cd2c --- /dev/null +++ b/demo/src/pages/list/search/articles/components/StandardFormRow/index.less @@ -0,0 +1,88 @@ +@import '~antd/es/style/themes/default.less'; + +.standardFormRow { + display: flex; + width: 100%; + margin-bottom: 16px; + padding-bottom: 16px; + border-bottom: 1px dashed @border-color-split; + :global { + .ant-form-item, + .ant-legacy-form-item { + margin-right: 24px; + } + .ant-form-item-label, + .ant-legacy-form-item-label { + label { + margin-right: 0; + color: @text-color; + } + } + .ant-form-item-label, + .ant-legacy-form-item-label, + .ant-form-item-control, + .ant-legacy-form-item-control { + padding: 0; + line-height: 32px; + } + } + .label { + flex: 0 0 auto; + margin-right: 24px; + color: @heading-color; + font-size: @font-size-base; + text-align: right; + & > span { + display: inline-block; + height: 32px; + line-height: 32px; + &::after { + content: ':'; + } + } + } + .content { + flex: 1 1 0; + :global { + .ant-form-item, + .ant-legacy-form-item { + &:last-child { + display: block; + margin-right: 0; + } + } + } + } +} + +.standardFormRowLast { + margin-bottom: 0; + padding-bottom: 0; + border: none; +} + +.standardFormRowBlock { + :global { + .ant-form-item, + .ant-legacy-form-item, + div.ant-form-item-control-wrapper, + div.ant-legacy-form-item-control-wrapper { + display: block; + } + } +} + +.standardFormRowGrid { + :global { + .ant-form-item, + .ant-legacy-form-item, + div.ant-form-item-control-wrapper, + div.ant-legacy-form-item-control-wrapper { + display: block; + } + .ant-form-item-label, + .ant-legacy-form-item-label { + float: left; + } + } +} diff --git a/demo/src/pages/list/search/articles/components/StandardFormRow/index.tsx b/demo/src/pages/list/search/articles/components/StandardFormRow/index.tsx new file mode 100644 index 00000000..fe4cb388 --- /dev/null +++ b/demo/src/pages/list/search/articles/components/StandardFormRow/index.tsx @@ -0,0 +1,39 @@ +import React from 'react'; +import classNames from 'classnames'; +import styles from './index.less'; + +type StandardFormRowProps = { + title?: string; + last?: boolean; + block?: boolean; + grid?: boolean; + style?: React.CSSProperties; +}; + +const StandardFormRow: React.FC = ({ + title, + children, + last, + block, + grid, + ...rest +}) => { + const cls = classNames(styles.standardFormRow, { + [styles.standardFormRowBlock]: block, + [styles.standardFormRowLast]: last, + [styles.standardFormRowGrid]: grid, + }); + + return ( +
    + {title && ( +
    + {title} +
    + )} +
    {children}
    +
    + ); +}; + +export default StandardFormRow; diff --git a/demo/src/pages/list/search/articles/components/TagSelect/index.less b/demo/src/pages/list/search/articles/components/TagSelect/index.less new file mode 100644 index 00000000..b174f042 --- /dev/null +++ b/demo/src/pages/list/search/articles/components/TagSelect/index.less @@ -0,0 +1,33 @@ +@import '~antd/es/style/themes/default.less'; + +.tagSelect { + position: relative; + max-height: 32px; + margin-left: -8px; + overflow: hidden; + line-height: 32px; + transition: all 0.3s; + user-select: none; + :global { + .ant-tag { + margin-right: 24px; + padding: 0 8px; + font-size: @font-size-base; + } + } + &.expanded { + max-height: 200px; + transition: all 0.3s; + } + .trigger { + position: absolute; + top: 0; + right: 0; + span.anticon { + font-size: 12px; + } + } + &.hasExpandTag { + padding-right: 50px; + } +} diff --git a/demo/src/pages/list/search/articles/components/TagSelect/index.tsx b/demo/src/pages/list/search/articles/components/TagSelect/index.tsx new file mode 100644 index 00000000..5f10efd4 --- /dev/null +++ b/demo/src/pages/list/search/articles/components/TagSelect/index.tsx @@ -0,0 +1,142 @@ +import { DownOutlined, UpOutlined } from '@ant-design/icons'; +import { useBoolean, useControllableValue } from 'ahooks'; +import { Tag } from 'antd'; +import classNames from 'classnames'; +import type { FC } from 'react'; +import React from 'react'; +import styles from './index.less'; + +const { CheckableTag } = Tag; + +export interface TagSelectOptionProps { + value: string | number; + style?: React.CSSProperties; + checked?: boolean; + onChange?: (value: string | number, state: boolean) => void; +} + +const TagSelectOption: React.FC & { + isTagSelectOption: boolean; +} = ({ children, checked, onChange, value }) => ( + onChange && onChange(value, state)} + > + {children} + +); + +TagSelectOption.isTagSelectOption = true; + +type TagSelectOptionElement = React.ReactElement; +export interface TagSelectProps { + onChange?: (value: (string | number)[]) => void; + expandable?: boolean; + value?: (string | number)[]; + defaultValue?: (string | number)[]; + style?: React.CSSProperties; + hideCheckAll?: boolean; + actionsText?: { + expandText?: React.ReactNode; + collapseText?: React.ReactNode; + selectAllText?: React.ReactNode; + }; + className?: string; + Option?: TagSelectOptionProps; + children?: TagSelectOptionElement | TagSelectOptionElement[]; +} + +const TagSelect: FC & { Option: typeof TagSelectOption } = (props) => { + const { children, hideCheckAll = false, className, style, expandable, actionsText = {} } = props; + + const [expand, { toggle }] = useBoolean(); + + const [value, setValue] = useControllableValue<(string | number)[]>(props); + + const isTagSelectOption = (node: TagSelectOptionElement) => + node && + node.type && + (node.type.isTagSelectOption || node.type.displayName === 'TagSelectOption'); + + const getAllTags = () => { + const childrenArray = React.Children.toArray(children) as TagSelectOptionElement[]; + const checkedTags = childrenArray + .filter((child) => isTagSelectOption(child)) + .map((child) => child.props.value); + return checkedTags || []; + }; + + const onSelectAll = (checked: boolean) => { + let checkedTags: (string | number)[] = []; + if (checked) { + checkedTags = getAllTags(); + } + setValue(checkedTags); + }; + + const handleTagChange = (tag: string | number, checked: boolean) => { + const checkedTags: (string | number)[] = [...(value || [])]; + + const index = checkedTags.indexOf(tag); + if (checked && index === -1) { + checkedTags.push(tag); + } else if (!checked && index > -1) { + checkedTags.splice(index, 1); + } + setValue(checkedTags); + }; + + const checkedAll = getAllTags().length === value?.length; + const { expandText = '展开', collapseText = '收起', selectAllText = '全部' } = actionsText; + + const cls = classNames(styles.tagSelect, className, { + [styles.hasExpandTag]: expandable, + [styles.expanded]: expand, + }); + + return ( +
    + {hideCheckAll ? null : ( + + {selectAllText} + + )} + {children && + React.Children.map(children, (child: TagSelectOptionElement) => { + if (isTagSelectOption(child)) { + return React.cloneElement(child, { + key: `tag-select-${child.props.value}`, + value: child.props.value, + checked: value && value.indexOf(child.props.value) > -1, + onChange: handleTagChange, + }); + } + return child; + })} + {expandable && ( + { + toggle(); + }} + > + {expand ? ( + <> + {collapseText} + + ) : ( + <> + {expandText} + + + )} + + )} +
    + ); +}; + +TagSelect.Option = TagSelectOption; + +export default TagSelect; diff --git a/demo/src/pages/list/search/articles/data.d.ts b/demo/src/pages/list/search/articles/data.d.ts new file mode 100644 index 00000000..0a4597c9 --- /dev/null +++ b/demo/src/pages/list/search/articles/data.d.ts @@ -0,0 +1,32 @@ +export type Member = { + avatar: string; + name: string; + id: string; +}; + +export interface Params { + count: number; +} +export interface ListItemDataType { + id: string; + owner: string; + title: string; + avatar: string; + cover: string; + status: 'normal' | 'exception' | 'active' | 'success'; + percent: number; + logo: string; + href: string; + body?: any; + updatedAt: number; + createdAt: number; + subDescription: string; + description: string; + activeUser: number; + newUser: number; + star: number; + like: number; + message: number; + content: string; + members: Member[]; +} diff --git a/demo/src/pages/list/search/articles/index.tsx b/demo/src/pages/list/search/articles/index.tsx new file mode 100644 index 00000000..e61be81c --- /dev/null +++ b/demo/src/pages/list/search/articles/index.tsx @@ -0,0 +1,224 @@ +import { LikeOutlined, LoadingOutlined, MessageOutlined, StarOutlined } from '@ant-design/icons'; +import { Button, Card, Col, Form, List, Row, Select, Tag } from 'antd'; +import type { FC } from 'react'; +import React from 'react'; +import { useRequest } from 'umi'; +import ArticleListContent from './components/ArticleListContent'; +import StandardFormRow from './components/StandardFormRow'; +import TagSelect from './components/TagSelect'; +import type { ListItemDataType } from './data.d'; +import { queryFakeList } from './service'; +import styles from './style.less'; + +const { Option } = Select; +const FormItem = Form.Item; + +const pageSize = 5; + +const Articles: FC = () => { + const [form] = Form.useForm(); + + const { data, reload, loading, loadMore, loadingMore } = useRequest( + () => { + return queryFakeList({ + count: pageSize, + }); + }, + { + loadMore: true, + }, + ); + + const list = data?.list || []; + + const setOwner = () => { + form.setFieldsValue({ + owner: ['wzj'], + }); + }; + + const owners = [ + { + id: 'wzj', + name: '我自己', + }, + { + id: 'wjh', + name: '吴家豪', + }, + { + id: 'zxx', + name: '周星星', + }, + { + id: 'zly', + name: '赵丽颖', + }, + { + id: 'ym', + name: '姚明', + }, + ]; + + const IconText: React.FC<{ + type: string; + text: React.ReactNode; + }> = ({ type, text }) => { + switch (type) { + case 'star-o': + return ( + + + {text} + + ); + case 'like-o': + return ( + + + {text} + + ); + case 'message': + return ( + + + {text} + + ); + default: + return null; + } + }; + + const formItemLayout = { + wrapperCol: { + xs: { span: 24 }, + sm: { span: 24 }, + md: { span: 12 }, + }, + }; + + const loadMoreDom = list.length > 0 && ( +
    + +
    + ); + + return ( + <> + +
    + + + + 类目一 + 类目二 + 类目三 + 类目四 + 类目五 + 类目六 + 类目七 + 类目八 + 类目九 + 类目十 + 类目十一 + 类目十二 + + + + + + + + + 只看自己的 + + + + + + + + + + + + + + + + +
    +
    + + + size="large" + loading={loading} + rowKey="id" + itemLayout="vertical" + loadMore={loadMoreDom} + dataSource={list} + renderItem={(item) => ( + , + , + , + ]} + extra={
    } + > + + {item.title} + + } + description={ + + Ant Design + 设计语言 + 蚂蚁金服 + + } + /> + + + )} + /> + + + ); +}; + +export default Articles; diff --git a/demo/src/pages/list/search/articles/service.ts b/demo/src/pages/list/search/articles/service.ts new file mode 100644 index 00000000..b6fb5712 --- /dev/null +++ b/demo/src/pages/list/search/articles/service.ts @@ -0,0 +1,10 @@ +import { request } from 'umi'; +import type { Params, ListItemDataType } from './data.d'; + +export async function queryFakeList( + params: Params, +): Promise<{ data: { list: ListItemDataType[] } }> { + return request('/api/fake_list', { + params, + }); +} diff --git a/demo/src/pages/list/search/articles/style.less b/demo/src/pages/list/search/articles/style.less new file mode 100644 index 00000000..fe07d851 --- /dev/null +++ b/demo/src/pages/list/search/articles/style.less @@ -0,0 +1,31 @@ +@import '~antd/es/style/themes/default.less'; + +a.listItemMetaTitle { + color: @heading-color; +} +.listItemExtra { + width: 272px; + height: 1px; +} +.selfTrigger { + margin-left: 12px; +} + +@media screen and (max-width: @screen-xs) { + .selfTrigger { + display: block; + margin-left: 0; + } +} +@media screen and (max-width: @screen-md) { + .selfTrigger { + display: block; + margin-left: 0; + } +} +@media screen and (max-width: @screen-lg) { + .listItemExtra { + width: 0; + height: 1px; + } +} diff --git a/demo/src/pages/list/search/index.tsx b/demo/src/pages/list/search/index.tsx new file mode 100644 index 00000000..bfffb33d --- /dev/null +++ b/demo/src/pages/list/search/index.tsx @@ -0,0 +1,87 @@ +import { PageContainer } from '@ant-design/pro-layout'; +import { Input } from 'antd'; +import type { FC } from 'react'; +import { history } from 'umi'; + +type SearchProps = { + match: { + url: string; + path: string; + }; + location: { + pathname: string; + }; +}; + +const tabList = [ + { + key: 'articles', + tab: '文章', + }, + { + key: 'projects', + tab: '项目', + }, + { + key: 'applications', + tab: '应用', + }, +]; + +const Search: FC = (props) => { + const handleTabChange = (key: string) => { + const { match } = props; + const url = match.url === '/' ? '' : match.url; + switch (key) { + case 'articles': + history.push(`${url}/articles`); + break; + case 'applications': + history.push(`${url}/applications`); + break; + case 'projects': + history.push(`${url}/projects`); + break; + default: + break; + } + }; + + const handleFormSubmit = (value: string) => { + // eslint-disable-next-line no-console + console.log(value); + }; + + const getTabKey = () => { + const { match, location } = props; + const url = match.path === '/' ? '' : match.path; + const tabKey = location.pathname.replace(`${url}/`, ''); + if (tabKey && tabKey !== '/') { + return tabKey; + } + return 'articles'; + }; + + return ( + + +
    + } + tabList={tabList} + tabActiveKey={getTabKey()} + onTabChange={handleTabChange} + > + {props.children} + + ); +}; + +export default Search; diff --git a/demo/src/pages/list/search/projects/_mock.ts b/demo/src/pages/list/search/projects/_mock.ts new file mode 100644 index 00000000..4f9f4a36 --- /dev/null +++ b/demo/src/pages/list/search/projects/_mock.ts @@ -0,0 +1,118 @@ +import type { Request, Response } from 'express'; +import type { ListItemDataType } from './data.d'; + +const titles = [ + 'Alipay', + 'Angular', + 'Ant Design', + 'Ant Design Pro', + 'Bootstrap', + 'React', + 'Vue', + 'Webpack', +]; +const avatars = [ + 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', // Alipay + 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', // Angular + 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', // Ant Design + 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', // Ant Design Pro + 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', // Bootstrap + 'https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png', // React + 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', // Vue + 'https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png', // Webpack +]; + +const covers = [ + 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png', + 'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png', + 'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png', + 'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png', +]; +const desc = [ + '那是一种内在的东西, 他们到达不了,也无法触及的', + '希望是一个好东西,也许是最好的,好东西是不会消亡的', + '生命就像一盒巧克力,结果往往出人意料', + '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆', + '那时候我只会想自己想要什么,从不想自己拥有什么', +]; +const user = [ + '付小小', + '曲丽丽', + '林东东', + '周星星', + '吴加好', + '朱偏右', + '鱼酱', + '乐哥', + '谭小仪', + '仲尼', +]; + +function fakeList(count: number): ListItemDataType[] { + const list = []; + for (let i = 0; i < count; i += 1) { + list.push({ + id: `fake-list-${i}`, + owner: user[i % 10], + title: titles[i % 8], + avatar: avatars[i % 8], + cover: parseInt(`${i / 4}`, 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)], + status: ['active', 'exception', 'normal'][i % 3] as + | 'normal' + | 'exception' + | 'active' + | 'success', + percent: Math.ceil(Math.random() * 50) + 50, + logo: avatars[i % 8], + href: 'https://ant.design', + updatedAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), + createdAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), + subDescription: desc[i % 5], + description: + '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。', + activeUser: Math.ceil(Math.random() * 100000) + 100000, + newUser: Math.ceil(Math.random() * 1000) + 1000, + star: Math.ceil(Math.random() * 100) + 100, + like: Math.ceil(Math.random() * 100) + 100, + message: Math.ceil(Math.random() * 10) + 10, + content: + '段落示意:蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。', + members: [ + { + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png', + name: '曲丽丽', + id: 'member1', + }, + { + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png', + name: '王昭君', + id: 'member2', + }, + { + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png', + name: '董娜娜', + id: 'member3', + }, + ], + }); + } + + return list; +} + +function getFakeList(req: Request, res: Response) { + const params: any = req.query; + + const count = params.count * 1 || 20; + + const result = fakeList(count); + return res.json({ + data: { + list: result, + }, + }); +} + +export default { + 'GET /api/fake_list': getFakeList, +}; diff --git a/demo/src/pages/list/search/projects/components/AvatarList/index.less b/demo/src/pages/list/search/projects/components/AvatarList/index.less new file mode 100644 index 00000000..a7a3d441 --- /dev/null +++ b/demo/src/pages/list/search/projects/components/AvatarList/index.less @@ -0,0 +1,50 @@ +@import '~antd/es/style/themes/default.less'; + +.avatarList { + display: inline-block; + ul { + display: inline-block; + margin-left: 8px; + font-size: 0; + } +} + +.avatarItem { + display: inline-block; + width: @avatar-size-base; + height: @avatar-size-base; + margin-left: -8px; + font-size: @font-size-base; + :global { + .ant-avatar { + border: 1px solid @border-color-base; + } + } +} + +.avatarItemLarge { + width: @avatar-size-lg; + height: @avatar-size-lg; +} + +.avatarItemSmall { + width: @avatar-size-sm; + height: @avatar-size-sm; +} + +.avatarItemMini { + width: 20px; + height: 20px; + :global { + .ant-avatar { + width: 20px; + height: 20px; + line-height: 20px; + + .ant-avatar-string { + font-size: 12px; + line-height: 18px; + } + } + } +} diff --git a/demo/src/pages/list/search/projects/components/AvatarList/index.tsx b/demo/src/pages/list/search/projects/components/AvatarList/index.tsx new file mode 100644 index 00000000..4d57501a --- /dev/null +++ b/demo/src/pages/list/search/projects/components/AvatarList/index.tsx @@ -0,0 +1,84 @@ +import { Avatar, Tooltip } from 'antd'; + +import React from 'react'; +import classNames from 'classnames'; +import styles from './index.less'; + +export declare type SizeType = number | 'small' | 'default' | 'large'; + +export type AvatarItemProps = { + tips: React.ReactNode; + src: string; + size?: SizeType; + style?: React.CSSProperties; + onClick?: () => void; +}; + +export type AvatarListProps = { + Item?: React.ReactElement; + size?: SizeType; + maxLength?: number; + excessItemsStyle?: React.CSSProperties; + style?: React.CSSProperties; + children: React.ReactElement | React.ReactElement[]; +}; + +const avatarSizeToClassName = (size?: SizeType | 'mini') => + classNames(styles.avatarItem, { + [styles.avatarItemLarge]: size === 'large', + [styles.avatarItemSmall]: size === 'small', + [styles.avatarItemMini]: size === 'mini', + }); + +const Item: React.FC = ({ src, size, tips, onClick = () => {} }) => { + const cls = avatarSizeToClassName(size); + + return ( +
  • + {tips ? ( + + + + ) : ( + + )} +
  • + ); +}; + +const AvatarList: React.FC & { Item: typeof Item } = ({ + children, + size, + maxLength = 5, + excessItemsStyle, + ...other +}) => { + const numOfChildren = React.Children.count(children); + const numToShow = maxLength >= numOfChildren ? numOfChildren : maxLength; + const childrenArray = React.Children.toArray(children) as React.ReactElement[]; + const childrenWithProps = childrenArray.slice(0, numToShow).map((child) => + React.cloneElement(child, { + size, + }), + ); + + if (numToShow < numOfChildren) { + const cls = avatarSizeToClassName(size); + + childrenWithProps.push( +
  • + {`+${numOfChildren - maxLength}`} +
  • , + ); + } + + return ( +
    +
      {childrenWithProps}
    +
    + ); +}; + +AvatarList.Item = Item; + +export default AvatarList; diff --git a/demo/src/pages/list/search/projects/components/StandardFormRow/index.less b/demo/src/pages/list/search/projects/components/StandardFormRow/index.less new file mode 100644 index 00000000..d619cd2c --- /dev/null +++ b/demo/src/pages/list/search/projects/components/StandardFormRow/index.less @@ -0,0 +1,88 @@ +@import '~antd/es/style/themes/default.less'; + +.standardFormRow { + display: flex; + width: 100%; + margin-bottom: 16px; + padding-bottom: 16px; + border-bottom: 1px dashed @border-color-split; + :global { + .ant-form-item, + .ant-legacy-form-item { + margin-right: 24px; + } + .ant-form-item-label, + .ant-legacy-form-item-label { + label { + margin-right: 0; + color: @text-color; + } + } + .ant-form-item-label, + .ant-legacy-form-item-label, + .ant-form-item-control, + .ant-legacy-form-item-control { + padding: 0; + line-height: 32px; + } + } + .label { + flex: 0 0 auto; + margin-right: 24px; + color: @heading-color; + font-size: @font-size-base; + text-align: right; + & > span { + display: inline-block; + height: 32px; + line-height: 32px; + &::after { + content: ':'; + } + } + } + .content { + flex: 1 1 0; + :global { + .ant-form-item, + .ant-legacy-form-item { + &:last-child { + display: block; + margin-right: 0; + } + } + } + } +} + +.standardFormRowLast { + margin-bottom: 0; + padding-bottom: 0; + border: none; +} + +.standardFormRowBlock { + :global { + .ant-form-item, + .ant-legacy-form-item, + div.ant-form-item-control-wrapper, + div.ant-legacy-form-item-control-wrapper { + display: block; + } + } +} + +.standardFormRowGrid { + :global { + .ant-form-item, + .ant-legacy-form-item, + div.ant-form-item-control-wrapper, + div.ant-legacy-form-item-control-wrapper { + display: block; + } + .ant-form-item-label, + .ant-legacy-form-item-label { + float: left; + } + } +} diff --git a/demo/src/pages/list/search/projects/components/StandardFormRow/index.tsx b/demo/src/pages/list/search/projects/components/StandardFormRow/index.tsx new file mode 100644 index 00000000..fe4cb388 --- /dev/null +++ b/demo/src/pages/list/search/projects/components/StandardFormRow/index.tsx @@ -0,0 +1,39 @@ +import React from 'react'; +import classNames from 'classnames'; +import styles from './index.less'; + +type StandardFormRowProps = { + title?: string; + last?: boolean; + block?: boolean; + grid?: boolean; + style?: React.CSSProperties; +}; + +const StandardFormRow: React.FC = ({ + title, + children, + last, + block, + grid, + ...rest +}) => { + const cls = classNames(styles.standardFormRow, { + [styles.standardFormRowBlock]: block, + [styles.standardFormRowLast]: last, + [styles.standardFormRowGrid]: grid, + }); + + return ( +
    + {title && ( +
    + {title} +
    + )} +
    {children}
    +
    + ); +}; + +export default StandardFormRow; diff --git a/demo/src/pages/list/search/projects/components/TagSelect/index.less b/demo/src/pages/list/search/projects/components/TagSelect/index.less new file mode 100644 index 00000000..b174f042 --- /dev/null +++ b/demo/src/pages/list/search/projects/components/TagSelect/index.less @@ -0,0 +1,33 @@ +@import '~antd/es/style/themes/default.less'; + +.tagSelect { + position: relative; + max-height: 32px; + margin-left: -8px; + overflow: hidden; + line-height: 32px; + transition: all 0.3s; + user-select: none; + :global { + .ant-tag { + margin-right: 24px; + padding: 0 8px; + font-size: @font-size-base; + } + } + &.expanded { + max-height: 200px; + transition: all 0.3s; + } + .trigger { + position: absolute; + top: 0; + right: 0; + span.anticon { + font-size: 12px; + } + } + &.hasExpandTag { + padding-right: 50px; + } +} diff --git a/demo/src/pages/list/search/projects/components/TagSelect/index.tsx b/demo/src/pages/list/search/projects/components/TagSelect/index.tsx new file mode 100644 index 00000000..5f10efd4 --- /dev/null +++ b/demo/src/pages/list/search/projects/components/TagSelect/index.tsx @@ -0,0 +1,142 @@ +import { DownOutlined, UpOutlined } from '@ant-design/icons'; +import { useBoolean, useControllableValue } from 'ahooks'; +import { Tag } from 'antd'; +import classNames from 'classnames'; +import type { FC } from 'react'; +import React from 'react'; +import styles from './index.less'; + +const { CheckableTag } = Tag; + +export interface TagSelectOptionProps { + value: string | number; + style?: React.CSSProperties; + checked?: boolean; + onChange?: (value: string | number, state: boolean) => void; +} + +const TagSelectOption: React.FC & { + isTagSelectOption: boolean; +} = ({ children, checked, onChange, value }) => ( + onChange && onChange(value, state)} + > + {children} + +); + +TagSelectOption.isTagSelectOption = true; + +type TagSelectOptionElement = React.ReactElement; +export interface TagSelectProps { + onChange?: (value: (string | number)[]) => void; + expandable?: boolean; + value?: (string | number)[]; + defaultValue?: (string | number)[]; + style?: React.CSSProperties; + hideCheckAll?: boolean; + actionsText?: { + expandText?: React.ReactNode; + collapseText?: React.ReactNode; + selectAllText?: React.ReactNode; + }; + className?: string; + Option?: TagSelectOptionProps; + children?: TagSelectOptionElement | TagSelectOptionElement[]; +} + +const TagSelect: FC & { Option: typeof TagSelectOption } = (props) => { + const { children, hideCheckAll = false, className, style, expandable, actionsText = {} } = props; + + const [expand, { toggle }] = useBoolean(); + + const [value, setValue] = useControllableValue<(string | number)[]>(props); + + const isTagSelectOption = (node: TagSelectOptionElement) => + node && + node.type && + (node.type.isTagSelectOption || node.type.displayName === 'TagSelectOption'); + + const getAllTags = () => { + const childrenArray = React.Children.toArray(children) as TagSelectOptionElement[]; + const checkedTags = childrenArray + .filter((child) => isTagSelectOption(child)) + .map((child) => child.props.value); + return checkedTags || []; + }; + + const onSelectAll = (checked: boolean) => { + let checkedTags: (string | number)[] = []; + if (checked) { + checkedTags = getAllTags(); + } + setValue(checkedTags); + }; + + const handleTagChange = (tag: string | number, checked: boolean) => { + const checkedTags: (string | number)[] = [...(value || [])]; + + const index = checkedTags.indexOf(tag); + if (checked && index === -1) { + checkedTags.push(tag); + } else if (!checked && index > -1) { + checkedTags.splice(index, 1); + } + setValue(checkedTags); + }; + + const checkedAll = getAllTags().length === value?.length; + const { expandText = '展开', collapseText = '收起', selectAllText = '全部' } = actionsText; + + const cls = classNames(styles.tagSelect, className, { + [styles.hasExpandTag]: expandable, + [styles.expanded]: expand, + }); + + return ( +
    + {hideCheckAll ? null : ( + + {selectAllText} + + )} + {children && + React.Children.map(children, (child: TagSelectOptionElement) => { + if (isTagSelectOption(child)) { + return React.cloneElement(child, { + key: `tag-select-${child.props.value}`, + value: child.props.value, + checked: value && value.indexOf(child.props.value) > -1, + onChange: handleTagChange, + }); + } + return child; + })} + {expandable && ( + { + toggle(); + }} + > + {expand ? ( + <> + {collapseText} + + ) : ( + <> + {expandText} + + + )} + + )} +
    + ); +}; + +TagSelect.Option = TagSelectOption; + +export default TagSelect; diff --git a/demo/src/pages/list/search/projects/data.d.ts b/demo/src/pages/list/search/projects/data.d.ts new file mode 100644 index 00000000..0a4597c9 --- /dev/null +++ b/demo/src/pages/list/search/projects/data.d.ts @@ -0,0 +1,32 @@ +export type Member = { + avatar: string; + name: string; + id: string; +}; + +export interface Params { + count: number; +} +export interface ListItemDataType { + id: string; + owner: string; + title: string; + avatar: string; + cover: string; + status: 'normal' | 'exception' | 'active' | 'success'; + percent: number; + logo: string; + href: string; + body?: any; + updatedAt: number; + createdAt: number; + subDescription: string; + description: string; + activeUser: number; + newUser: number; + star: number; + like: number; + message: number; + content: string; + members: Member[]; +} diff --git a/demo/src/pages/list/search/projects/index.tsx b/demo/src/pages/list/search/projects/index.tsx new file mode 100644 index 00000000..19eafebe --- /dev/null +++ b/demo/src/pages/list/search/projects/index.tsx @@ -0,0 +1,135 @@ +import { Card, Col, Form, List, Row, Select, Typography } from 'antd'; +import moment from 'moment'; +import type { FC } from 'react'; +import { useRequest } from 'umi'; +import AvatarList from './components/AvatarList'; +import StandardFormRow from './components/StandardFormRow'; +import TagSelect from './components/TagSelect'; +import type { ListItemDataType } from './data.d'; +import { queryFakeList } from './service'; +import styles from './style.less'; + +const { Option } = Select; +const FormItem = Form.Item; +const { Paragraph } = Typography; + +const getKey = (id: string, index: number) => `${id}-${index}`; + +const Projects: FC = () => { + const { data, loading, run } = useRequest((values: any) => { + console.log('form data', values); + return queryFakeList({ + count: 8, + }); + }); + + const list = data?.list || []; + + const cardList = list && ( + + rowKey="id" + loading={loading} + grid={{ + gutter: 16, + xs: 1, + sm: 2, + md: 3, + lg: 3, + xl: 4, + xxl: 4, + }} + dataSource={list} + renderItem={(item) => ( + + }> + {item.title}} + description={ + + {item.subDescription} + + } + /> +
    + {moment(item.updatedAt).fromNow()} +
    + + {item.members.map((member, i) => ( + + ))} + +
    +
    +
    +
    + )} + /> + ); + + const formItemLayout = { + wrapperCol: { + xs: { span: 24 }, + sm: { span: 16 }, + }, + }; + + return ( +
    + +
    { + // 表单项变化时请求数据 + // 模拟查询表单生效 + run(values); + }} + > + + + + 类目一 + 类目二 + 类目三 + 类目四 + 类目五 + 类目六 + 类目七 + 类目八 + 类目九 + 类目十 + 类目十一 + 类目十二 + + + + + + + + + + + + + + + + + +
    +
    +
    {cardList}
    +
    + ); +}; + +export default Projects; diff --git a/demo/src/pages/list/search/projects/service.ts b/demo/src/pages/list/search/projects/service.ts new file mode 100644 index 00000000..fd1bcf6f --- /dev/null +++ b/demo/src/pages/list/search/projects/service.ts @@ -0,0 +1,10 @@ +import { request } from 'umi'; +import type { Params, ListItemDataType } from './data'; + +export async function queryFakeList( + params: Params, +): Promise<{ data: { list: ListItemDataType[] } }> { + return request('/api/fake_list', { + params, + }); +} diff --git a/demo/src/pages/list/search/projects/style.less b/demo/src/pages/list/search/projects/style.less new file mode 100644 index 00000000..e2cf6787 --- /dev/null +++ b/demo/src/pages/list/search/projects/style.less @@ -0,0 +1,55 @@ +@import '~antd/es/style/themes/default.less'; +@import './utils/utils.less'; + +.coverCardList { + .card { + :global { + .ant-card-meta-title { + margin-bottom: 4px; + & > a { + display: inline-block; + max-width: 100%; + color: @heading-color; + } + } + .ant-card-meta-description { + height: 44px; + overflow: hidden; + line-height: 22px; + } + } + + &:hover { + :global { + .ant-card-meta-title > a { + color: @primary-color; + } + } + } + } + + .cardItemContent { + display: flex; + height: 20px; + margin-top: 16px; + margin-bottom: -4px; + line-height: 20px; + & > span { + flex: 1; + color: @text-color-secondary; + font-size: 12px; + } + .avatarList { + flex: 0 1 auto; + } + } + .cardList { + margin-top: 24px; + } + + :global { + .ant-list .ant-list-item-content-single { + max-width: 100%; + } + } +} diff --git a/demo/src/pages/list/search/projects/utils/utils.less b/demo/src/pages/list/search/projects/utils/utils.less new file mode 100644 index 00000000..de1aa642 --- /dev/null +++ b/demo/src/pages/list/search/projects/utils/utils.less @@ -0,0 +1,50 @@ +.textOverflow() { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + word-break: break-all; +} + +.textOverflowMulti(@line: 3, @bg: #fff) { + position: relative; + max-height: @line * 1.5em; + margin-right: -1em; + padding-right: 1em; + overflow: hidden; + line-height: 1.5em; + text-align: justify; + &::before { + position: absolute; + right: 14px; + bottom: 0; + padding: 0 1px; + background: @bg; + content: '...'; + } + &::after { + position: absolute; + right: 14px; + width: 1em; + height: 1em; + margin-top: 0.2em; + background: white; + content: ''; + } +} + +// mixins for clearfix +// ------------------------ +.clearfix() { + zoom: 1; + &::before, + &::after { + display: table; + content: ' '; + } + &::after { + clear: both; + height: 0; + font-size: 0; + visibility: hidden; + } +} diff --git a/demo/src/pages/list/table-list/_mock.ts b/demo/src/pages/list/table-list/_mock.ts new file mode 100644 index 00000000..26724780 --- /dev/null +++ b/demo/src/pages/list/table-list/_mock.ts @@ -0,0 +1,177 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import type { Request, Response } from 'express'; +import { parse } from 'url'; +import type { TableListItem, TableListParams } from './data.d'; + +// mock tableListDataSource +const genList = (current: number, pageSize: number) => { + const tableListDataSource: TableListItem[] = []; + + for (let i = 0; i < pageSize; i += 1) { + const index = (current - 1) * 10 + i; + tableListDataSource.push({ + key: index, + disabled: i % 6 === 0, + href: 'https://ant.design', + avatar: [ + 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + ][i % 2], + name: `TradeCode ${index}`, + owner: '曲丽丽', + desc: '这是一段描述', + callNo: Math.floor(Math.random() * 1000), + status: (Math.floor(Math.random() * 10) % 4).toString(), + updatedAt: new Date(), + createdAt: new Date(), + progress: Math.ceil(Math.random() * 100), + }); + } + tableListDataSource.reverse(); + return tableListDataSource; +}; + +let tableListDataSource = genList(1, 100); + +function getRule(req: Request, res: Response, u: string) { + let realUrl = u; + if (!realUrl || Object.prototype.toString.call(realUrl) !== '[object String]') { + realUrl = req.url; + } + const { current = 1, pageSize = 10 } = req.query; + const params = parse(realUrl, true).query as unknown as TableListParams; + + let dataSource = [...tableListDataSource].slice( + ((current as number) - 1) * (pageSize as number), + (current as number) * (pageSize as number), + ); + if (params.sorter) { + const sorter = JSON.parse(params.sorter as any); + dataSource = dataSource.sort((prev, next) => { + let sortNumber = 0; + Object.keys(sorter).forEach((key) => { + if (sorter[key] === 'descend') { + if (prev[key] - next[key] > 0) { + sortNumber += -1; + } else { + sortNumber += 1; + } + return; + } + if (prev[key] - next[key] > 0) { + sortNumber += 1; + } else { + sortNumber += -1; + } + }); + return sortNumber; + }); + } + if (params.filter) { + const filter = JSON.parse(params.filter as any) as Record; + if (Object.keys(filter).length > 0) { + dataSource = dataSource.filter((item) => { + return Object.keys(filter).some((key) => { + if (!filter[key]) { + return true; + } + if (filter[key].includes(`${item[key]}`)) { + return true; + } + return false; + }); + }); + } + } + + if (params.name) { + dataSource = dataSource.filter((data) => data.name.includes(params.name || '')); + } + + let finalPageSize = 10; + if (params.pageSize) { + finalPageSize = parseInt(`${params.pageSize}`, 10); + } + + const result = { + data: dataSource, + total: tableListDataSource.length, + success: true, + pageSize: finalPageSize, + current: parseInt(`${params.currentPage}`, 10) || 1, + }; + + return res.json(result); +} + +function postRule(req: Request, res: Response, u: string, b: Request) { + let realUrl = u; + if (!realUrl || Object.prototype.toString.call(realUrl) !== '[object String]') { + realUrl = req.url; + } + + const body = (b && b.body) || req.body; + const { name, desc, key } = body; + + switch (req.method) { + /* eslint no-case-declarations:0 */ + case 'DELETE': + tableListDataSource = tableListDataSource.filter((item) => key.indexOf(item.key) === -1); + break; + case 'POST': + (() => { + const i = Math.ceil(Math.random() * 10000); + const newRule = { + key: tableListDataSource.length, + href: 'https://ant.design', + avatar: [ + 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + ][i % 2], + name, + owner: '曲丽丽', + desc, + callNo: Math.floor(Math.random() * 1000), + status: (Math.floor(Math.random() * 10) % 2).toString(), + updatedAt: new Date(), + createdAt: new Date(), + progress: Math.ceil(Math.random() * 100), + }; + tableListDataSource.unshift(newRule); + return res.json(newRule); + })(); + return; + + case 'PUT': + (() => { + let newRule = {}; + tableListDataSource = tableListDataSource.map((item) => { + if (item.key === key) { + newRule = { ...item, desc, name }; + return { ...item, desc, name }; + } + return item; + }); + return res.json(newRule); + })(); + return; + default: + break; + } + + const result = { + list: tableListDataSource, + pagination: { + total: tableListDataSource.length, + }, + }; + + res.json(result); +} + +export default { + 'GET /api/rule': getRule, + 'POST /api/rule': postRule, + 'DELETE /api/rule': postRule, + 'PUT /api/rule': postRule, +}; diff --git a/demo/src/pages/list/table-list/components/CreateForm.tsx b/demo/src/pages/list/table-list/components/CreateForm.tsx new file mode 100644 index 00000000..f7ecb093 --- /dev/null +++ b/demo/src/pages/list/table-list/components/CreateForm.tsx @@ -0,0 +1,25 @@ +import React from 'react'; +import { Modal } from 'antd'; + +type CreateFormProps = { + modalVisible: boolean; + onCancel: () => void; +}; + +const CreateForm: React.FC = (props) => { + const { modalVisible, onCancel } = props; + + return ( + onCancel()} + footer={null} + > + {props.children} + + ); +}; + +export default CreateForm; diff --git a/demo/src/pages/list/table-list/components/UpdateForm.tsx b/demo/src/pages/list/table-list/components/UpdateForm.tsx new file mode 100644 index 00000000..d704c132 --- /dev/null +++ b/demo/src/pages/list/table-list/components/UpdateForm.tsx @@ -0,0 +1,159 @@ +import React from 'react'; +import { Modal } from 'antd'; +import { + ProFormSelect, + ProFormText, + ProFormTextArea, + StepsForm, + ProFormRadio, + ProFormDateTimePicker, +} from '@ant-design/pro-form'; +import type { TableListItem } from '../data'; + +export type FormValueType = { + target?: string; + template?: string; + type?: string; + time?: string; + frequency?: string; +} & Partial; + +export type UpdateFormProps = { + onCancel: (flag?: boolean, formVals?: FormValueType) => void; + onSubmit: (values: FormValueType) => Promise; + updateModalVisible: boolean; + values: Partial; +}; + +const UpdateForm: React.FC = (props) => { + return ( + { + return ( + { + props.onCancel(); + }} + > + {dom} + + ); + }} + onFinish={props.onSubmit} + > + + + + + + + + + + + + + + + ); +}; + +export default UpdateForm; diff --git a/demo/src/pages/list/table-list/data.d.ts b/demo/src/pages/list/table-list/data.d.ts new file mode 100644 index 00000000..5063cf37 --- /dev/null +++ b/demo/src/pages/list/table-list/data.d.ts @@ -0,0 +1,36 @@ +export type TableListItem = { + key: number; + disabled?: boolean; + href: string; + avatar: string; + name: string; + owner: string; + desc: string; + callNo: number; + status: string; + updatedAt: Date; + createdAt: Date; + progress: number; +}; + +export type TableListPagination = { + total: number; + pageSize: number; + current: number; +}; + +export type TableListData = { + list: TableListItem[]; + pagination: Partial; +}; + +export type TableListParams = { + status?: string; + name?: string; + desc?: string; + key?: number; + pageSize?: number; + currentPage?: number; + filter?: Record; + sorter?: Record; +}; diff --git a/demo/src/pages/list/table-list/index.tsx b/demo/src/pages/list/table-list/index.tsx new file mode 100644 index 00000000..bc295de8 --- /dev/null +++ b/demo/src/pages/list/table-list/index.tsx @@ -0,0 +1,320 @@ +import { PlusOutlined } from '@ant-design/icons'; +import { Button, message, Input, Drawer } from 'antd'; +import React, { useState, useRef } from 'react'; +import { PageContainer, FooterToolbar } from '@ant-design/pro-layout'; +import type { ProColumns, ActionType } from '@ant-design/pro-table'; +import ProTable from '@ant-design/pro-table'; +import { ModalForm, ProFormText, ProFormTextArea } from '@ant-design/pro-form'; +import type { ProDescriptionsItemProps } from '@ant-design/pro-descriptions'; +import ProDescriptions from '@ant-design/pro-descriptions'; +import type { FormValueType } from './components/UpdateForm'; +import UpdateForm from './components/UpdateForm'; +import { rule, addRule, updateRule, removeRule } from './service'; +import type { TableListItem, TableListPagination } from './data'; +/** + * 添加节点 + * + * @param fields + */ + +const handleAdd = async (fields: TableListItem) => { + const hide = message.loading('正在添加'); + + try { + await addRule({ ...fields }); + hide(); + message.success('添加成功'); + return true; + } catch (error) { + hide(); + message.error('添加失败请重试!'); + return false; + } +}; +/** + * 更新节点 + * + * @param fields + */ + +const handleUpdate = async (fields: FormValueType, currentRow?: TableListItem) => { + const hide = message.loading('正在配置'); + + try { + await updateRule({ + ...currentRow, + ...fields, + }); + hide(); + message.success('配置成功'); + return true; + } catch (error) { + hide(); + message.error('配置失败请重试!'); + return false; + } +}; +/** + * 删除节点 + * + * @param selectedRows + */ + +const handleRemove = async (selectedRows: TableListItem[]) => { + const hide = message.loading('正在删除'); + if (!selectedRows) return true; + + try { + await removeRule({ + key: selectedRows.map((row) => row.key), + }); + hide(); + message.success('删除成功,即将刷新'); + return true; + } catch (error) { + hide(); + message.error('删除失败,请重试'); + return false; + } +}; + +const TableList: React.FC = () => { + /** 新建窗口的弹窗 */ + const [createModalVisible, handleModalVisible] = useState(false); + /** 分布更新窗口的弹窗 */ + + const [updateModalVisible, handleUpdateModalVisible] = useState(false); + const [showDetail, setShowDetail] = useState(false); + const actionRef = useRef(); + const [currentRow, setCurrentRow] = useState(); + const [selectedRowsState, setSelectedRows] = useState([]); + /** 国际化配置 */ + + const columns: ProColumns[] = [ + { + title: '规则名称', + dataIndex: 'name', + tip: '规则名称是唯一的 key', + render: (dom, entity) => { + return ( + { + setCurrentRow(entity); + setShowDetail(true); + }} + > + {dom} + + ); + }, + }, + { + title: '描述', + dataIndex: 'desc', + valueType: 'textarea', + }, + { + title: '服务调用次数', + dataIndex: 'callNo', + sorter: true, + hideInForm: true, + renderText: (val: string) => `${val}万`, + }, + { + title: '状态', + dataIndex: 'status', + hideInForm: true, + valueEnum: { + 0: { + text: '关闭', + status: 'Default', + }, + 1: { + text: '运行中', + status: 'Processing', + }, + 2: { + text: '已上线', + status: 'Success', + }, + 3: { + text: '异常', + status: 'Error', + }, + }, + }, + { + title: '上次调度时间', + sorter: true, + dataIndex: 'updatedAt', + valueType: 'dateTime', + renderFormItem: (item, { defaultRender, ...rest }, form) => { + const status = form.getFieldValue('status'); + + if (`${status}` === '0') { + return false; + } + + if (`${status}` === '3') { + return ; + } + + return defaultRender(item); + }, + }, + { + title: '操作', + dataIndex: 'option', + valueType: 'option', + render: (_, record) => [ + { + handleUpdateModalVisible(true); + setCurrentRow(record); + }} + > + 配置 + , + + 订阅警报 + , + ], + }, + ]; + + return ( + + + headerTitle="查询表格" + actionRef={actionRef} + rowKey="key" + search={{ + labelWidth: 120, + }} + toolBarRender={() => [ + , + ]} + request={rule} + columns={columns} + rowSelection={{ + onChange: (_, selectedRows) => { + setSelectedRows(selectedRows); + }, + }} + /> + {selectedRowsState?.length > 0 && ( + + 已选择{' '} + + {selectedRowsState.length} + {' '} + 项    + + 服务调用次数总计 {selectedRowsState.reduce((pre, item) => pre + item.callNo!, 0)} 万 + + + } + > + + + + )} + { + const success = await handleAdd(value as TableListItem); + if (success) { + handleModalVisible(false); + if (actionRef.current) { + actionRef.current.reload(); + } + } + }} + > + + + + { + const success = await handleUpdate(value, currentRow); + + if (success) { + handleUpdateModalVisible(false); + setCurrentRow(undefined); + + if (actionRef.current) { + actionRef.current.reload(); + } + } + }} + onCancel={() => { + handleUpdateModalVisible(false); + setCurrentRow(undefined); + }} + updateModalVisible={updateModalVisible} + values={currentRow || {}} + /> + + { + setCurrentRow(undefined); + setShowDetail(false); + }} + closable={false} + > + {currentRow?.name && ( + + column={2} + title={currentRow?.name} + request={async () => ({ + data: currentRow || {}, + })} + params={{ + id: currentRow?.name, + }} + columns={columns as ProDescriptionsItemProps[]} + /> + )} + + + ); +}; + +export default TableList; diff --git a/demo/src/pages/list/table-list/service.ts b/demo/src/pages/list/table-list/service.ts new file mode 100644 index 00000000..dc1d74a2 --- /dev/null +++ b/demo/src/pages/list/table-list/service.ts @@ -0,0 +1,56 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from 'umi'; +import { TableListItem } from './data'; + +/** 获取规则列表 GET /api/rule */ +export async function rule( + params: { + // query + /** 当前的页码 */ + current?: number; + /** 页面的容量 */ + pageSize?: number; + }, + options?: { [key: string]: any }, +) { + return request<{ + data: TableListItem[]; + /** 列表的内容总数 */ + total?: number; + success?: boolean; + }>('/api/rule', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 新建规则 PUT /api/rule */ +export async function updateRule(data: { [key: string]: any }, options?: { [key: string]: any }) { + return request('/api/rule', { + data, + method: 'PUT', + ...(options || {}), + }); +} + +/** 新建规则 POST /api/rule */ +export async function addRule(data: { [key: string]: any }, options?: { [key: string]: any }) { + return request('/api/rule', { + data, + method: 'POST', + ...(options || {}), + }); +} + +/** 删除规则 DELETE /api/rule */ +export async function removeRule(data: { key: number[] }, options?: { [key: string]: any }) { + return request>('/api/rule', { + data, + method: 'DELETE', + ...(options || {}), + }); +} diff --git a/demo/src/pages/profile/advanced/_mock.ts b/demo/src/pages/profile/advanced/_mock.ts new file mode 100644 index 00000000..1bf3b384 --- /dev/null +++ b/demo/src/pages/profile/advanced/_mock.ts @@ -0,0 +1,81 @@ +import type { Request, Response } from 'express'; + +const advancedOperation1 = [ + { + key: 'op1', + type: '订购关系生效', + name: '曲丽丽', + status: 'agree', + updatedAt: '2017-10-03 19:23:12', + memo: '-', + }, + { + key: 'op2', + type: '财务复审', + name: '付小小', + status: 'reject', + updatedAt: '2017-10-03 19:23:12', + memo: '不通过原因', + }, + { + key: 'op3', + type: '部门初审', + name: '周毛毛', + status: 'agree', + updatedAt: '2017-10-03 19:23:12', + memo: '-', + }, + { + key: 'op4', + type: '提交订单', + name: '林东东', + status: 'agree', + updatedAt: '2017-10-03 19:23:12', + memo: '很棒', + }, + { + key: 'op5', + type: '创建订单', + name: '汗牙牙', + status: 'agree', + updatedAt: '2017-10-03 19:23:12', + memo: '-', + }, +]; + +const advancedOperation2 = [ + { + key: 'op1', + type: '订购关系生效', + name: '曲丽丽', + status: 'agree', + updatedAt: '2017-10-03 19:23:12', + memo: '-', + }, +]; + +const advancedOperation3 = [ + { + key: 'op1', + type: '创建订单', + name: '汗牙牙', + status: 'agree', + updatedAt: '2017-10-03 19:23:12', + memo: '-', + }, +]; + +function getProfileAdvancedData(req: Request, res: Response) { + const result = { + data: { + advancedOperation1, + advancedOperation2, + advancedOperation3, + }, + }; + return res.json(result); +} + +export default { + 'GET /api/profile/advanced': getProfileAdvancedData, +}; diff --git a/demo/src/pages/profile/advanced/data.d.ts b/demo/src/pages/profile/advanced/data.d.ts new file mode 100644 index 00000000..95f7d31e --- /dev/null +++ b/demo/src/pages/profile/advanced/data.d.ts @@ -0,0 +1,32 @@ +export type AdvancedOperation1 = { + key: string; + type: string; + name: string; + status: string; + updatedAt: string; + memo: string; +}; + +export type AdvancedOperation2 = { + key: string; + type: string; + name: string; + status: string; + updatedAt: string; + memo: string; +}; + +export type AdvancedOperation3 = { + key: string; + type: string; + name: string; + status: string; + updatedAt: string; + memo: string; +}; + +export interface AdvancedProfileData { + advancedOperation1?: AdvancedOperation1[]; + advancedOperation2?: AdvancedOperation2[]; + advancedOperation3?: AdvancedOperation3[]; +} diff --git a/demo/src/pages/profile/advanced/index.tsx b/demo/src/pages/profile/advanced/index.tsx new file mode 100644 index 00000000..bf59e86c --- /dev/null +++ b/demo/src/pages/profile/advanced/index.tsx @@ -0,0 +1,356 @@ +import { + DingdingOutlined, + DownOutlined, + EllipsisOutlined, + InfoCircleOutlined, +} from '@ant-design/icons'; +import { + Badge, + Button, + Card, + Statistic, + Descriptions, + Divider, + Dropdown, + Menu, + Popover, + Steps, + Table, + Tooltip, + Empty, +} from 'antd'; +import { GridContent, PageContainer, RouteContext } from '@ant-design/pro-layout'; +import type { FC } from 'react'; +import React, { Fragment, useState } from 'react'; + +import classNames from 'classnames'; +import { useRequest } from 'umi'; +import type { AdvancedProfileData } from './data.d'; +import { queryAdvancedProfile } from './service'; +import styles from './style.less'; + +const { Step } = Steps; +const ButtonGroup = Button.Group; + +const menu = ( + + 选项一 + 选项二 + 选项三 + +); + +const mobileMenu = ( + + 操作一 + 操作二 + 选项一 + 选项二 + 选项三 + +); + +const action = ( + + {({ isMobile }) => { + if (isMobile) { + return ( + } + overlay={mobileMenu} + placement="bottomRight" + > + 主操作 + + ); + } + return ( + + + + + + + + + + + ); + }} + +); + +const extra = ( +
    + + +
    +); + +const description = ( + + {({ isMobile }) => ( + + 曲丽丽 + XX 服务 + 2017-07-07 + + 12421 + + 2017-07-07 ~ 2017-08-08 + 请于两个工作日内确认 + + )} + +); + +const desc1 = ( +
    + + 曲丽丽 + + +
    2016-12-12 12:32
    +
    +); + +const desc2 = ( +
    + + 周毛毛 + + +
    + 催一下 +
    +
    +); + +const popoverContent = ( +
    + 吴加号 + + 未响应} /> + +
    + 耗时:2小时25分钟 +
    +
    +); + +const customDot = (dot: React.ReactNode, { status }: { status: string }) => { + if (status === 'process') { + return ( + + {dot} + + ); + } + return dot; +}; + +const operationTabList = [ + { + key: 'tab1', + tab: '操作日志一', + }, + { + key: 'tab2', + tab: '操作日志二', + }, + { + key: 'tab3', + tab: '操作日志三', + }, +]; + +const columns = [ + { + title: '操作类型', + dataIndex: 'type', + key: 'type', + }, + { + title: '操作人', + dataIndex: 'name', + key: 'name', + }, + { + title: '执行结果', + dataIndex: 'status', + key: 'status', + render: (text: string) => { + if (text === 'agree') { + return ; + } + return ; + }, + }, + { + title: '操作时间', + dataIndex: 'updatedAt', + key: 'updatedAt', + }, + { + title: '备注', + dataIndex: 'memo', + key: 'memo', + }, +]; + +type AdvancedState = { + operationKey: string; + tabActiveKey: string; +}; + +const Advanced: FC = () => { + const [tabStatus, seTabStatus] = useState({ + operationKey: 'tab1', + tabActiveKey: 'detail', + }); + const { data = {}, loading } = useRequest<{ data: AdvancedProfileData }>(queryAdvancedProfile); + const { advancedOperation1, advancedOperation2, advancedOperation3 } = data; + const contentList = { + tab1: ( + + ), + tab2: ( +
    + ), + tab3: ( +
    + ), + }; + const onTabChange = (tabActiveKey: string) => { + seTabStatus({ ...tabStatus, tabActiveKey }); + }; + const onOperationTabChange = (key: string) => { + seTabStatus({ ...tabStatus, operationKey: key }); + }; + + return ( + +
    + + + + {({ isMobile }) => ( + + + + + + + )} + + + + + 付小小 + 32943898021309809423 + 3321944288191034921 + 18112345678 + + 曲丽丽 18100000000 浙江省杭州市西湖区黄姑山路工专路交叉路口 + + + + 725 + 2017-08-08 + + 某某数据 + + + + + } + > + 725 + + 2017-08-08 + +

    信息组

    + + + 林东东 + 1234567 + XX公司 - YY部 + 2017-08-08 + + 这段描述很长很长很长很长很长很长很长很长很长很长很长很长很长很长... + + + + + + Citrullus lanatus (Thunb.) Matsum. et + Nakai一年生蔓生藤本;茎、枝粗壮,具明显的棱。卷须较粗.. + + + + + 付小小 + 1234568 + + +
    + + + + + {contentList[tabStatus.operationKey]} + +
    +
    +
    + ); +}; + +export default Advanced; diff --git a/demo/src/pages/profile/advanced/service.ts b/demo/src/pages/profile/advanced/service.ts new file mode 100644 index 00000000..7c00a9b8 --- /dev/null +++ b/demo/src/pages/profile/advanced/service.ts @@ -0,0 +1,5 @@ +import { request } from 'umi'; + +export async function queryAdvancedProfile() { + return request('/api/profile/advanced'); +} diff --git a/demo/src/pages/profile/advanced/style.less b/demo/src/pages/profile/advanced/style.less new file mode 100644 index 00000000..fa376f28 --- /dev/null +++ b/demo/src/pages/profile/advanced/style.less @@ -0,0 +1,60 @@ +@import '~antd/es/style/themes/default.less'; + +.main { + :global { + .ant-descriptions-row > td { + padding-bottom: 8px; + } + .ant-page-header-heading-extra { + flex-direction: column; + } + } +} + +.headerList { + margin-bottom: 4px; + :global { + .ant-descriptions-row > td { + padding-bottom: 8px; + } + } + + .stepDescription { + position: relative; + left: 38px; + padding-top: 8px; + font-size: 14px; + text-align: left; + + > div { + margin-top: 8px; + margin-bottom: 4px; + } + } +} + +.pageHeader { + :global { + .ant-page-header-heading-extra > * + * { + margin-left: 8px; + } + } + .moreInfo { + display: flex; + justify-content: space-between; + width: 200px; + } +} + +@media screen and (max-width: @screen-sm) { + .stepDescription { + left: 8px; + } + .pageHeader { + :global { + .ant-pro-page-header-wrap-row { + flex-direction: column; + } + } + } +} diff --git a/demo/src/pages/profile/basic/_mock.ts b/demo/src/pages/profile/basic/_mock.ts new file mode 100644 index 00000000..f432f8d5 --- /dev/null +++ b/demo/src/pages/profile/basic/_mock.ts @@ -0,0 +1,92 @@ +import type { Request, Response } from 'express'; + +const basicGoods = [ + { + id: '1234561', + name: '矿泉水 550ml', + barcode: '12421432143214321', + price: '2.00', + num: '1', + amount: '2.00', + }, + { + id: '1234562', + name: '凉茶 300ml', + barcode: '12421432143214322', + price: '3.00', + num: '2', + amount: '6.00', + }, + { + id: '1234563', + name: '好吃的薯片', + barcode: '12421432143214323', + price: '7.00', + num: '4', + amount: '28.00', + }, + { + id: '1234564', + name: '特别好吃的蛋卷', + barcode: '12421432143214324', + price: '8.50', + num: '3', + amount: '25.50', + }, +]; + +const basicProgress = [ + { + key: '1', + time: '2017-10-01 14:10', + rate: '联系客户', + status: 'processing', + operator: '取货员 ID1234', + cost: '5mins', + }, + { + key: '2', + time: '2017-10-01 14:05', + rate: '取货员出发', + status: 'success', + operator: '取货员 ID1234', + cost: '1h', + }, + { + key: '3', + time: '2017-10-01 13:05', + rate: '取货员接单', + status: 'success', + operator: '取货员 ID1234', + cost: '5mins', + }, + { + key: '4', + time: '2017-10-01 13:00', + rate: '申请审批通过', + status: 'success', + operator: '系统', + cost: '1h', + }, + { + key: '5', + time: '2017-10-01 12:00', + rate: '发起退货申请', + status: 'success', + operator: '用户', + cost: '5mins', + }, +]; + +function getProfileBasic(_: Request, res: Response) { + return res.json({ + data: { + basicProgress, + basicGoods, + }, + }); +} + +export default { + 'GET /api/profile/basic': getProfileBasic, +}; diff --git a/demo/src/pages/profile/basic/data.d.ts b/demo/src/pages/profile/basic/data.d.ts new file mode 100644 index 00000000..5b47678e --- /dev/null +++ b/demo/src/pages/profile/basic/data.d.ts @@ -0,0 +1,17 @@ +export type BasicGood = { + id: string; + name?: string; + barcode?: string; + price?: string; + num?: string | number; + amount?: string | number; +}; + +export type BasicProgress = { + key: string; + time: string; + rate: string; + status: string; + operator: string; + cost: string; +}; diff --git a/demo/src/pages/profile/basic/index.tsx b/demo/src/pages/profile/basic/index.tsx new file mode 100644 index 00000000..5f8ae892 --- /dev/null +++ b/demo/src/pages/profile/basic/index.tsx @@ -0,0 +1,193 @@ +import { PageContainer } from '@ant-design/pro-layout'; +import type { ProColumns } from '@ant-design/pro-table'; +import ProTable from '@ant-design/pro-table'; +import { Badge, Card, Descriptions, Divider } from 'antd'; +import type { FC } from 'react'; +import React from 'react'; +import { useRequest } from 'umi'; +import type { BasicGood, BasicProgress } from './data.d'; +import { queryBasicProfile } from './service'; +import styles from './style.less'; + +const progressColumns: ProColumns[] = [ + { + title: '时间', + dataIndex: 'time', + key: 'time', + }, + { + title: '当前进度', + dataIndex: 'rate', + key: 'rate', + }, + { + title: '状态', + dataIndex: 'status', + key: 'status', + render: (text: React.ReactNode) => { + if (text === 'success') { + return ; + } + return ; + }, + }, + + { + title: '操作员ID', + dataIndex: 'operator', + key: 'operator', + }, + { + title: '耗时', + dataIndex: 'cost', + key: 'cost', + }, +]; + +const Basic: FC = () => { + const { data, loading } = useRequest(() => { + return queryBasicProfile(); + }); + + const { basicGoods, basicProgress } = data || { + basicGoods: [], + basicProgress: [], + }; + let goodsData: typeof basicGoods = []; + if (basicGoods.length) { + let num = 0; + let amount = 0; + basicGoods.forEach((item) => { + num += Number(item.num); + amount += Number(item.amount); + }); + goodsData = basicGoods.concat({ + id: '总计', + num, + amount, + }); + } + + const renderContent = (value: any, _: any, index: any) => { + const obj: { + children: any; + props: { colSpan?: number }; + } = { + children: value, + props: {}, + }; + if (index === basicGoods.length) { + obj.props.colSpan = 0; + } + return obj; + }; + + const goodsColumns: ProColumns[] = [ + { + title: '商品编号', + dataIndex: 'id', + key: 'id', + render: (text: React.ReactNode, _: any, index: number) => { + if (index < basicGoods.length) { + return {text}; + } + return { + children: 总计, + props: { + colSpan: 4, + }, + }; + }, + }, + { + title: '商品名称', + dataIndex: 'name', + key: 'name', + render: renderContent, + }, + { + title: '商品条码', + dataIndex: 'barcode', + key: 'barcode', + render: renderContent, + }, + { + title: '单价', + dataIndex: 'price', + key: 'price', + align: 'right' as 'left' | 'right' | 'center', + render: renderContent, + }, + { + title: '数量(件)', + dataIndex: 'num', + key: 'num', + align: 'right' as 'left' | 'right' | 'center', + render: (text: React.ReactNode, _: any, index: number) => { + if (index < basicGoods.length) { + return text; + } + return {text}; + }, + }, + { + title: '金额', + dataIndex: 'amount', + key: 'amount', + align: 'right' as 'left' | 'right' | 'center', + render: (text: React.ReactNode, _: any, index: number) => { + if (index < basicGoods.length) { + return text; + } + return {text}; + }, + }, + ]; + + return ( + + + + 1000000000 + 已取货 + 1234123421 + 3214321432 + + + + 付小小 + 18100000000 + 菜鸟仓储 + 浙江省杭州市西湖区万塘路18号 + + + +
    退货商品
    + +
    退货进度
    + +
    +
    + ); +}; + +export default Basic; diff --git a/demo/src/pages/profile/basic/service.ts b/demo/src/pages/profile/basic/service.ts new file mode 100644 index 00000000..df7f52f0 --- /dev/null +++ b/demo/src/pages/profile/basic/service.ts @@ -0,0 +1,11 @@ +import { request } from 'umi'; +import type { BasicGood, BasicProgress } from './data.d'; + +export async function queryBasicProfile(): Promise<{ + data: { + basicProgress: BasicProgress[]; + basicGoods: BasicGood[]; + }; +}> { + return request('/api/profile/basic'); +} diff --git a/demo/src/pages/profile/basic/style.less b/demo/src/pages/profile/basic/style.less new file mode 100644 index 00000000..68f3c93f --- /dev/null +++ b/demo/src/pages/profile/basic/style.less @@ -0,0 +1,8 @@ +@import '~antd/es/style/themes/default.less'; + +.title { + margin-bottom: 16px; + color: @heading-color; + font-weight: 500; + font-size: 16px; +} diff --git a/demo/src/pages/result/fail/index.less b/demo/src/pages/result/fail/index.less new file mode 100644 index 00000000..85373f2e --- /dev/null +++ b/demo/src/pages/result/fail/index.less @@ -0,0 +1,11 @@ +@import '~antd/es/style/themes/default.less'; + +.error_icon { + color: @highlight-color; +} +.title { + margin-bottom: 16px; + color: @heading-color; + font-weight: 500; + font-size: 16px; +} diff --git a/demo/src/pages/result/fail/index.tsx b/demo/src/pages/result/fail/index.tsx new file mode 100644 index 00000000..9887ced7 --- /dev/null +++ b/demo/src/pages/result/fail/index.tsx @@ -0,0 +1,50 @@ +import { CloseCircleOutlined, RightOutlined } from '@ant-design/icons'; +import { Button, Card, Result } from 'antd'; +import { Fragment } from 'react'; + +import { GridContent } from '@ant-design/pro-layout'; +import styles from './index.less'; + +const Content = ( + +
    + 您提交的内容有如下错误: +
    +
    + + 您的账户已被冻结 + + 立即解冻 + + +
    +
    + + 您的账户还不具备申请资格 + + 立即升级 + + +
    +
    +); + +export default () => ( + + + + 返回修改 + + } + style={{ marginTop: 48, marginBottom: 16 }} + > + {Content} + + + +); diff --git a/demo/src/pages/result/success/index.less b/demo/src/pages/result/success/index.less new file mode 100644 index 00000000..211772d5 --- /dev/null +++ b/demo/src/pages/result/success/index.less @@ -0,0 +1,15 @@ +@import '~antd/es/style/themes/default.less'; + +.title { + position: relative; + color: @text-color; + font-size: 12px; + text-align: center; +} + +.head-title { + margin-bottom: 20px; + color: @heading-color; + font-weight: 500px; + font-size: 16px; +} diff --git a/demo/src/pages/result/success/index.tsx b/demo/src/pages/result/success/index.tsx new file mode 100644 index 00000000..ba0b599b --- /dev/null +++ b/demo/src/pages/result/success/index.tsx @@ -0,0 +1,71 @@ +import { DingdingOutlined } from '@ant-design/icons'; +import { Button, Card, Steps, Result, Descriptions } from 'antd'; +import { Fragment } from 'react'; +import { GridContent } from '@ant-design/pro-layout'; + +import styles from './index.less'; + +const { Step } = Steps; + +const desc1 = ( +
    +
    + 曲丽丽 + +
    +
    2016-12-12 12:32
    +
    +); + +const desc2 = ( +
    +
    + 周毛毛 + + + 催一下 + +
    +
    +); + +const content = ( + <> + + 23421 + 曲丽丽 + 2016-12-12 ~ 2017-12-12 + +
    + + 创建项目} description={desc1} /> + 部门初审} description={desc2} /> + 财务复核} /> + 完成} /> + + +); + +const extra = ( + + + + + +); + +export default () => ( + + + + {content} + + + +); diff --git a/demo/src/pages/user/Login/index.less b/demo/src/pages/user/Login/index.less new file mode 100644 index 00000000..f6ecf00d --- /dev/null +++ b/demo/src/pages/user/Login/index.less @@ -0,0 +1,50 @@ +@import (reference) '~antd/es/style/themes/index'; + +.container { + display: flex; + flex-direction: column; + height: 100vh; + overflow: auto; + background: @layout-body-background; +} + +.lang { + width: 100%; + height: 40px; + line-height: 44px; + text-align: right; + :global(.ant-dropdown-trigger) { + margin-right: 24px; + } +} + +.content { + flex: 1; + padding: 32px 0; +} + +@media (min-width: @screen-md-min) { + .container { + background-image: url('https://gw.alipayobjects.com/zos/rmsportal/TVYTbAXWheQpRcWDaDMu.svg'); + background-repeat: no-repeat; + background-position: center 110px; + background-size: 100%; + } + + .content { + padding: 32px 0 24px; + } +} + +.icon { + margin-left: 8px; + color: rgba(0, 0, 0, 0.2); + font-size: 24px; + vertical-align: middle; + cursor: pointer; + transition: color 0.3s; + + &:hover { + color: @primary-color; + } +} diff --git a/demo/src/pages/user/Login/index.tsx b/demo/src/pages/user/Login/index.tsx new file mode 100644 index 00000000..7d0fe352 --- /dev/null +++ b/demo/src/pages/user/Login/index.tsx @@ -0,0 +1,286 @@ +import { + AlipayCircleOutlined, + LockOutlined, + MobileOutlined, + TaobaoCircleOutlined, + UserOutlined, + WeiboCircleOutlined, +} from '@ant-design/icons'; +import { Alert, message, Tabs } from 'antd'; +import React, { useState } from 'react'; +import { ProFormCaptcha, ProFormCheckbox, ProFormText, LoginForm } from '@ant-design/pro-form'; +import { useIntl, history, FormattedMessage, SelectLang, useModel } from 'umi'; +import Footer from '@/components/Footer'; +import { login } from '@/services/ant-design-pro/api'; +import { getFakeCaptcha } from '@/services/ant-design-pro/login'; + +import styles from './index.less'; + +const LoginMessage: React.FC<{ + content: string; +}> = ({ content }) => ( + +); + +const Login: React.FC = () => { + const [userLoginState, setUserLoginState] = useState({}); + const [type, setType] = useState('account'); + const { initialState, setInitialState } = useModel('@@initialState'); + + const intl = useIntl(); + + const fetchUserInfo = async () => { + const userInfo = await initialState?.fetchUserInfo?.(); + if (userInfo) { + await setInitialState((s) => ({ + ...s, + currentUser: userInfo, + })); + } + }; + + const handleSubmit = async (values: API.LoginParams) => { + try { + // 登录 + const msg = await login({ ...values, type }); + if (msg.status === 'ok') { + const defaultLoginSuccessMessage = intl.formatMessage({ + id: 'pages.login.success', + defaultMessage: '登录成功!', + }); + message.success(defaultLoginSuccessMessage); + await fetchUserInfo(); + /** 此方法会跳转到 redirect 参数所在的位置 */ + if (!history) return; + const { query } = history.location; + const { redirect } = query as { redirect: string }; + history.push(redirect || '/'); + return; + } + console.log(msg); + // 如果失败去设置用户错误信息 + setUserLoginState(msg); + } catch (error) { + const defaultLoginFailureMessage = intl.formatMessage({ + id: 'pages.login.failure', + defaultMessage: '登录失败,请重试!', + }); + message.error(defaultLoginFailureMessage); + } + }; + const { status, type: loginType } = userLoginState; + + return ( +
    +
    + {SelectLang && } +
    +
    + } + title="Ant Design" + subTitle={intl.formatMessage({ id: 'pages.layouts.userLayout.title' })} + initialValues={{ + autoLogin: true, + }} + actions={[ + , + , + , + , + ]} + onFinish={async (values) => { + await handleSubmit(values as API.LoginParams); + }} + > + + + + + + {status === 'error' && loginType === 'account' && ( + + )} + {type === 'account' && ( + <> + , + }} + placeholder={intl.formatMessage({ + id: 'pages.login.username.placeholder', + defaultMessage: '用户名: admin or user', + })} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + , + }} + placeholder={intl.formatMessage({ + id: 'pages.login.password.placeholder', + defaultMessage: '密码: ant.design', + })} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + + )} + + {status === 'error' && loginType === 'mobile' && } + {type === 'mobile' && ( + <> + , + }} + name="mobile" + placeholder={intl.formatMessage({ + id: 'pages.login.phoneNumber.placeholder', + defaultMessage: '手机号', + })} + rules={[ + { + required: true, + message: ( + + ), + }, + { + pattern: /^1\d{10}$/, + message: ( + + ), + }, + ]} + /> + , + }} + captchaProps={{ + size: 'large', + }} + placeholder={intl.formatMessage({ + id: 'pages.login.captcha.placeholder', + defaultMessage: '请输入验证码', + })} + captchaTextRender={(timing, count) => { + if (timing) { + return `${count} ${intl.formatMessage({ + id: 'pages.getCaptchaSecondText', + defaultMessage: '获取验证码', + })}`; + } + return intl.formatMessage({ + id: 'pages.login.phoneLogin.getVerificationCode', + defaultMessage: '获取验证码', + }); + }} + name="captcha" + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + onGetCaptcha={async (phone) => { + const result = await getFakeCaptcha({ + phone, + }); + if (result === false) { + return; + } + message.success('获取验证码成功!验证码为:1234'); + }} + /> + + )} +
    + + + + + + +
    +
    +
    +
    +
    + ); +}; + +export default Login; diff --git a/demo/src/pages/user/register-result/index.tsx b/demo/src/pages/user/register-result/index.tsx new file mode 100644 index 00000000..8b4fac58 --- /dev/null +++ b/demo/src/pages/user/register-result/index.tsx @@ -0,0 +1,42 @@ +import { Button, Result } from 'antd'; +import { Link } from 'umi'; +import React from 'react'; +import type { RouteChildrenProps } from 'react-router'; + +import styles from './style.less'; + +const actions = ( +
    + + + + + + +
    +); + +export type LocationState = Record; + +const RegisterResult: React.FC = ({ location }) => { + const email = location.state + ? (location.state as LocationState).account + : 'AntDesign@example.com'; + return ( + + 你的账户:{email} 注册成功 + + } + subTitle="激活邮件已发送到你的邮箱中,邮件有效期为24小时。请及时登录邮箱,点击邮件中的链接激活帐户。" + extra={actions} + /> + ); +}; + +export default RegisterResult; diff --git a/demo/src/pages/user/register-result/style.less b/demo/src/pages/user/register-result/style.less new file mode 100644 index 00000000..dc1b8905 --- /dev/null +++ b/demo/src/pages/user/register-result/style.less @@ -0,0 +1,23 @@ +.registerResult { + width: 800px; + min-height: 400px; + margin: auto; + padding: 80px; + background: none; + :global { + .anticon { + font-size: 64px; + } + } + .title { + margin-top: 32px; + font-size: 20px; + line-height: 28px; + } + .actions { + margin-top: 40px; + a + a { + margin-left: 8px; + } + } +} diff --git a/demo/src/pages/user/register/_mock.ts b/demo/src/pages/user/register/_mock.ts new file mode 100644 index 00000000..aa7ac78f --- /dev/null +++ b/demo/src/pages/user/register/_mock.ts @@ -0,0 +1,10 @@ +// eslint-disable-next-line import/no-extraneous-dependencies +import type { Request, Response } from 'express'; + +export default { + 'POST /api/register': (_: Request, res: Response) => { + res.send({ + data: { status: 'ok', currentAuthority: 'user' }, + }); + }, +}; diff --git a/demo/src/pages/user/register/index.tsx b/demo/src/pages/user/register/index.tsx new file mode 100644 index 00000000..47c9e848 --- /dev/null +++ b/demo/src/pages/user/register/index.tsx @@ -0,0 +1,285 @@ +import type { FC } from 'react'; +import { useState, useEffect } from 'react'; +import { Form, Button, Col, Input, Popover, Progress, Row, Select, message } from 'antd'; +import type { Store } from 'antd/es/form/interface'; +import { Link, useRequest, history } from 'umi'; +import type { StateType } from './service'; +import { fakeRegister } from './service'; + +import styles from './style.less'; + +const FormItem = Form.Item; +const { Option } = Select; +const InputGroup = Input.Group; + +const passwordStatusMap = { + ok: ( +
    + 强度:强 +
    + ), + pass: ( +
    + 强度:中 +
    + ), + poor: ( +
    + 强度:太短 +
    + ), +}; + +const passwordProgressMap: { + ok: 'success'; + pass: 'normal'; + poor: 'exception'; +} = { + ok: 'success', + pass: 'normal', + poor: 'exception', +}; + +const Register: FC = () => { + const [count, setCount]: [number, any] = useState(0); + const [visible, setVisible]: [boolean, any] = useState(false); + const [prefix, setPrefix]: [string, any] = useState('86'); + const [popover, setPopover]: [boolean, any] = useState(false); + const confirmDirty = false; + let interval: number | undefined; + const [form] = Form.useForm(); + + useEffect( + () => () => { + clearInterval(interval); + }, + [interval], + ); + + const onGetCaptcha = () => { + let counts = 59; + setCount(counts); + interval = window.setInterval(() => { + counts -= 1; + setCount(counts); + if (counts === 0) { + clearInterval(interval); + } + }, 1000); + }; + + const getPasswordStatus = () => { + const value = form.getFieldValue('password'); + if (value && value.length > 9) { + return 'ok'; + } + if (value && value.length > 5) { + return 'pass'; + } + return 'poor'; + }; + + const { loading: submitting, run: register } = useRequest<{ data: StateType }>(fakeRegister, { + manual: true, + onSuccess: (data, params) => { + if (data.status === 'ok') { + message.success('注册成功!'); + history.push({ + pathname: '/user/register-result', + state: { + account: params.email, + }, + }); + } + }, + }); + const onFinish = (values: Store) => { + register(values); + }; + + const checkConfirm = (_: any, value: string) => { + const promise = Promise; + if (value && value !== form.getFieldValue('password')) { + return promise.reject('两次输入的密码不匹配!'); + } + return promise.resolve(); + }; + + const checkPassword = (_: any, value: string) => { + const promise = Promise; + // 没有值的情况 + if (!value) { + setVisible(!!value); + return promise.reject('请输入密码!'); + } + // 有值的情况 + if (!visible) { + setVisible(!!value); + } + setPopover(!popover); + if (value.length < 6) { + return promise.reject(''); + } + if (value && confirmDirty) { + form.validateFields(['confirm']); + } + return promise.resolve(); + }; + + const changePrefix = (value: string) => { + setPrefix(value); + }; + + const renderPasswordProgress = () => { + const value = form.getFieldValue('password'); + const passwordStatus = getPasswordStatus(); + return value && value.length ? ( +
    + 100 ? 100 : value.length * 10} + showInfo={false} + /> +
    + ) : null; + }; + + return ( +
    +

    注册

    +
    + + + + { + if (node && node.parentNode) { + return node.parentNode as HTMLElement; + } + return node; + }} + content={ + visible && ( +
    + {passwordStatusMap[getPasswordStatus()]} + {renderPasswordProgress()} +
    + 请至少输入 6 个字符。请不要使用容易被猜到的密码。 +
    +
    + ) + } + overlayStyle={{ width: 240 }} + placement="right" + visible={visible} + > + 0 && + styles.password + } + rules={[ + { + validator: checkPassword, + }, + ]} + > + + +
    + + + + + + + + + + +
    + + + + + + + + + + + + 使用已有账户登录 + + + + + ); +}; +export default Register; diff --git a/demo/src/pages/user/register/service.ts b/demo/src/pages/user/register/service.ts new file mode 100644 index 00000000..83801841 --- /dev/null +++ b/demo/src/pages/user/register/service.ts @@ -0,0 +1,22 @@ +import { request } from 'umi'; + +export interface StateType { + status?: 'ok' | 'error'; + currentAuthority?: 'user' | 'guest' | 'admin'; +} + +export interface UserRegisterParams { + mail: string; + password: string; + confirm: string; + mobile: string; + captcha: string; + prefix: string; +} + +export async function fakeRegister(params: UserRegisterParams) { + return request('/api/register', { + method: 'POST', + data: params, + }); +} diff --git a/demo/src/pages/user/register/style.less b/demo/src/pages/user/register/style.less new file mode 100644 index 00000000..e13868f0 --- /dev/null +++ b/demo/src/pages/user/register/style.less @@ -0,0 +1,60 @@ +@import '~antd/es/style/themes/default.less'; + +.main { + width: 368px; + margin: 0 auto; + + h3 { + margin-bottom: 20px; + font-size: 16px; + } + + .password { + margin-bottom: 24px; + :global { + .ant-form-item-explain { + display: none; + } + } + } + + .getCaptcha { + display: block; + width: 100%; + } + + .submit { + width: 50%; + } + + .login { + float: right; + line-height: @btn-height-lg; + } +} + +.success, +.warning, +.error { + transition: color 0.3s; +} + +.success { + color: @success-color; +} + +.warning { + color: @warning-color; +} + +.error { + color: @error-color; +} + +.progress-pass > .progress { + :global { + .ant-progress-bg { + background-color: @warning-color; + } + } +} diff --git a/demo/src/service-worker.js b/demo/src/service-worker.js new file mode 100644 index 00000000..b86726cd --- /dev/null +++ b/demo/src/service-worker.js @@ -0,0 +1,65 @@ +/* eslint-disable no-restricted-globals */ +/* eslint-disable no-underscore-dangle */ +/* globals workbox */ +workbox.core.setCacheNameDetails({ + prefix: 'antd-pro', + suffix: 'v5', +}); +// Control all opened tabs ASAP +workbox.clientsClaim(); + +/** + * Use precaching list generated by workbox in build process. + * https://developers.google.com/web/tools/workbox/reference-docs/latest/workbox.precaching + */ +workbox.precaching.precacheAndRoute(self.__precacheManifest || []); + +/** + * Register a navigation route. + * https://developers.google.com/web/tools/workbox/modules/workbox-routing#how_to_register_a_navigation_route + */ +workbox.routing.registerNavigationRoute('/index.html'); + +/** + * Use runtime cache: + * https://developers.google.com/web/tools/workbox/reference-docs/latest/workbox.routing#.registerRoute + * + * Workbox provides all common caching strategies including CacheFirst, NetworkFirst etc. + * https://developers.google.com/web/tools/workbox/reference-docs/latest/workbox.strategies + */ + +/** Handle API requests */ +workbox.routing.registerRoute(/\/api\//, workbox.strategies.networkFirst()); + +/** Handle third party requests */ +workbox.routing.registerRoute( + /^https:\/\/gw\.alipayobjects\.com\//, + workbox.strategies.networkFirst(), +); +workbox.routing.registerRoute( + /^https:\/\/cdnjs\.cloudflare\.com\//, + workbox.strategies.networkFirst(), +); +workbox.routing.registerRoute(/\/color.less/, workbox.strategies.networkFirst()); + +/** Response to client after skipping waiting with MessageChannel */ +addEventListener('message', (event) => { + const replyPort = event.ports[0]; + const message = event.data; + if (replyPort && message && message.type === 'skip-waiting') { + event.waitUntil( + self.skipWaiting().then( + () => { + replyPort.postMessage({ + error: null, + }); + }, + (error) => { + replyPort.postMessage({ + error, + }); + }, + ), + ); + } +}); diff --git a/demo/src/services/ant-design-pro/api.ts b/demo/src/services/ant-design-pro/api.ts new file mode 100644 index 00000000..74fce0c3 --- /dev/null +++ b/demo/src/services/ant-design-pro/api.ts @@ -0,0 +1,85 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from 'umi'; + +/** 获取当前的用户 GET /api/currentUser */ +export async function currentUser(options?: { [key: string]: any }) { + return request<{ + data: API.CurrentUser; + }>('/api/currentUser', { + method: 'GET', + ...(options || {}), + }); +} + +/** 退出登录接口 POST /api/login/outLogin */ +export async function outLogin(options?: { [key: string]: any }) { + return request>('/api/login/outLogin', { + method: 'POST', + ...(options || {}), + }); +} + +/** 登录接口 POST /api/login/account */ +export async function login(body: API.LoginParams, options?: { [key: string]: any }) { + return request('/api/login/account', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 此处后端没有提供注释 GET /api/notices */ +export async function getNotices(options?: { [key: string]: any }) { + return request('/api/notices', { + method: 'GET', + ...(options || {}), + }); +} + +/** 获取规则列表 GET /api/rule */ +export async function rule( + params: { + // query + /** 当前的页码 */ + current?: number; + /** 页面的容量 */ + pageSize?: number; + }, + options?: { [key: string]: any }, +) { + return request('/api/rule', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** 新建规则 PUT /api/rule */ +export async function updateRule(options?: { [key: string]: any }) { + return request('/api/rule', { + method: 'PUT', + ...(options || {}), + }); +} + +/** 新建规则 POST /api/rule */ +export async function addRule(options?: { [key: string]: any }) { + return request('/api/rule', { + method: 'POST', + ...(options || {}), + }); +} + +/** 删除规则 DELETE /api/rule */ +export async function removeRule(options?: { [key: string]: any }) { + return request>('/api/rule', { + method: 'DELETE', + ...(options || {}), + }); +} diff --git a/demo/src/services/ant-design-pro/index.ts b/demo/src/services/ant-design-pro/index.ts new file mode 100644 index 00000000..1ac489fe --- /dev/null +++ b/demo/src/services/ant-design-pro/index.ts @@ -0,0 +1,10 @@ +// @ts-ignore +/* eslint-disable */ +// API 更新时间: +// API 唯一标识: +import * as api from './api'; +import * as login from './login'; +export default { + api, + login, +}; diff --git a/demo/src/services/ant-design-pro/login.ts b/demo/src/services/ant-design-pro/login.ts new file mode 100644 index 00000000..42f95fff --- /dev/null +++ b/demo/src/services/ant-design-pro/login.ts @@ -0,0 +1,21 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from 'umi'; + +/** 发送验证码 POST /api/login/captcha */ +export async function getFakeCaptcha( + params: { + // query + /** 手机号 */ + phone?: string; + }, + options?: { [key: string]: any }, +) { + return request('/api/login/captcha', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} diff --git a/demo/src/services/ant-design-pro/typings.d.ts b/demo/src/services/ant-design-pro/typings.d.ts new file mode 100644 index 00000000..13e5a680 --- /dev/null +++ b/demo/src/services/ant-design-pro/typings.d.ts @@ -0,0 +1,101 @@ +// @ts-ignore +/* eslint-disable */ + +declare namespace API { + type CurrentUser = { + name?: string; + avatar?: string; + userid?: string; + email?: string; + signature?: string; + title?: string; + group?: string; + tags?: { key?: string; label?: string }[]; + notifyCount?: number; + unreadCount?: number; + country?: string; + access?: string; + geographic?: { + province?: { label?: string; key?: string }; + city?: { label?: string; key?: string }; + }; + address?: string; + phone?: string; + }; + + type LoginResult = { + status?: string; + type?: string; + currentAuthority?: string; + }; + + type PageParams = { + current?: number; + pageSize?: number; + }; + + type RuleListItem = { + key?: number; + disabled?: boolean; + href?: string; + avatar?: string; + name?: string; + owner?: string; + desc?: string; + callNo?: number; + status?: number; + updatedAt?: string; + createdAt?: string; + progress?: number; + }; + + type RuleList = { + data?: RuleListItem[]; + /** 列表的内容总数 */ + total?: number; + success?: boolean; + }; + + type FakeCaptcha = { + code?: number; + status?: string; + }; + + type LoginParams = { + username?: string; + password?: string; + autoLogin?: boolean; + type?: string; + }; + + type ErrorResponse = { + /** 业务约定的错误码 */ + errorCode: string; + /** 业务上的错误信息 */ + errorMessage?: string; + /** 业务上的请求是否成功 */ + success?: boolean; + }; + + type NoticeIconList = { + data?: NoticeIconItem[]; + /** 列表的内容总数 */ + total?: number; + success?: boolean; + }; + + type NoticeIconItemType = 'notification' | 'message' | 'event'; + + type NoticeIconItem = { + id?: string; + extra?: string; + key?: string; + read?: boolean; + avatar?: string; + title?: string; + status?: string; + datetime?: string; + description?: string; + type?: NoticeIconItemType; + }; +} diff --git a/demo/src/services/swagger/index.ts b/demo/src/services/swagger/index.ts new file mode 100644 index 00000000..83cf97ca --- /dev/null +++ b/demo/src/services/swagger/index.ts @@ -0,0 +1,12 @@ +// @ts-ignore +/* eslint-disable */ +// API 更新时间: +// API 唯一标识: +import * as pet from './pet'; +import * as store from './store'; +import * as user from './user'; +export default { + pet, + store, + user, +}; diff --git a/demo/src/services/swagger/pet.ts b/demo/src/services/swagger/pet.ts new file mode 100644 index 00000000..de8d6d2b --- /dev/null +++ b/demo/src/services/swagger/pet.ts @@ -0,0 +1,166 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from 'umi'; + +/** Update an existing pet PUT /pet */ +export async function updatePet(body: API.Pet, options?: { [key: string]: any }) { + return request('/pet', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** Add a new pet to the store POST /pet */ +export async function addPet(body: API.Pet, options?: { [key: string]: any }) { + return request('/pet', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** Finds Pets by status Multiple status values can be provided with comma separated strings GET /pet/findByStatus */ +export async function findPetsByStatus( + params: { + // query + /** Status values that need to be considered for filter */ + status: 'available' | 'pending' | 'sold'[]; + }, + options?: { [key: string]: any }, +) { + return request('/pet/findByStatus', { + method: 'GET', + params: { + ...params, + }, + + ...(options || {}), + }); +} + +/** Finds Pets by tags Muliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. GET /pet/findByTags */ +export async function findPetsByTags( + params: { + // query + /** Tags to filter by */ + tags: string[]; + }, + options?: { [key: string]: any }, +) { + return request('/pet/findByTags', { + method: 'GET', + params: { + ...params, + }, + + ...(options || {}), + }); +} + +/** Find pet by ID Returns a single pet GET /pet/${param0} */ +export async function getPetById( + params: { + // path + /** ID of pet to return */ + petId: number; + }, + options?: { [key: string]: any }, +) { + const { petId: param0 } = params; + return request(`/pet/${param0}`, { + method: 'GET', + params: { ...params }, + + ...(options || {}), + }); +} + +/** Updates a pet in the store with form data POST /pet/${param0} */ +export async function updatePetWithForm( + params: { + // path + /** ID of pet that needs to be updated */ + petId: number; + }, + body: { name?: string; status?: string }, + options?: { [key: string]: any }, +) { + const { petId: param0 } = params; + const formData = new FormData(); + + Object.keys(body).forEach((ele) => { + const item = (body as any)[ele]; + + if (item !== undefined && item !== null) { + formData.append(ele, typeof item === 'object' ? JSON.stringify(item) : item); + } + }); + + return request(`/pet/${param0}`, { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + params: { ...params }, + data: formData, + ...(options || {}), + }); +} + +/** Deletes a pet DELETE /pet/${param0} */ +export async function deletePet( + params: { + // header + api_key?: string; + // path + /** Pet id to delete */ + petId: number; + }, + options?: { [key: string]: any }, +) { + const { petId: param0 } = params; + return request(`/pet/${param0}`, { + method: 'DELETE', + params: { ...params }, + ...(options || {}), + }); +} + +/** uploads an image POST /pet/${param0}/uploadImage */ +export async function uploadFile( + params: { + // path + /** ID of pet to update */ + petId: number; + }, + body: { additionalMetadata?: string; file?: string }, + options?: { [key: string]: any }, +) { + const { petId: param0 } = params; + const formData = new FormData(); + + Object.keys(body).forEach((ele) => { + const item = (body as any)[ele]; + + if (item !== undefined && item !== null) { + formData.append(ele, typeof item === 'object' ? JSON.stringify(item) : item); + } + }); + + return request(`/pet/${param0}/uploadImage`, { + method: 'POST', + headers: { + 'Content-Type': 'multipart/form-data', + }, + params: { ...params }, + data: formData, + ...(options || {}), + }); +} diff --git a/demo/src/services/swagger/store.ts b/demo/src/services/swagger/store.ts new file mode 100644 index 00000000..c4b6d616 --- /dev/null +++ b/demo/src/services/swagger/store.ts @@ -0,0 +1,54 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from 'umi'; + +/** Returns pet inventories by status Returns a map of status codes to quantities GET /store/inventory */ +export async function getInventory(options?: { [key: string]: any }) { + return request>('/store/inventory', { + method: 'GET', + ...(options || {}), + }); +} + +/** Place an order for a pet POST /store/order */ +export async function placeOrder(body: API.Order, options?: { [key: string]: any }) { + return request('/store/order', { + method: 'POST', + data: body, + ...(options || {}), + }); +} + +/** Find purchase order by ID For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions GET /store/order/${param0} */ +export async function getOrderById( + params: { + // path + /** ID of pet that needs to be fetched */ + orderId: number; + }, + options?: { [key: string]: any }, +) { + const { orderId: param0 } = params; + return request(`/store/order/${param0}`, { + method: 'GET', + params: { ...params }, + ...(options || {}), + }); +} + +/** Delete purchase order by ID For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors DELETE /store/order/${param0} */ +export async function deleteOrder( + params: { + // path + /** ID of the order that needs to be deleted */ + orderId: number; + }, + options?: { [key: string]: any }, +) { + const { orderId: param0 } = params; + return request(`/store/order/${param0}`, { + method: 'DELETE', + params: { ...params }, + ...(options || {}), + }); +} diff --git a/demo/src/services/swagger/typings.d.ts b/demo/src/services/swagger/typings.d.ts new file mode 100644 index 00000000..8fddfd75 --- /dev/null +++ b/demo/src/services/swagger/typings.d.ts @@ -0,0 +1,52 @@ +// @ts-ignore +/* eslint-disable */ + +declare namespace API { + type Order = { + id?: number; + petId?: number; + quantity?: number; + shipDate?: string; + /** Order Status */ + status?: 'placed' | 'approved' | 'delivered'; + complete?: boolean; + }; + + type Category = { + id?: number; + name?: string; + }; + + type User = { + id?: number; + username?: string; + firstName?: string; + lastName?: string; + email?: string; + password?: string; + phone?: string; + /** User Status */ + userStatus?: number; + }; + + type Tag = { + id?: number; + name?: string; + }; + + type Pet = { + id?: number; + category?: Category; + name: string; + photoUrls: string[]; + tags?: Tag[]; + /** pet status in the store */ + status?: 'available' | 'pending' | 'sold'; + }; + + type ApiResponse = { + code?: number; + type?: string; + message?: string; + }; +} diff --git a/demo/src/services/swagger/user.ts b/demo/src/services/swagger/user.ts new file mode 100644 index 00000000..46ce5e96 --- /dev/null +++ b/demo/src/services/swagger/user.ts @@ -0,0 +1,114 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from 'umi'; + +/** Create user This can only be done by the logged in user. POST /user */ +export async function createUser(body: API.User, options?: { [key: string]: any }) { + return request('/user', { + method: 'POST', + data: body, + ...(options || {}), + }); +} + +/** Creates list of users with given input array POST /user/createWithArray */ +export async function createUsersWithArrayInput( + body: API.User[], + options?: { [key: string]: any }, +) { + return request('/user/createWithArray', { + method: 'POST', + data: body, + ...(options || {}), + }); +} + +/** Creates list of users with given input array POST /user/createWithList */ +export async function createUsersWithListInput(body: API.User[], options?: { [key: string]: any }) { + return request('/user/createWithList', { + method: 'POST', + data: body, + ...(options || {}), + }); +} + +/** Logs user into the system GET /user/login */ +export async function loginUser( + params: { + // query + /** The user name for login */ + username: string; + /** The password for login in clear text */ + password: string; + }, + options?: { [key: string]: any }, +) { + return request('/user/login', { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }); +} + +/** Logs out current logged in user session GET /user/logout */ +export async function logoutUser(options?: { [key: string]: any }) { + return request('/user/logout', { + method: 'GET', + ...(options || {}), + }); +} + +/** Get user by user name GET /user/${param0} */ +export async function getUserByName( + params: { + // path + /** The name that needs to be fetched. Use user1 for testing. */ + username: string; + }, + options?: { [key: string]: any }, +) { + const { username: param0 } = params; + return request(`/user/${param0}`, { + method: 'GET', + params: { ...params }, + ...(options || {}), + }); +} + +/** Updated user This can only be done by the logged in user. PUT /user/${param0} */ +export async function updateUser( + params: { + // path + /** name that need to be updated */ + username: string; + }, + body: API.User, + options?: { [key: string]: any }, +) { + const { username: param0 } = params; + return request(`/user/${param0}`, { + method: 'PUT', + params: { ...params }, + data: body, + ...(options || {}), + }); +} + +/** Delete user This can only be done by the logged in user. DELETE /user/${param0} */ +export async function deleteUser( + params: { + // path + /** The name that needs to be deleted */ + username: string; + }, + options?: { [key: string]: any }, +) { + const { username: param0 } = params; + return request(`/user/${param0}`, { + method: 'DELETE', + params: { ...params }, + ...(options || {}), + }); +} diff --git a/demo/src/typings.d.ts b/demo/src/typings.d.ts new file mode 100644 index 00000000..7ed4bbdd --- /dev/null +++ b/demo/src/typings.d.ts @@ -0,0 +1,24 @@ +declare module 'slash2'; +declare module '*.css'; +declare module '*.less'; +declare module '*.scss'; +declare module '*.sass'; +declare module '*.svg'; +declare module '*.png'; +declare module '*.jpg'; +declare module '*.jpeg'; +declare module '*.gif'; +declare module '*.bmp'; +declare module '*.tiff'; +declare module 'omit.js'; +declare module 'numeral'; +declare module '@antv/data-set'; +declare module 'mockjs'; +declare module 'react-fittext'; +declare module 'bizcharts-plugin-slider'; + +// preview.pro.ant.design only do not use in your production ; +// preview.pro.ant.design Dedicated environment variable, please do not use it in your project. +declare let ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION: 'site' | undefined; + +declare const REACT_APP_ENV: 'test' | 'dev' | 'pre' | false; diff --git a/demo/tests/run-tests.js b/demo/tests/run-tests.js new file mode 100644 index 00000000..d4e0fc8e --- /dev/null +++ b/demo/tests/run-tests.js @@ -0,0 +1,47 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const { spawn } = require('child_process'); +const { kill } = require('cross-port-killer'); + +const env = Object.create(process.env); +env.BROWSER = 'none'; +env.TEST = true; +env.UMI_UI = 'none'; +env.PROGRESS = 'none'; +// flag to prevent multiple test +let once = false; + +const startServer = spawn(/^win/.test(process.platform) ? 'npm.cmd' : 'npm', ['run', 'serve'], { + env, +}); + +startServer.stderr.on('data', (data) => { + // eslint-disable-next-line + console.log(data.toString()); +}); + +startServer.on('exit', () => { + kill(process.env.PORT || 8000); +}); + +console.log('Starting development server for e2e tests...'); +startServer.stdout.on('data', (data) => { + console.log(data.toString()); + // hack code , wait umi + if (!once && data.toString().indexOf('Serving your umi project!') >= 0) { + // eslint-disable-next-line + once = true; + console.log('Development server is started, ready to run tests.'); + const testCmd = spawn( + /^win/.test(process.platform) ? 'npm.cmd' : 'npm', + ['run', 'playwright'], + { + stdio: 'inherit', + }, + ); + testCmd.on('exit', (code) => { + console.log('服务已经退出,退出码:', code); + startServer.kill(); + process.exit(code); + }); + } +}); diff --git a/demo/tests/setupTests.js b/demo/tests/setupTests.js new file mode 100644 index 00000000..78b50683 --- /dev/null +++ b/demo/tests/setupTests.js @@ -0,0 +1,10 @@ +// do some test init + +const localStorageMock = { + getItem: jest.fn(), + setItem: jest.fn(), + removeItem: jest.fn(), + clear: jest.fn(), +}; + +global.localStorage = localStorageMock; diff --git a/demo/tsconfig.json b/demo/tsconfig.json new file mode 100644 index 00000000..e7a27859 --- /dev/null +++ b/demo/tsconfig.json @@ -0,0 +1,42 @@ +{ + "compilerOptions": { + "outDir": "build/dist", + "module": "esnext", + "target": "esnext", + "lib": ["esnext", "dom"], + "sourceMap": true, + "baseUrl": ".", + "jsx": "react-jsx", + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, + "moduleResolution": "node", + "forceConsistentCasingInFileNames": true, + "noImplicitReturns": true, + "suppressImplicitAnyIndexErrors": true, + "noUnusedLocals": true, + "allowJs": true, + "skipLibCheck": true, + "experimentalDecorators": true, + "strict": true, + "paths": { + "@/*": ["./src/*"], + "@@/*": ["./src/.umi/*"] + } + }, + "include": [ + "mock/**/*", + "src/**/*", + "playwright.config.ts", + "tests/**/*", + "test/**/*", + "__test__/**/*", + "typings/**/*", + "config/**/*", + ".eslintrc.js", + ".stylelintrc.js", + ".prettierrc.js", + "jest.config.js", + "mock/*" + ], + "exclude": ["node_modules", "build", "dist", "scripts", "src/.umi/*", "webpack", "jest"] +} From 512b4744d010072494191da93d2ed5142df7fa2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Mon, 27 Jun 2022 12:36:39 +0800 Subject: [PATCH 16/89] chore: change verison --- demo/.editorconfig | 16 - demo/.eslintignore | 8 - demo/.eslintrc.js | 8 - demo/.gitignore | 40 - demo/.husky/.gitignore | 1 - demo/.husky/commit-msg | 7 - demo/.husky/pre-commit | 4 - demo/.prettierignore | 23 - demo/.prettierrc.js | 5 - demo/.stylelintrc.js | 3 - demo/.vscode/extensions.json | 8 - demo/.vscode/settings.json | 5 - demo/README.md | 57 - demo/config/config.dev.ts | 15 - demo/config/config.ts | 358 ---- demo/config/defaultSettings.ts | 21 - demo/config/oneapi.json | 593 ------ demo/config/proxy.ts | 34 - demo/config/routes.ts | 53 - demo/jest.config.js | 9 - demo/jsconfig.json | 11 - demo/mock/listTableList.ts | 174 -- demo/mock/notices.ts | 107 - demo/mock/route.ts | 5 - demo/mock/user.ts | 203 -- demo/package.json | 113 -- demo/playwright.config.ts | 22 - demo/public/CNAME | 1 - demo/public/favicon.ico | Bin 4286 -> 0 bytes demo/public/icons/icon-128x128.png | Bin 1329 -> 0 bytes demo/public/icons/icon-192x192.png | Bin 1856 -> 0 bytes demo/public/icons/icon-512x512.png | Bin 5082 -> 0 bytes demo/public/logo.svg | 1 - demo/public/pro_icon.svg | 5 - demo/src/access.ts | 9 - demo/src/app.tsx | 108 - demo/src/components/Footer/index.tsx | 41 - demo/src/components/HeaderDropdown/index.less | 16 - demo/src/components/HeaderDropdown/index.tsx | 17 - demo/src/components/HeaderSearch/index.less | 25 - demo/src/components/HeaderSearch/index.tsx | 102 - demo/src/components/NoticeIcon/NoticeIcon.tsx | 126 -- .../src/components/NoticeIcon/NoticeList.less | 103 - demo/src/components/NoticeIcon/NoticeList.tsx | 113 -- demo/src/components/NoticeIcon/index.less | 35 - demo/src/components/NoticeIcon/index.tsx | 153 -- .../RightContent/AvatarDropdown.tsx | 103 - demo/src/components/RightContent/index.less | 84 - demo/src/components/RightContent/index.tsx | 68 - demo/src/components/index.md | 272 --- demo/src/e2e/baseLayout.e2e.spec.ts | 45 - demo/src/global.less | 57 - demo/src/global.tsx | 91 - demo/src/locales/bn-BD.ts | 26 - demo/src/locales/bn-BD/component.ts | 5 - demo/src/locales/bn-BD/globalHeader.ts | 17 - demo/src/locales/bn-BD/menu.ts | 52 - demo/src/locales/bn-BD/pages.ts | 70 - demo/src/locales/bn-BD/pwa.ts | 7 - demo/src/locales/bn-BD/settingDrawer.ts | 31 - demo/src/locales/bn-BD/settings.ts | 59 - demo/src/locales/en-US.ts | 25 - demo/src/locales/en-US/component.ts | 5 - demo/src/locales/en-US/globalHeader.ts | 17 - demo/src/locales/en-US/menu.ts | 52 - demo/src/locales/en-US/pages.ts | 70 - demo/src/locales/en-US/pwa.ts | 6 - demo/src/locales/en-US/settingDrawer.ts | 31 - demo/src/locales/en-US/settings.ts | 60 - demo/src/locales/fa-IR.ts | 24 - demo/src/locales/fa-IR/component.ts | 5 - demo/src/locales/fa-IR/globalHeader.ts | 17 - demo/src/locales/fa-IR/menu.ts | 52 - demo/src/locales/fa-IR/pages.ts | 67 - demo/src/locales/fa-IR/pwa.ts | 7 - demo/src/locales/fa-IR/settingDrawer.ts | 32 - demo/src/locales/fa-IR/settings.ts | 60 - demo/src/locales/id-ID.ts | 25 - demo/src/locales/id-ID/component.ts | 5 - demo/src/locales/id-ID/globalHeader.ts | 17 - demo/src/locales/id-ID/menu.ts | 52 - demo/src/locales/id-ID/pages.ts | 70 - demo/src/locales/id-ID/pwa.ts | 7 - demo/src/locales/id-ID/settingDrawer.ts | 32 - demo/src/locales/id-ID/settings.ts | 60 - demo/src/locales/ja-JP.ts | 24 - demo/src/locales/ja-JP/component.ts | 5 - demo/src/locales/ja-JP/globalHeader.ts | 17 - demo/src/locales/ja-JP/menu.ts | 52 - demo/src/locales/ja-JP/pages.ts | 67 - demo/src/locales/ja-JP/pwa.ts | 7 - demo/src/locales/ja-JP/settingDrawer.ts | 31 - demo/src/locales/ja-JP/settings.ts | 59 - demo/src/locales/pt-BR.ts | 22 - demo/src/locales/pt-BR/component.ts | 5 - demo/src/locales/pt-BR/globalHeader.ts | 18 - demo/src/locales/pt-BR/menu.ts | 52 - demo/src/locales/pt-BR/pages.ts | 70 - demo/src/locales/pt-BR/pwa.ts | 7 - demo/src/locales/pt-BR/settingDrawer.ts | 32 - demo/src/locales/pt-BR/settings.ts | 60 - demo/src/locales/zh-CN.ts | 25 - demo/src/locales/zh-CN/component.ts | 5 - demo/src/locales/zh-CN/globalHeader.ts | 17 - demo/src/locales/zh-CN/menu.ts | 52 - demo/src/locales/zh-CN/pages.ts | 67 - demo/src/locales/zh-CN/pwa.ts | 6 - demo/src/locales/zh-CN/settingDrawer.ts | 31 - demo/src/locales/zh-CN/settings.ts | 55 - demo/src/locales/zh-TW.ts | 20 - demo/src/locales/zh-TW/component.ts | 5 - demo/src/locales/zh-TW/globalHeader.ts | 17 - demo/src/locales/zh-TW/menu.ts | 52 - demo/src/locales/zh-TW/pwa.ts | 6 - demo/src/locales/zh-TW/settingDrawer.ts | 31 - demo/src/locales/zh-TW/settings.ts | 55 - demo/src/manifest.json | 22 - demo/src/pages/404.tsx | 18 - demo/src/pages/Admin.tsx | 45 - .../pages/TableList/components/UpdateForm.tsx | 209 -- demo/src/pages/TableList/index.tsx | 393 ---- demo/src/pages/Welcome.less | 8 - demo/src/pages/Welcome.tsx | 66 - demo/src/pages/account/center/Center.less | 86 - demo/src/pages/account/center/_mock.ts | 243 --- .../center/components/Applications/index.less | 51 - .../center/components/Applications/index.tsx | 123 -- .../components/ArticleListContent/index.less | 38 - .../components/ArticleListContent/index.tsx | 28 - .../center/components/Articles/index.less | 12 - .../center/components/Articles/index.tsx | 63 - .../center/components/AvatarList/index.less | 50 - .../center/components/AvatarList/index.tsx | 84 - .../center/components/Projects/index.less | 54 - .../center/components/Projects/index.tsx | 49 - demo/src/pages/account/center/data.d.ts | 75 - demo/src/pages/account/center/index.tsx | 210 -- demo/src/pages/account/center/service.ts | 14 - demo/src/pages/account/settings/_mock.ts | 79 - .../account/settings/components/BaseView.less | 65 - .../account/settings/components/PhoneView.tsx | 42 - .../account/settings/components/base.tsx | 230 --- .../account/settings/components/binding.tsx | 46 - .../settings/components/notification.tsx | 44 - .../account/settings/components/security.tsx | 62 - demo/src/pages/account/settings/data.d.ts | 43 - .../account/settings/geographic/city.json | 1784 ----------------- .../account/settings/geographic/province.json | 138 -- demo/src/pages/account/settings/index.tsx | 111 - demo/src/pages/account/settings/service.ts | 18 - demo/src/pages/account/settings/style.less | 93 - demo/src/pages/dashboard/analysis/_mock.ts | 210 -- .../analysis/components/Charts/Bar/index.tsx | 133 -- .../components/Charts/ChartCard/index.less | 75 - .../components/Charts/ChartCard/index.tsx | 97 - .../components/Charts/Field/index.less | 17 - .../components/Charts/Field/index.tsx | 17 - .../components/Charts/Gauge/index.tsx | 179 -- .../components/Charts/MiniArea/index.tsx | 131 -- .../components/Charts/MiniBar/index.tsx | 54 - .../components/Charts/MiniProgress/index.tsx | 41 - .../analysis/components/Charts/Pie/index.tsx | 309 --- .../components/Charts/TagCloud/index.tsx | 212 -- .../components/Charts/TimelineChart/index.tsx | 132 -- .../components/Charts/WaterWave/index.tsx | 235 --- .../analysis/components/Charts/autoHeight.tsx | 79 - .../analysis/components/Charts/index.less | 19 - .../analysis/components/Charts/index.tsx | 13 - .../analysis/components/IntroduceRow.tsx | 135 -- .../analysis/components/NumberInfo/index.less | 68 - .../analysis/components/NumberInfo/index.tsx | 62 - .../analysis/components/OfflineData.tsx | 76 - .../analysis/components/PageLoading/index.tsx | 9 - .../analysis/components/ProportionSales.tsx | 76 - .../analysis/components/SalesCard.tsx | 189 -- .../analysis/components/TopSearch.tsx | 113 -- .../analysis/components/Trend/index.less | 37 - .../analysis/components/Trend/index.tsx | 42 - demo/src/pages/dashboard/analysis/data.d.ts | 46 - demo/src/pages/dashboard/analysis/index.tsx | 162 -- demo/src/pages/dashboard/analysis/service.ts | 6 - demo/src/pages/dashboard/analysis/style.less | 189 -- .../pages/dashboard/analysis/utils/Yuan.tsx | 33 - .../pages/dashboard/analysis/utils/utils.less | 50 - .../pages/dashboard/analysis/utils/utils.ts | 52 - demo/src/pages/dashboard/monitor/_mock.ts | 14 - .../monitor/components/ActiveChart/index.less | 51 - .../monitor/components/ActiveChart/index.tsx | 90 - .../monitor/components/Charts/Gauge/index.tsx | 180 -- .../components/Charts/MiniArea/index.tsx | 131 -- .../monitor/components/Charts/Pie/index.tsx | 310 --- .../components/Charts/TagCloud/index.tsx | 211 -- .../components/Charts/WaterWave/index.tsx | 235 --- .../monitor/components/Charts/autoHeight.tsx | 79 - .../monitor/components/Map/index.tsx | 145 -- demo/src/pages/dashboard/monitor/data.d.ts | 5 - demo/src/pages/dashboard/monitor/index.tsx | 152 -- demo/src/pages/dashboard/monitor/service.ts | 6 - demo/src/pages/dashboard/monitor/style.less | 21 - demo/src/pages/dashboard/workplace/_mock.ts | 410 ---- .../components/EditableLinkGroup/index.less | 16 - .../components/EditableLinkGroup/index.tsx | 47 - .../workplace/components/Radar/autoHeight.tsx | 79 - .../workplace/components/Radar/index.tsx | 219 -- demo/src/pages/dashboard/workplace/data.d.ts | 111 - demo/src/pages/dashboard/workplace/index.tsx | 242 --- demo/src/pages/dashboard/workplace/service.ts | 14 - demo/src/pages/dashboard/workplace/style.less | 250 --- demo/src/pages/document.ejs | 236 --- .../editor/flow/common/IconFont/index.ts | 7 - .../EditorContextMenu/FlowContextMenu.tsx | 34 - .../EditorContextMenu/KoniContextMenu.tsx | 3 - .../components/EditorContextMenu/MenuItem.tsx | 27 - .../EditorContextMenu/MindContextMenu.tsx | 22 - .../components/EditorContextMenu/index.less | 41 - .../components/EditorContextMenu/index.tsx | 5 - .../EditorDetailPanel/DetailForm.tsx | 114 -- .../EditorDetailPanel/FlowDetailPanel.tsx | 27 - .../EditorDetailPanel/KoniDetailPanel.tsx | 3 - .../EditorDetailPanel/MindDetailPanel.tsx | 18 - .../components/EditorDetailPanel/index.less | 6 - .../components/EditorDetailPanel/index.tsx | 5 - .../EditorItemPanel/FlowItemPanel.tsx | 53 - .../EditorItemPanel/KoniItemPanel.tsx | 49 - .../components/EditorItemPanel/index.less | 19 - .../flow/components/EditorItemPanel/index.tsx | 4 - .../flow/components/EditorMinimap/index.tsx | 10 - .../components/EditorToolbar/FlowToolbar.tsx | 29 - .../components/EditorToolbar/KoniToolbar.tsx | 3 - .../components/EditorToolbar/MindToolbar.tsx | 24 - .../EditorToolbar/ToolbarButton.tsx | 31 - .../flow/components/EditorToolbar/index.less | 40 - .../flow/components/EditorToolbar/index.tsx | 5 - demo/src/pages/editor/flow/index.less | 48 - demo/src/pages/editor/flow/index.tsx | 37 - .../editor/koni/common/IconFont/index.ts | 7 - .../EditorContextMenu/FlowContextMenu.tsx | 34 - .../EditorContextMenu/KoniContextMenu.tsx | 3 - .../components/EditorContextMenu/MenuItem.tsx | 27 - .../EditorContextMenu/MindContextMenu.tsx | 22 - .../components/EditorContextMenu/index.less | 40 - .../components/EditorContextMenu/index.tsx | 5 - .../EditorDetailPanel/DetailForm.tsx | 114 -- .../EditorDetailPanel/FlowDetailPanel.tsx | 27 - .../EditorDetailPanel/KoniDetailPanel.tsx | 3 - .../EditorDetailPanel/MindDetailPanel.tsx | 18 - .../components/EditorDetailPanel/index.less | 6 - .../components/EditorDetailPanel/index.tsx | 5 - .../EditorItemPanel/FlowItemPanel.tsx | 53 - .../EditorItemPanel/KoniItemPanel.tsx | 49 - .../components/EditorItemPanel/index.less | 19 - .../koni/components/EditorItemPanel/index.tsx | 4 - .../koni/components/EditorMinimap/index.tsx | 10 - .../components/EditorToolbar/FlowToolbar.tsx | 29 - .../components/EditorToolbar/KoniToolbar.tsx | 3 - .../components/EditorToolbar/MindToolbar.tsx | 24 - .../EditorToolbar/ToolbarButton.tsx | 31 - .../koni/components/EditorToolbar/index.less | 39 - .../koni/components/EditorToolbar/index.tsx | 5 - demo/src/pages/editor/koni/index.less | 56 - demo/src/pages/editor/koni/index.tsx | 37 - .../editor/mind/common/IconFont/index.ts | 7 - .../EditorContextMenu/FlowContextMenu.tsx | 34 - .../EditorContextMenu/KoniContextMenu.tsx | 3 - .../components/EditorContextMenu/MenuItem.tsx | 27 - .../EditorContextMenu/MindContextMenu.tsx | 22 - .../components/EditorContextMenu/index.less | 40 - .../components/EditorContextMenu/index.tsx | 5 - .../EditorDetailPanel/DetailForm.tsx | 114 -- .../EditorDetailPanel/FlowDetailPanel.tsx | 27 - .../EditorDetailPanel/KoniDetailPanel.tsx | 3 - .../EditorDetailPanel/MindDetailPanel.tsx | 18 - .../components/EditorDetailPanel/index.less | 6 - .../components/EditorDetailPanel/index.tsx | 5 - .../EditorItemPanel/FlowItemPanel.tsx | 53 - .../EditorItemPanel/KoniItemPanel.tsx | 49 - .../components/EditorItemPanel/index.less | 19 - .../mind/components/EditorItemPanel/index.tsx | 4 - .../mind/components/EditorMinimap/index.tsx | 10 - .../components/EditorToolbar/FlowToolbar.tsx | 29 - .../components/EditorToolbar/KoniToolbar.tsx | 3 - .../components/EditorToolbar/MindToolbar.tsx | 24 - .../EditorToolbar/ToolbarButton.tsx | 31 - .../mind/components/EditorToolbar/index.less | 40 - .../mind/components/EditorToolbar/index.tsx | 5 - demo/src/pages/editor/mind/index.less | 56 - demo/src/pages/editor/mind/index.tsx | 34 - demo/src/pages/editor/mind/worldCup2018.json | 129 -- demo/src/pages/exception/403/index.tsx | 18 - demo/src/pages/exception/404/index.tsx | 18 - demo/src/pages/exception/500/index.tsx | 18 - demo/src/pages/form/advanced-form/_mock.ts | 8 - .../advanced-form/components/TableForm.tsx | 257 --- demo/src/pages/form/advanced-form/index.tsx | 386 ---- demo/src/pages/form/advanced-form/service.ts | 8 - demo/src/pages/form/advanced-form/style.less | 65 - demo/src/pages/form/basic-form/_mock.ts | 8 - demo/src/pages/form/basic-form/index.tsx | 188 -- demo/src/pages/form/basic-form/service.ts | 8 - demo/src/pages/form/basic-form/style.less | 6 - demo/src/pages/form/step-form/_mock.ts | 8 - demo/src/pages/form/step-form/data.d.ts | 9 - demo/src/pages/form/step-form/index.tsx | 196 -- demo/src/pages/form/step-form/service.ts | 8 - demo/src/pages/form/step-form/style.less | 11 - demo/src/pages/list/basic-list/_mock.ts | 160 -- .../basic-list/components/OperationModal.tsx | 105 - demo/src/pages/list/basic-list/data.d.ts | 29 - demo/src/pages/list/basic-list/index.tsx | 246 --- demo/src/pages/list/basic-list/service.ts | 50 - demo/src/pages/list/basic-list/style.less | 195 -- .../pages/list/basic-list/utils/utils.less | 50 - demo/src/pages/list/card-list/_mock.ts | 120 -- demo/src/pages/list/card-list/data.d.ts | 29 - demo/src/pages/list/card-list/index.tsx | 104 - demo/src/pages/list/card-list/service.ts | 10 - demo/src/pages/list/card-list/style.less | 107 - .../src/pages/list/card-list/utils/utils.less | 50 - .../pages/list/search/applications/_mock.ts | 119 -- .../components/StandardFormRow/index.less | 87 - .../components/StandardFormRow/index.tsx | 39 - .../components/TagSelect/index.less | 34 - .../components/TagSelect/index.tsx | 142 -- .../pages/list/search/applications/data.d.ts | 33 - .../pages/list/search/applications/index.tsx | 195 -- .../pages/list/search/applications/service.ts | 10 - .../pages/list/search/applications/style.less | 50 - .../list/search/applications/utils/utils.less | 50 - demo/src/pages/list/search/articles/_mock.ts | 119 -- .../components/ArticleListContent/index.less | 38 - .../components/ArticleListContent/index.tsx | 29 - .../components/StandardFormRow/index.less | 88 - .../components/StandardFormRow/index.tsx | 39 - .../articles/components/TagSelect/index.less | 33 - .../articles/components/TagSelect/index.tsx | 142 -- demo/src/pages/list/search/articles/data.d.ts | 32 - demo/src/pages/list/search/articles/index.tsx | 224 --- .../src/pages/list/search/articles/service.ts | 10 - .../src/pages/list/search/articles/style.less | 31 - demo/src/pages/list/search/index.tsx | 87 - demo/src/pages/list/search/projects/_mock.ts | 118 -- .../projects/components/AvatarList/index.less | 50 - .../projects/components/AvatarList/index.tsx | 84 - .../components/StandardFormRow/index.less | 88 - .../components/StandardFormRow/index.tsx | 39 - .../projects/components/TagSelect/index.less | 33 - .../projects/components/TagSelect/index.tsx | 142 -- demo/src/pages/list/search/projects/data.d.ts | 32 - demo/src/pages/list/search/projects/index.tsx | 135 -- .../src/pages/list/search/projects/service.ts | 10 - .../src/pages/list/search/projects/style.less | 55 - .../list/search/projects/utils/utils.less | 50 - demo/src/pages/list/table-list/_mock.ts | 177 -- .../list/table-list/components/CreateForm.tsx | 25 - .../list/table-list/components/UpdateForm.tsx | 159 -- demo/src/pages/list/table-list/data.d.ts | 36 - demo/src/pages/list/table-list/index.tsx | 320 --- demo/src/pages/list/table-list/service.ts | 56 - demo/src/pages/profile/advanced/_mock.ts | 81 - demo/src/pages/profile/advanced/data.d.ts | 32 - demo/src/pages/profile/advanced/index.tsx | 356 ---- demo/src/pages/profile/advanced/service.ts | 5 - demo/src/pages/profile/advanced/style.less | 60 - demo/src/pages/profile/basic/_mock.ts | 92 - demo/src/pages/profile/basic/data.d.ts | 17 - demo/src/pages/profile/basic/index.tsx | 193 -- demo/src/pages/profile/basic/service.ts | 11 - demo/src/pages/profile/basic/style.less | 8 - demo/src/pages/result/fail/index.less | 11 - demo/src/pages/result/fail/index.tsx | 50 - demo/src/pages/result/success/index.less | 15 - demo/src/pages/result/success/index.tsx | 71 - demo/src/pages/user/Login/index.less | 50 - demo/src/pages/user/Login/index.tsx | 286 --- demo/src/pages/user/register-result/index.tsx | 42 - .../src/pages/user/register-result/style.less | 23 - demo/src/pages/user/register/_mock.ts | 10 - demo/src/pages/user/register/index.tsx | 285 --- demo/src/pages/user/register/service.ts | 22 - demo/src/pages/user/register/style.less | 60 - demo/src/service-worker.js | 65 - demo/src/services/ant-design-pro/api.ts | 85 - demo/src/services/ant-design-pro/index.ts | 10 - demo/src/services/ant-design-pro/login.ts | 21 - demo/src/services/ant-design-pro/typings.d.ts | 101 - demo/src/services/swagger/index.ts | 12 - demo/src/services/swagger/pet.ts | 166 -- demo/src/services/swagger/store.ts | 54 - demo/src/services/swagger/typings.d.ts | 52 - demo/src/services/swagger/user.ts | 114 -- demo/src/typings.d.ts | 24 - demo/tests/run-tests.js | 47 - demo/tests/setupTests.js | 10 - demo/tsconfig.json | 42 - 394 files changed, 27192 deletions(-) delete mode 100644 demo/.editorconfig delete mode 100644 demo/.eslintignore delete mode 100644 demo/.eslintrc.js delete mode 100644 demo/.gitignore delete mode 100644 demo/.husky/.gitignore delete mode 100755 demo/.husky/commit-msg delete mode 100755 demo/.husky/pre-commit delete mode 100644 demo/.prettierignore delete mode 100644 demo/.prettierrc.js delete mode 100644 demo/.stylelintrc.js delete mode 100644 demo/.vscode/extensions.json delete mode 100644 demo/.vscode/settings.json delete mode 100644 demo/README.md delete mode 100644 demo/config/config.dev.ts delete mode 100644 demo/config/config.ts delete mode 100644 demo/config/defaultSettings.ts delete mode 100644 demo/config/oneapi.json delete mode 100644 demo/config/proxy.ts delete mode 100644 demo/config/routes.ts delete mode 100644 demo/jest.config.js delete mode 100644 demo/jsconfig.json delete mode 100644 demo/mock/listTableList.ts delete mode 100644 demo/mock/notices.ts delete mode 100644 demo/mock/route.ts delete mode 100644 demo/mock/user.ts delete mode 100644 demo/package.json delete mode 100644 demo/playwright.config.ts delete mode 100644 demo/public/CNAME delete mode 100644 demo/public/favicon.ico delete mode 100644 demo/public/icons/icon-128x128.png delete mode 100644 demo/public/icons/icon-192x192.png delete mode 100644 demo/public/icons/icon-512x512.png delete mode 100644 demo/public/logo.svg delete mode 100644 demo/public/pro_icon.svg delete mode 100644 demo/src/access.ts delete mode 100644 demo/src/app.tsx delete mode 100644 demo/src/components/Footer/index.tsx delete mode 100644 demo/src/components/HeaderDropdown/index.less delete mode 100644 demo/src/components/HeaderDropdown/index.tsx delete mode 100644 demo/src/components/HeaderSearch/index.less delete mode 100644 demo/src/components/HeaderSearch/index.tsx delete mode 100644 demo/src/components/NoticeIcon/NoticeIcon.tsx delete mode 100755 demo/src/components/NoticeIcon/NoticeList.less delete mode 100644 demo/src/components/NoticeIcon/NoticeList.tsx delete mode 100644 demo/src/components/NoticeIcon/index.less delete mode 100644 demo/src/components/NoticeIcon/index.tsx delete mode 100644 demo/src/components/RightContent/AvatarDropdown.tsx delete mode 100644 demo/src/components/RightContent/index.less delete mode 100644 demo/src/components/RightContent/index.tsx delete mode 100644 demo/src/components/index.md delete mode 100644 demo/src/e2e/baseLayout.e2e.spec.ts delete mode 100644 demo/src/global.less delete mode 100644 demo/src/global.tsx delete mode 100644 demo/src/locales/bn-BD.ts delete mode 100644 demo/src/locales/bn-BD/component.ts delete mode 100644 demo/src/locales/bn-BD/globalHeader.ts delete mode 100644 demo/src/locales/bn-BD/menu.ts delete mode 100644 demo/src/locales/bn-BD/pages.ts delete mode 100644 demo/src/locales/bn-BD/pwa.ts delete mode 100644 demo/src/locales/bn-BD/settingDrawer.ts delete mode 100644 demo/src/locales/bn-BD/settings.ts delete mode 100644 demo/src/locales/en-US.ts delete mode 100644 demo/src/locales/en-US/component.ts delete mode 100644 demo/src/locales/en-US/globalHeader.ts delete mode 100644 demo/src/locales/en-US/menu.ts delete mode 100644 demo/src/locales/en-US/pages.ts delete mode 100644 demo/src/locales/en-US/pwa.ts delete mode 100644 demo/src/locales/en-US/settingDrawer.ts delete mode 100644 demo/src/locales/en-US/settings.ts delete mode 100644 demo/src/locales/fa-IR.ts delete mode 100644 demo/src/locales/fa-IR/component.ts delete mode 100644 demo/src/locales/fa-IR/globalHeader.ts delete mode 100644 demo/src/locales/fa-IR/menu.ts delete mode 100644 demo/src/locales/fa-IR/pages.ts delete mode 100644 demo/src/locales/fa-IR/pwa.ts delete mode 100644 demo/src/locales/fa-IR/settingDrawer.ts delete mode 100644 demo/src/locales/fa-IR/settings.ts delete mode 100644 demo/src/locales/id-ID.ts delete mode 100644 demo/src/locales/id-ID/component.ts delete mode 100644 demo/src/locales/id-ID/globalHeader.ts delete mode 100644 demo/src/locales/id-ID/menu.ts delete mode 100644 demo/src/locales/id-ID/pages.ts delete mode 100644 demo/src/locales/id-ID/pwa.ts delete mode 100644 demo/src/locales/id-ID/settingDrawer.ts delete mode 100644 demo/src/locales/id-ID/settings.ts delete mode 100644 demo/src/locales/ja-JP.ts delete mode 100644 demo/src/locales/ja-JP/component.ts delete mode 100644 demo/src/locales/ja-JP/globalHeader.ts delete mode 100644 demo/src/locales/ja-JP/menu.ts delete mode 100644 demo/src/locales/ja-JP/pages.ts delete mode 100644 demo/src/locales/ja-JP/pwa.ts delete mode 100644 demo/src/locales/ja-JP/settingDrawer.ts delete mode 100644 demo/src/locales/ja-JP/settings.ts delete mode 100644 demo/src/locales/pt-BR.ts delete mode 100644 demo/src/locales/pt-BR/component.ts delete mode 100644 demo/src/locales/pt-BR/globalHeader.ts delete mode 100644 demo/src/locales/pt-BR/menu.ts delete mode 100644 demo/src/locales/pt-BR/pages.ts delete mode 100644 demo/src/locales/pt-BR/pwa.ts delete mode 100644 demo/src/locales/pt-BR/settingDrawer.ts delete mode 100644 demo/src/locales/pt-BR/settings.ts delete mode 100644 demo/src/locales/zh-CN.ts delete mode 100644 demo/src/locales/zh-CN/component.ts delete mode 100644 demo/src/locales/zh-CN/globalHeader.ts delete mode 100644 demo/src/locales/zh-CN/menu.ts delete mode 100644 demo/src/locales/zh-CN/pages.ts delete mode 100644 demo/src/locales/zh-CN/pwa.ts delete mode 100644 demo/src/locales/zh-CN/settingDrawer.ts delete mode 100644 demo/src/locales/zh-CN/settings.ts delete mode 100644 demo/src/locales/zh-TW.ts delete mode 100644 demo/src/locales/zh-TW/component.ts delete mode 100644 demo/src/locales/zh-TW/globalHeader.ts delete mode 100644 demo/src/locales/zh-TW/menu.ts delete mode 100644 demo/src/locales/zh-TW/pwa.ts delete mode 100644 demo/src/locales/zh-TW/settingDrawer.ts delete mode 100644 demo/src/locales/zh-TW/settings.ts delete mode 100644 demo/src/manifest.json delete mode 100644 demo/src/pages/404.tsx delete mode 100644 demo/src/pages/Admin.tsx delete mode 100644 demo/src/pages/TableList/components/UpdateForm.tsx delete mode 100644 demo/src/pages/TableList/index.tsx delete mode 100644 demo/src/pages/Welcome.less delete mode 100644 demo/src/pages/Welcome.tsx delete mode 100644 demo/src/pages/account/center/Center.less delete mode 100644 demo/src/pages/account/center/_mock.ts delete mode 100644 demo/src/pages/account/center/components/Applications/index.less delete mode 100644 demo/src/pages/account/center/components/Applications/index.tsx delete mode 100644 demo/src/pages/account/center/components/ArticleListContent/index.less delete mode 100644 demo/src/pages/account/center/components/ArticleListContent/index.tsx delete mode 100644 demo/src/pages/account/center/components/Articles/index.less delete mode 100644 demo/src/pages/account/center/components/Articles/index.tsx delete mode 100644 demo/src/pages/account/center/components/AvatarList/index.less delete mode 100644 demo/src/pages/account/center/components/AvatarList/index.tsx delete mode 100644 demo/src/pages/account/center/components/Projects/index.less delete mode 100644 demo/src/pages/account/center/components/Projects/index.tsx delete mode 100644 demo/src/pages/account/center/data.d.ts delete mode 100644 demo/src/pages/account/center/index.tsx delete mode 100644 demo/src/pages/account/center/service.ts delete mode 100644 demo/src/pages/account/settings/_mock.ts delete mode 100644 demo/src/pages/account/settings/components/BaseView.less delete mode 100644 demo/src/pages/account/settings/components/PhoneView.tsx delete mode 100644 demo/src/pages/account/settings/components/base.tsx delete mode 100644 demo/src/pages/account/settings/components/binding.tsx delete mode 100644 demo/src/pages/account/settings/components/notification.tsx delete mode 100644 demo/src/pages/account/settings/components/security.tsx delete mode 100644 demo/src/pages/account/settings/data.d.ts delete mode 100644 demo/src/pages/account/settings/geographic/city.json delete mode 100644 demo/src/pages/account/settings/geographic/province.json delete mode 100644 demo/src/pages/account/settings/index.tsx delete mode 100644 demo/src/pages/account/settings/service.ts delete mode 100644 demo/src/pages/account/settings/style.less delete mode 100644 demo/src/pages/dashboard/analysis/_mock.ts delete mode 100644 demo/src/pages/dashboard/analysis/components/Charts/Bar/index.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/Charts/ChartCard/index.less delete mode 100644 demo/src/pages/dashboard/analysis/components/Charts/ChartCard/index.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/Charts/Field/index.less delete mode 100644 demo/src/pages/dashboard/analysis/components/Charts/Field/index.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/Charts/Gauge/index.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/Charts/MiniArea/index.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/Charts/MiniBar/index.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/Charts/MiniProgress/index.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/Charts/Pie/index.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/Charts/TagCloud/index.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/Charts/TimelineChart/index.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/Charts/WaterWave/index.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/Charts/autoHeight.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/Charts/index.less delete mode 100644 demo/src/pages/dashboard/analysis/components/Charts/index.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/IntroduceRow.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/NumberInfo/index.less delete mode 100644 demo/src/pages/dashboard/analysis/components/NumberInfo/index.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/OfflineData.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/PageLoading/index.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/ProportionSales.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/SalesCard.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/TopSearch.tsx delete mode 100644 demo/src/pages/dashboard/analysis/components/Trend/index.less delete mode 100644 demo/src/pages/dashboard/analysis/components/Trend/index.tsx delete mode 100644 demo/src/pages/dashboard/analysis/data.d.ts delete mode 100644 demo/src/pages/dashboard/analysis/index.tsx delete mode 100644 demo/src/pages/dashboard/analysis/service.ts delete mode 100644 demo/src/pages/dashboard/analysis/style.less delete mode 100644 demo/src/pages/dashboard/analysis/utils/Yuan.tsx delete mode 100644 demo/src/pages/dashboard/analysis/utils/utils.less delete mode 100644 demo/src/pages/dashboard/analysis/utils/utils.ts delete mode 100644 demo/src/pages/dashboard/monitor/_mock.ts delete mode 100644 demo/src/pages/dashboard/monitor/components/ActiveChart/index.less delete mode 100644 demo/src/pages/dashboard/monitor/components/ActiveChart/index.tsx delete mode 100644 demo/src/pages/dashboard/monitor/components/Charts/Gauge/index.tsx delete mode 100644 demo/src/pages/dashboard/monitor/components/Charts/MiniArea/index.tsx delete mode 100644 demo/src/pages/dashboard/monitor/components/Charts/Pie/index.tsx delete mode 100644 demo/src/pages/dashboard/monitor/components/Charts/TagCloud/index.tsx delete mode 100644 demo/src/pages/dashboard/monitor/components/Charts/WaterWave/index.tsx delete mode 100644 demo/src/pages/dashboard/monitor/components/Charts/autoHeight.tsx delete mode 100644 demo/src/pages/dashboard/monitor/components/Map/index.tsx delete mode 100644 demo/src/pages/dashboard/monitor/data.d.ts delete mode 100644 demo/src/pages/dashboard/monitor/index.tsx delete mode 100644 demo/src/pages/dashboard/monitor/service.ts delete mode 100644 demo/src/pages/dashboard/monitor/style.less delete mode 100644 demo/src/pages/dashboard/workplace/_mock.ts delete mode 100644 demo/src/pages/dashboard/workplace/components/EditableLinkGroup/index.less delete mode 100644 demo/src/pages/dashboard/workplace/components/EditableLinkGroup/index.tsx delete mode 100644 demo/src/pages/dashboard/workplace/components/Radar/autoHeight.tsx delete mode 100644 demo/src/pages/dashboard/workplace/components/Radar/index.tsx delete mode 100644 demo/src/pages/dashboard/workplace/data.d.ts delete mode 100644 demo/src/pages/dashboard/workplace/index.tsx delete mode 100644 demo/src/pages/dashboard/workplace/service.ts delete mode 100644 demo/src/pages/dashboard/workplace/style.less delete mode 100644 demo/src/pages/document.ejs delete mode 100644 demo/src/pages/editor/flow/common/IconFont/index.ts delete mode 100644 demo/src/pages/editor/flow/components/EditorContextMenu/FlowContextMenu.tsx delete mode 100644 demo/src/pages/editor/flow/components/EditorContextMenu/KoniContextMenu.tsx delete mode 100644 demo/src/pages/editor/flow/components/EditorContextMenu/MenuItem.tsx delete mode 100644 demo/src/pages/editor/flow/components/EditorContextMenu/MindContextMenu.tsx delete mode 100644 demo/src/pages/editor/flow/components/EditorContextMenu/index.less delete mode 100644 demo/src/pages/editor/flow/components/EditorContextMenu/index.tsx delete mode 100644 demo/src/pages/editor/flow/components/EditorDetailPanel/DetailForm.tsx delete mode 100644 demo/src/pages/editor/flow/components/EditorDetailPanel/FlowDetailPanel.tsx delete mode 100644 demo/src/pages/editor/flow/components/EditorDetailPanel/KoniDetailPanel.tsx delete mode 100644 demo/src/pages/editor/flow/components/EditorDetailPanel/MindDetailPanel.tsx delete mode 100644 demo/src/pages/editor/flow/components/EditorDetailPanel/index.less delete mode 100644 demo/src/pages/editor/flow/components/EditorDetailPanel/index.tsx delete mode 100644 demo/src/pages/editor/flow/components/EditorItemPanel/FlowItemPanel.tsx delete mode 100644 demo/src/pages/editor/flow/components/EditorItemPanel/KoniItemPanel.tsx delete mode 100644 demo/src/pages/editor/flow/components/EditorItemPanel/index.less delete mode 100644 demo/src/pages/editor/flow/components/EditorItemPanel/index.tsx delete mode 100644 demo/src/pages/editor/flow/components/EditorMinimap/index.tsx delete mode 100644 demo/src/pages/editor/flow/components/EditorToolbar/FlowToolbar.tsx delete mode 100644 demo/src/pages/editor/flow/components/EditorToolbar/KoniToolbar.tsx delete mode 100644 demo/src/pages/editor/flow/components/EditorToolbar/MindToolbar.tsx delete mode 100644 demo/src/pages/editor/flow/components/EditorToolbar/ToolbarButton.tsx delete mode 100644 demo/src/pages/editor/flow/components/EditorToolbar/index.less delete mode 100644 demo/src/pages/editor/flow/components/EditorToolbar/index.tsx delete mode 100644 demo/src/pages/editor/flow/index.less delete mode 100644 demo/src/pages/editor/flow/index.tsx delete mode 100644 demo/src/pages/editor/koni/common/IconFont/index.ts delete mode 100644 demo/src/pages/editor/koni/components/EditorContextMenu/FlowContextMenu.tsx delete mode 100644 demo/src/pages/editor/koni/components/EditorContextMenu/KoniContextMenu.tsx delete mode 100644 demo/src/pages/editor/koni/components/EditorContextMenu/MenuItem.tsx delete mode 100644 demo/src/pages/editor/koni/components/EditorContextMenu/MindContextMenu.tsx delete mode 100644 demo/src/pages/editor/koni/components/EditorContextMenu/index.less delete mode 100644 demo/src/pages/editor/koni/components/EditorContextMenu/index.tsx delete mode 100644 demo/src/pages/editor/koni/components/EditorDetailPanel/DetailForm.tsx delete mode 100644 demo/src/pages/editor/koni/components/EditorDetailPanel/FlowDetailPanel.tsx delete mode 100644 demo/src/pages/editor/koni/components/EditorDetailPanel/KoniDetailPanel.tsx delete mode 100644 demo/src/pages/editor/koni/components/EditorDetailPanel/MindDetailPanel.tsx delete mode 100644 demo/src/pages/editor/koni/components/EditorDetailPanel/index.less delete mode 100644 demo/src/pages/editor/koni/components/EditorDetailPanel/index.tsx delete mode 100644 demo/src/pages/editor/koni/components/EditorItemPanel/FlowItemPanel.tsx delete mode 100644 demo/src/pages/editor/koni/components/EditorItemPanel/KoniItemPanel.tsx delete mode 100644 demo/src/pages/editor/koni/components/EditorItemPanel/index.less delete mode 100644 demo/src/pages/editor/koni/components/EditorItemPanel/index.tsx delete mode 100644 demo/src/pages/editor/koni/components/EditorMinimap/index.tsx delete mode 100644 demo/src/pages/editor/koni/components/EditorToolbar/FlowToolbar.tsx delete mode 100644 demo/src/pages/editor/koni/components/EditorToolbar/KoniToolbar.tsx delete mode 100644 demo/src/pages/editor/koni/components/EditorToolbar/MindToolbar.tsx delete mode 100644 demo/src/pages/editor/koni/components/EditorToolbar/ToolbarButton.tsx delete mode 100644 demo/src/pages/editor/koni/components/EditorToolbar/index.less delete mode 100644 demo/src/pages/editor/koni/components/EditorToolbar/index.tsx delete mode 100644 demo/src/pages/editor/koni/index.less delete mode 100644 demo/src/pages/editor/koni/index.tsx delete mode 100644 demo/src/pages/editor/mind/common/IconFont/index.ts delete mode 100644 demo/src/pages/editor/mind/components/EditorContextMenu/FlowContextMenu.tsx delete mode 100644 demo/src/pages/editor/mind/components/EditorContextMenu/KoniContextMenu.tsx delete mode 100644 demo/src/pages/editor/mind/components/EditorContextMenu/MenuItem.tsx delete mode 100644 demo/src/pages/editor/mind/components/EditorContextMenu/MindContextMenu.tsx delete mode 100644 demo/src/pages/editor/mind/components/EditorContextMenu/index.less delete mode 100644 demo/src/pages/editor/mind/components/EditorContextMenu/index.tsx delete mode 100644 demo/src/pages/editor/mind/components/EditorDetailPanel/DetailForm.tsx delete mode 100644 demo/src/pages/editor/mind/components/EditorDetailPanel/FlowDetailPanel.tsx delete mode 100644 demo/src/pages/editor/mind/components/EditorDetailPanel/KoniDetailPanel.tsx delete mode 100644 demo/src/pages/editor/mind/components/EditorDetailPanel/MindDetailPanel.tsx delete mode 100644 demo/src/pages/editor/mind/components/EditorDetailPanel/index.less delete mode 100644 demo/src/pages/editor/mind/components/EditorDetailPanel/index.tsx delete mode 100644 demo/src/pages/editor/mind/components/EditorItemPanel/FlowItemPanel.tsx delete mode 100644 demo/src/pages/editor/mind/components/EditorItemPanel/KoniItemPanel.tsx delete mode 100644 demo/src/pages/editor/mind/components/EditorItemPanel/index.less delete mode 100644 demo/src/pages/editor/mind/components/EditorItemPanel/index.tsx delete mode 100644 demo/src/pages/editor/mind/components/EditorMinimap/index.tsx delete mode 100644 demo/src/pages/editor/mind/components/EditorToolbar/FlowToolbar.tsx delete mode 100644 demo/src/pages/editor/mind/components/EditorToolbar/KoniToolbar.tsx delete mode 100644 demo/src/pages/editor/mind/components/EditorToolbar/MindToolbar.tsx delete mode 100644 demo/src/pages/editor/mind/components/EditorToolbar/ToolbarButton.tsx delete mode 100644 demo/src/pages/editor/mind/components/EditorToolbar/index.less delete mode 100644 demo/src/pages/editor/mind/components/EditorToolbar/index.tsx delete mode 100644 demo/src/pages/editor/mind/index.less delete mode 100644 demo/src/pages/editor/mind/index.tsx delete mode 100644 demo/src/pages/editor/mind/worldCup2018.json delete mode 100644 demo/src/pages/exception/403/index.tsx delete mode 100644 demo/src/pages/exception/404/index.tsx delete mode 100644 demo/src/pages/exception/500/index.tsx delete mode 100644 demo/src/pages/form/advanced-form/_mock.ts delete mode 100644 demo/src/pages/form/advanced-form/components/TableForm.tsx delete mode 100644 demo/src/pages/form/advanced-form/index.tsx delete mode 100644 demo/src/pages/form/advanced-form/service.ts delete mode 100644 demo/src/pages/form/advanced-form/style.less delete mode 100644 demo/src/pages/form/basic-form/_mock.ts delete mode 100644 demo/src/pages/form/basic-form/index.tsx delete mode 100644 demo/src/pages/form/basic-form/service.ts delete mode 100644 demo/src/pages/form/basic-form/style.less delete mode 100644 demo/src/pages/form/step-form/_mock.ts delete mode 100644 demo/src/pages/form/step-form/data.d.ts delete mode 100644 demo/src/pages/form/step-form/index.tsx delete mode 100644 demo/src/pages/form/step-form/service.ts delete mode 100644 demo/src/pages/form/step-form/style.less delete mode 100644 demo/src/pages/list/basic-list/_mock.ts delete mode 100644 demo/src/pages/list/basic-list/components/OperationModal.tsx delete mode 100644 demo/src/pages/list/basic-list/data.d.ts delete mode 100644 demo/src/pages/list/basic-list/index.tsx delete mode 100644 demo/src/pages/list/basic-list/service.ts delete mode 100644 demo/src/pages/list/basic-list/style.less delete mode 100644 demo/src/pages/list/basic-list/utils/utils.less delete mode 100644 demo/src/pages/list/card-list/_mock.ts delete mode 100644 demo/src/pages/list/card-list/data.d.ts delete mode 100644 demo/src/pages/list/card-list/index.tsx delete mode 100644 demo/src/pages/list/card-list/service.ts delete mode 100644 demo/src/pages/list/card-list/style.less delete mode 100644 demo/src/pages/list/card-list/utils/utils.less delete mode 100644 demo/src/pages/list/search/applications/_mock.ts delete mode 100644 demo/src/pages/list/search/applications/components/StandardFormRow/index.less delete mode 100644 demo/src/pages/list/search/applications/components/StandardFormRow/index.tsx delete mode 100644 demo/src/pages/list/search/applications/components/TagSelect/index.less delete mode 100644 demo/src/pages/list/search/applications/components/TagSelect/index.tsx delete mode 100644 demo/src/pages/list/search/applications/data.d.ts delete mode 100644 demo/src/pages/list/search/applications/index.tsx delete mode 100644 demo/src/pages/list/search/applications/service.ts delete mode 100644 demo/src/pages/list/search/applications/style.less delete mode 100644 demo/src/pages/list/search/applications/utils/utils.less delete mode 100644 demo/src/pages/list/search/articles/_mock.ts delete mode 100644 demo/src/pages/list/search/articles/components/ArticleListContent/index.less delete mode 100644 demo/src/pages/list/search/articles/components/ArticleListContent/index.tsx delete mode 100644 demo/src/pages/list/search/articles/components/StandardFormRow/index.less delete mode 100644 demo/src/pages/list/search/articles/components/StandardFormRow/index.tsx delete mode 100644 demo/src/pages/list/search/articles/components/TagSelect/index.less delete mode 100644 demo/src/pages/list/search/articles/components/TagSelect/index.tsx delete mode 100644 demo/src/pages/list/search/articles/data.d.ts delete mode 100644 demo/src/pages/list/search/articles/index.tsx delete mode 100644 demo/src/pages/list/search/articles/service.ts delete mode 100644 demo/src/pages/list/search/articles/style.less delete mode 100644 demo/src/pages/list/search/index.tsx delete mode 100644 demo/src/pages/list/search/projects/_mock.ts delete mode 100644 demo/src/pages/list/search/projects/components/AvatarList/index.less delete mode 100644 demo/src/pages/list/search/projects/components/AvatarList/index.tsx delete mode 100644 demo/src/pages/list/search/projects/components/StandardFormRow/index.less delete mode 100644 demo/src/pages/list/search/projects/components/StandardFormRow/index.tsx delete mode 100644 demo/src/pages/list/search/projects/components/TagSelect/index.less delete mode 100644 demo/src/pages/list/search/projects/components/TagSelect/index.tsx delete mode 100644 demo/src/pages/list/search/projects/data.d.ts delete mode 100644 demo/src/pages/list/search/projects/index.tsx delete mode 100644 demo/src/pages/list/search/projects/service.ts delete mode 100644 demo/src/pages/list/search/projects/style.less delete mode 100644 demo/src/pages/list/search/projects/utils/utils.less delete mode 100644 demo/src/pages/list/table-list/_mock.ts delete mode 100644 demo/src/pages/list/table-list/components/CreateForm.tsx delete mode 100644 demo/src/pages/list/table-list/components/UpdateForm.tsx delete mode 100644 demo/src/pages/list/table-list/data.d.ts delete mode 100644 demo/src/pages/list/table-list/index.tsx delete mode 100644 demo/src/pages/list/table-list/service.ts delete mode 100644 demo/src/pages/profile/advanced/_mock.ts delete mode 100644 demo/src/pages/profile/advanced/data.d.ts delete mode 100644 demo/src/pages/profile/advanced/index.tsx delete mode 100644 demo/src/pages/profile/advanced/service.ts delete mode 100644 demo/src/pages/profile/advanced/style.less delete mode 100644 demo/src/pages/profile/basic/_mock.ts delete mode 100644 demo/src/pages/profile/basic/data.d.ts delete mode 100644 demo/src/pages/profile/basic/index.tsx delete mode 100644 demo/src/pages/profile/basic/service.ts delete mode 100644 demo/src/pages/profile/basic/style.less delete mode 100644 demo/src/pages/result/fail/index.less delete mode 100644 demo/src/pages/result/fail/index.tsx delete mode 100644 demo/src/pages/result/success/index.less delete mode 100644 demo/src/pages/result/success/index.tsx delete mode 100644 demo/src/pages/user/Login/index.less delete mode 100644 demo/src/pages/user/Login/index.tsx delete mode 100644 demo/src/pages/user/register-result/index.tsx delete mode 100644 demo/src/pages/user/register-result/style.less delete mode 100644 demo/src/pages/user/register/_mock.ts delete mode 100644 demo/src/pages/user/register/index.tsx delete mode 100644 demo/src/pages/user/register/service.ts delete mode 100644 demo/src/pages/user/register/style.less delete mode 100644 demo/src/service-worker.js delete mode 100644 demo/src/services/ant-design-pro/api.ts delete mode 100644 demo/src/services/ant-design-pro/index.ts delete mode 100644 demo/src/services/ant-design-pro/login.ts delete mode 100644 demo/src/services/ant-design-pro/typings.d.ts delete mode 100644 demo/src/services/swagger/index.ts delete mode 100644 demo/src/services/swagger/pet.ts delete mode 100644 demo/src/services/swagger/store.ts delete mode 100644 demo/src/services/swagger/typings.d.ts delete mode 100644 demo/src/services/swagger/user.ts delete mode 100644 demo/src/typings.d.ts delete mode 100644 demo/tests/run-tests.js delete mode 100644 demo/tests/setupTests.js delete mode 100644 demo/tsconfig.json diff --git a/demo/.editorconfig b/demo/.editorconfig deleted file mode 100644 index 7e3649ac..00000000 --- a/demo/.editorconfig +++ /dev/null @@ -1,16 +0,0 @@ -# http://editorconfig.org -root = true - -[*] -indent_style = space -indent_size = 2 -end_of_line = lf -charset = utf-8 -trim_trailing_whitespace = true -insert_final_newline = true - -[*.md] -trim_trailing_whitespace = false - -[Makefile] -indent_style = tab diff --git a/demo/.eslintignore b/demo/.eslintignore deleted file mode 100644 index 8336e935..00000000 --- a/demo/.eslintignore +++ /dev/null @@ -1,8 +0,0 @@ -/lambda/ -/scripts -/config -.history -public -dist -.umi -mock \ No newline at end of file diff --git a/demo/.eslintrc.js b/demo/.eslintrc.js deleted file mode 100644 index b882c20e..00000000 --- a/demo/.eslintrc.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - extends: [require.resolve('@umijs/fabric/dist/eslint')], - globals: { - ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION: true, - page: true, - REACT_APP_ENV: true, - }, -}; diff --git a/demo/.gitignore b/demo/.gitignore deleted file mode 100644 index 21ab9fb7..00000000 --- a/demo/.gitignore +++ /dev/null @@ -1,40 +0,0 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -**/node_modules -# roadhog-api-doc ignore -/src/utils/request-temp.js -_roadhog-api-doc - -# production -/dist - -# misc -.DS_Store -npm-debug.log* -yarn-error.log - -/coverage -.idea -yarn.lock -package-lock.json -pnpm-lock.yaml -*bak - - -# visual studio code -.history -*.log -functions/* -.temp/** - -# umi -.umi -.umi-production - -# screenshot -screenshot -.firebase -.eslintcache - -build diff --git a/demo/.husky/.gitignore b/demo/.husky/.gitignore deleted file mode 100644 index 31354ec1..00000000 --- a/demo/.husky/.gitignore +++ /dev/null @@ -1 +0,0 @@ -_ diff --git a/demo/.husky/commit-msg b/demo/.husky/commit-msg deleted file mode 100755 index d50cdcf9..00000000 --- a/demo/.husky/commit-msg +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - -# Export Git hook params -export GIT_PARAMS=$* - -npx --no-install fabric verify-commit diff --git a/demo/.husky/pre-commit b/demo/.husky/pre-commit deleted file mode 100755 index d37daa07..00000000 --- a/demo/.husky/pre-commit +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - -npx --no-install lint-staged diff --git a/demo/.prettierignore b/demo/.prettierignore deleted file mode 100644 index d17efb44..00000000 --- a/demo/.prettierignore +++ /dev/null @@ -1,23 +0,0 @@ -**/*.svg -package.json -.umi -.umi-production -/dist -.dockerignore -.DS_Store -.eslintignore -*.png -*.toml -docker -.editorconfig -Dockerfile* -.gitignore -.prettierignore -LICENSE -.eslintcache -*.lock -yarn-error.log -.history -CNAME -/build -/public \ No newline at end of file diff --git a/demo/.prettierrc.js b/demo/.prettierrc.js deleted file mode 100644 index 7b597d78..00000000 --- a/demo/.prettierrc.js +++ /dev/null @@ -1,5 +0,0 @@ -const fabric = require('@umijs/fabric'); - -module.exports = { - ...fabric.prettier, -}; diff --git a/demo/.stylelintrc.js b/demo/.stylelintrc.js deleted file mode 100644 index a1184de4..00000000 --- a/demo/.stylelintrc.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - extends: [require.resolve('@umijs/fabric/dist/stylelint')], -}; diff --git a/demo/.vscode/extensions.json b/demo/.vscode/extensions.json deleted file mode 100644 index 33f300da..00000000 --- a/demo/.vscode/extensions.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "recommendations": [ - "esbenp.prettier-vscode", - "dbaeumer.vscode-eslint", - "stylelint.vscode-stylelint", - "wangzy.sneak-mark" - ] -} diff --git a/demo/.vscode/settings.json b/demo/.vscode/settings.json deleted file mode 100644 index a5d9d035..00000000 --- a/demo/.vscode/settings.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "editor.formatOnSave": true, - "prettier.requireConfig": true, - "editor.defaultFormatter": "esbenp.prettier-vscode" -} diff --git a/demo/README.md b/demo/README.md deleted file mode 100644 index 4c89a727..00000000 --- a/demo/README.md +++ /dev/null @@ -1,57 +0,0 @@ -# Ant Design Pro - -This project is initialized with [Ant Design Pro](https://pro.ant.design). Follow is the quick guide for how to use. - -## Environment Prepare - -Install `node_modules`: - -```bash -npm install -``` - -or - -```bash -yarn -``` - -## Provided Scripts - -Ant Design Pro provides some useful script to help you quick start and build with web project, code style check and test. - -Scripts provided in `package.json`. It's safe to modify or add additional script: - -### Start project - -```bash -npm start -``` - -### Build project - -```bash -npm run build -``` - -### Check code style - -```bash -npm run lint -``` - -You can also use script to auto fix some lint error: - -```bash -npm run lint:fix -``` - -### Test code - -```bash -npm test -``` - -## More - -You can view full document on our [official website](https://pro.ant.design). And welcome any feedback in our [github](https://github.com/ant-design/ant-design-pro). diff --git a/demo/config/config.dev.ts b/demo/config/config.dev.ts deleted file mode 100644 index ab0e590f..00000000 --- a/demo/config/config.dev.ts +++ /dev/null @@ -1,15 +0,0 @@ -// https://umijs.org/config/ -import { defineConfig } from 'umi'; - -export default defineConfig({ - plugins: [ - // https://github.com/zthxxx/react-dev-inspector - 'react-dev-inspector/plugins/umi/react-inspector', - ], - // https://github.com/zthxxx/react-dev-inspector#inspector-loader-props - inspectorConfig: { - exclude: [], - babelPlugins: [], - babelOptions: {}, - }, -}); diff --git a/demo/config/config.ts b/demo/config/config.ts deleted file mode 100644 index 21a024d2..00000000 --- a/demo/config/config.ts +++ /dev/null @@ -1,358 +0,0 @@ -// https://umijs.org/config/ -import { defineConfig } from 'umi'; -import { join } from 'path'; -import defaultSettings from './defaultSettings'; -import proxy from './proxy'; - -const { REACT_APP_ENV } = process.env; - -export default defineConfig({ - hash: true, - antd: {}, - dva: { - hmr: true, - }, - layout: { - // https://umijs.org/zh-CN/plugins/plugin-layout - locale: true, - siderWidth: 208, - ...defaultSettings, - }, - // https://umijs.org/zh-CN/plugins/plugin-locale - locale: { - // default zh-CN - default: 'zh-CN', - antd: true, - // default true, when it is true, will use `navigator.language` overwrite default - baseNavigator: true, - }, - dynamicImport: { - loading: '@ant-design/pro-layout/es/PageLoading', - }, - targets: { - ie: 11, - }, - // umi routes: https://umijs.org/docs/routing - routes: [ - { - path: '/user', - layout: false, - routes: [ - { - path: '/user/login', - layout: false, - name: 'login', - component: './user/Login', - }, - { - path: '/user', - redirect: '/user/login', - }, - { - name: 'register-result', - icon: 'smile', - path: '/user/register-result', - component: './user/register-result', - }, - { - name: 'register', - icon: 'smile', - path: '/user/register', - component: './user/register', - }, - { - component: '404', - }, - ], - }, - { - path: '/dashboard', - name: 'dashboard', - icon: 'dashboard', - routes: [ - { - path: '/dashboard', - redirect: '/dashboard/analysis', - }, - { - name: 'analysis', - icon: 'smile', - path: '/dashboard/analysis', - component: './dashboard/analysis', - }, - { - name: 'monitor', - icon: 'smile', - path: '/dashboard/monitor', - component: './dashboard/monitor', - }, - { - name: 'workplace', - icon: 'smile', - path: '/dashboard/workplace', - component: './dashboard/workplace', - }, - ], - }, - { - path: '/form', - icon: 'form', - name: 'form', - routes: [ - { - path: '/form', - redirect: '/form/basic-form', - }, - { - name: 'basic-form', - icon: 'smile', - path: '/form/basic-form', - component: './form/basic-form', - }, - { - name: 'step-form', - icon: 'smile', - path: '/form/step-form', - component: './form/step-form', - }, - { - name: 'advanced-form', - icon: 'smile', - path: '/form/advanced-form', - component: './form/advanced-form', - }, - ], - }, - { - path: '/list', - icon: 'table', - name: 'list', - routes: [ - { - path: '/list/search', - name: 'search-list', - component: './list/search', - routes: [ - { - path: '/list/search', - redirect: '/list/search/articles', - }, - { - name: 'articles', - icon: 'smile', - path: '/list/search/articles', - component: './list/search/articles', - }, - { - name: 'projects', - icon: 'smile', - path: '/list/search/projects', - component: './list/search/projects', - }, - { - name: 'applications', - icon: 'smile', - path: '/list/search/applications', - component: './list/search/applications', - }, - ], - }, - { - path: '/list', - redirect: '/list/table-list', - }, - { - name: 'table-list', - icon: 'smile', - path: '/list/table-list', - component: './list/table-list', - }, - { - name: 'basic-list', - icon: 'smile', - path: '/list/basic-list', - component: './list/basic-list', - }, - { - name: 'card-list', - icon: 'smile', - path: '/list/card-list', - component: './list/card-list', - }, - ], - }, - { - path: '/profile', - name: 'profile', - icon: 'profile', - routes: [ - { - path: '/profile', - redirect: '/profile/basic', - }, - { - name: 'basic', - icon: 'smile', - path: '/profile/basic', - component: './profile/basic', - }, - { - name: 'advanced', - icon: 'smile', - path: '/profile/advanced', - component: './profile/advanced', - }, - ], - }, - { - name: 'result', - icon: 'CheckCircleOutlined', - path: '/result', - routes: [ - { - path: '/result', - redirect: '/result/success', - }, - { - name: 'success', - icon: 'smile', - path: '/result/success', - component: './result/success', - }, - { - name: 'fail', - icon: 'smile', - path: '/result/fail', - component: './result/fail', - }, - ], - }, - { - name: 'exception', - icon: 'warning', - path: '/exception', - routes: [ - { - path: '/exception', - redirect: '/exception/403', - }, - { - name: '403', - icon: 'smile', - path: '/exception/403', - component: './exception/403', - }, - { - name: '404', - icon: 'smile', - path: '/exception/404', - component: './exception/404', - }, - { - name: '500', - icon: 'smile', - path: '/exception/500', - component: './exception/500', - }, - ], - }, - { - name: 'account', - icon: 'user', - path: '/account', - routes: [ - { - path: '/account', - redirect: '/account/center', - }, - { - name: 'center', - icon: 'smile', - path: '/account/center', - component: './account/center', - }, - { - name: 'settings', - icon: 'smile', - path: '/account/settings', - component: './account/settings', - }, - ], - }, - { - name: 'editor', - icon: 'highlight', - path: '/editor', - routes: [ - { - path: '/editor', - redirect: '/editor/flow', - }, - { - name: 'flow', - icon: 'smile', - path: '/editor/flow', - component: './editor/flow', - }, - { - name: 'mind', - icon: 'smile', - path: '/editor/mind', - component: './editor/mind', - }, - { - name: 'koni', - icon: 'smile', - path: '/editor/koni', - component: './editor/koni', - }, - ], - }, - { - path: '/', - redirect: '/dashboard/analysis', - }, - { - component: '404', - }, - ], - access: {}, - // Theme for antd: https://ant.design/docs/react/customize-theme-cn - theme: { - // 如果不想要 configProvide 动态设置主题需要把这个设置为 default - // 只有设置为 variable, 才能使用 configProvide 动态设置主色调 - // https://ant.design/docs/react/customize-theme-variable-cn - 'root-entry-name': 'variable', - }, - // esbuild is father build tools - // https://umijs.org/plugins/plugin-esbuild - esbuild: {}, - title: false, - ignoreMomentLocale: true, - proxy: proxy[REACT_APP_ENV || 'dev'], - manifest: { - basePath: '/', - }, - // Fast Refresh 热更新 - fastRefresh: {}, - openAPI: [ - { - requestLibPath: "import { request } from 'umi'", - // 或者使用在线的版本 - // schemaPath: "https://gw.alipayobjects.com/os/antfincdn/M%24jrzTTYJN/oneapi.json" - schemaPath: join(__dirname, 'oneapi.json'), - mock: false, - }, - { - requestLibPath: "import { request } from 'umi'", - schemaPath: 'https://gw.alipayobjects.com/os/antfincdn/CA1dOm%2631B/openapi.json', - projectName: 'swagger', - }, - ], - nodeModulesTransform: { - type: 'none', - }, - mfsu: {}, - webpack5: {}, - exportStatic: {}, -}); diff --git a/demo/config/defaultSettings.ts b/demo/config/defaultSettings.ts deleted file mode 100644 index 15397c6c..00000000 --- a/demo/config/defaultSettings.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Settings as LayoutSettings } from '@ant-design/pro-layout'; - -const Settings: LayoutSettings & { - pwa?: boolean; - logo?: string; -} = { - navTheme: 'light', - // 拂晓蓝 - primaryColor: '#1890ff', - layout: 'mix', - contentWidth: 'Fluid', - fixedHeader: false, - fixSiderbar: true, - colorWeak: false, - title: 'Ant Design Pro', - pwa: false, - logo: 'https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg', - iconfontUrl: '', -}; - -export default Settings; diff --git a/demo/config/oneapi.json b/demo/config/oneapi.json deleted file mode 100644 index c77d988b..00000000 --- a/demo/config/oneapi.json +++ /dev/null @@ -1,593 +0,0 @@ -{ - "openapi": "3.0.1", - "info": { - "title": "Ant Design Pro", - "version": "1.0.0" - }, - "servers": [ - { - "url": "http://localhost:8000/" - }, - { - "url": "https://localhost:8000/" - } - ], - "paths": { - "/api/currentUser": { - "get": { - "tags": ["api"], - "description": "获取当前的用户", - "operationId": "currentUser", - "responses": { - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CurrentUser" - } - } - } - }, - "401": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - }, - "x-swagger-router-controller": "api" - }, - "/api/login/captcha": { - "post": { - "description": "发送验证码", - "operationId": "getFakeCaptcha", - "tags": ["login"], - "parameters": [ - { - "name": "phone", - "in": "query", - "description": "手机号", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FakeCaptcha" - } - } - } - } - } - } - }, - "/api/login/outLogin": { - "post": { - "description": "登录接口", - "operationId": "outLogin", - "tags": ["login"], - "responses": { - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - }, - "401": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - }, - "x-swagger-router-controller": "api" - }, - "/api/login/account": { - "post": { - "tags": ["login"], - "description": "登录接口", - "operationId": "login", - "requestBody": { - "description": "登录系统", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/LoginParams" - } - } - }, - "required": true - }, - "responses": { - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/LoginResult" - } - } - } - }, - "401": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "x-codegen-request-body-name": "body" - }, - "x-swagger-router-controller": "api" - }, - "/api/notices": { - "summary": "getNotices", - "description": "NoticeIconItem", - "get": { - "tags": ["api"], - "operationId": "getNotices", - "responses": { - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NoticeIconList" - } - } - } - } - } - } - }, - "/api/rule": { - "get": { - "tags": ["rule"], - "description": "获取规则列表", - "operationId": "rule", - "parameters": [ - { - "name": "current", - "in": "query", - "description": "当前的页码", - "schema": { - "type": "number" - } - }, - { - "name": "pageSize", - "in": "query", - "description": "页面的容量", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RuleList" - } - } - } - }, - "401": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - }, - "post": { - "tags": ["rule"], - "description": "新建规则", - "operationId": "addRule", - "responses": { - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RuleListItem" - } - } - } - }, - "401": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - }, - "put": { - "tags": ["rule"], - "description": "新建规则", - "operationId": "updateRule", - "responses": { - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/RuleListItem" - } - } - } - }, - "401": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - }, - "delete": { - "tags": ["rule"], - "description": "删除规则", - "operationId": "removeRule", - "responses": { - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - }, - "401": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ErrorResponse" - } - } - } - } - } - }, - "x-swagger-router-controller": "api" - }, - "/swagger": { - "x-swagger-pipe": "swagger_raw" - } - }, - "components": { - "schemas": { - "CurrentUser": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "avatar": { - "type": "string" - }, - "userid": { - "type": "string" - }, - "email": { - "type": "string" - }, - "signature": { - "type": "string" - }, - "title": { - "type": "string" - }, - "group": { - "type": "string" - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "key": { - "type": "string" - }, - "label": { - "type": "string" - } - } - } - }, - "notifyCount": { - "type": "integer", - "format": "int32" - }, - "unreadCount": { - "type": "integer", - "format": "int32" - }, - "country": { - "type": "string" - }, - "access": { - "type": "string" - }, - "geographic": { - "type": "object", - "properties": { - "province": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "key": { - "type": "string" - } - } - }, - "city": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "key": { - "type": "string" - } - } - } - } - }, - "address": { - "type": "string" - }, - "phone": { - "type": "string" - } - } - }, - "LoginResult": { - "type": "object", - "properties": { - "status": { - "type": "string" - }, - "type": { - "type": "string" - }, - "currentAuthority": { - "type": "string" - } - } - }, - "PageParams": { - "type": "object", - "properties": { - "current": { - "type": "number" - }, - "pageSize": { - "type": "number" - } - } - }, - "RuleListItem": { - "type": "object", - "properties": { - "key": { - "type": "integer", - "format": "int32" - }, - "disabled": { - "type": "boolean" - }, - "href": { - "type": "string" - }, - "avatar": { - "type": "string" - }, - "name": { - "type": "string" - }, - "owner": { - "type": "string" - }, - "desc": { - "type": "string" - }, - "callNo": { - "type": "integer", - "format": "int32" - }, - "status": { - "type": "integer", - "format": "int32" - }, - "updatedAt": { - "type": "string", - "format": "datetime" - }, - "createdAt": { - "type": "string", - "format": "datetime" - }, - "progress": { - "type": "integer", - "format": "int32" - } - } - }, - "RuleList": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/RuleListItem" - } - }, - "total": { - "type": "integer", - "description": "列表的内容总数", - "format": "int32" - }, - "success": { - "type": "boolean" - } - } - }, - "FakeCaptcha": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "status": { - "type": "string" - } - } - }, - "LoginParams": { - "type": "object", - "properties": { - "username": { - "type": "string" - }, - "password": { - "type": "string" - }, - "autoLogin": { - "type": "boolean" - }, - "type": { - "type": "string" - } - } - }, - "ErrorResponse": { - "required": ["errorCode"], - "type": "object", - "properties": { - "errorCode": { - "type": "string", - "description": "业务约定的错误码" - }, - "errorMessage": { - "type": "string", - "description": "业务上的错误信息" - }, - "success": { - "type": "boolean", - "description": "业务上的请求是否成功" - } - } - }, - "NoticeIconList": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NoticeIconItem" - } - }, - "total": { - "type": "integer", - "description": "列表的内容总数", - "format": "int32" - }, - "success": { - "type": "boolean" - } - } - }, - "NoticeIconItemType": { - "title": "NoticeIconItemType", - "description": "已读未读列表的枚举", - "type": "string", - "properties": {}, - "enum": ["notification", "message", "event"] - }, - "NoticeIconItem": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "extra": { - "type": "string", - "format": "any" - }, - "key": { "type": "string" }, - "read": { - "type": "boolean" - }, - "avatar": { - "type": "string" - }, - "title": { - "type": "string" - }, - "status": { - "type": "string" - }, - "datetime": { - "type": "string", - "format": "date" - }, - "description": { - "type": "string" - }, - "type": { - "extensions": { - "x-is-enum": true - }, - "$ref": "#/components/schemas/NoticeIconItemType" - } - } - } - } - } -} diff --git a/demo/config/proxy.ts b/demo/config/proxy.ts deleted file mode 100644 index a8194b7e..00000000 --- a/demo/config/proxy.ts +++ /dev/null @@ -1,34 +0,0 @@ -/** - * 在生产环境 代理是无法生效的,所以这里没有生产环境的配置 - * ------------------------------- - * The agent cannot take effect in the production environment - * so there is no configuration of the production environment - * For details, please see - * https://pro.ant.design/docs/deploy - */ -export default { - dev: { - // localhost:8000/api/** -> https://preview.pro.ant.design/api/** - '/api/': { - // 要代理的地址 - target: 'https://preview.pro.ant.design', - // 配置了这个可以从 http 代理到 https - // 依赖 origin 的功能可能需要这个,比如 cookie - changeOrigin: true, - }, - }, - test: { - '/api/': { - target: 'https://proapi.azurewebsites.net', - changeOrigin: true, - pathRewrite: { '^': '' }, - }, - }, - pre: { - '/api/': { - target: 'your pre url', - changeOrigin: true, - pathRewrite: { '^': '' }, - }, - }, -}; diff --git a/demo/config/routes.ts b/demo/config/routes.ts deleted file mode 100644 index 92b61fbe..00000000 --- a/demo/config/routes.ts +++ /dev/null @@ -1,53 +0,0 @@ -export default [ - { - path: '/user', - layout: false, - routes: [ - { - name: 'login', - path: '/user/login', - component: './user/Login', - }, - { - component: './404', - }, - ], - }, - { - path: '/welcome', - name: 'welcome', - icon: 'smile', - component: './Welcome', - }, - { - path: '/admin', - name: 'admin', - icon: 'crown', - access: 'canAdmin', - component: './Admin', - routes: [ - { - path: '/admin/sub-page', - name: 'sub-page', - icon: 'smile', - component: './Welcome', - }, - { - component: './404', - }, - ], - }, - { - name: 'list.table-list', - icon: 'table', - path: '/list', - component: './TableList', - }, - { - path: '/', - redirect: '/welcome', - }, - { - component: './404', - }, -]; diff --git a/demo/jest.config.js b/demo/jest.config.js deleted file mode 100644 index 47295738..00000000 --- a/demo/jest.config.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - testURL: 'http://localhost:8000', - verbose: false, - extraSetupFiles: ['./tests/setupTests.js'], - globals: { - ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION: false, - localStorage: null, - }, -}; diff --git a/demo/jsconfig.json b/demo/jsconfig.json deleted file mode 100644 index 197bee5d..00000000 --- a/demo/jsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "jsx": "react-jsx", - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "baseUrl": ".", - "paths": { - "@/*": ["./src/*"] - } - } -} diff --git a/demo/mock/listTableList.ts b/demo/mock/listTableList.ts deleted file mode 100644 index 08ed86de..00000000 --- a/demo/mock/listTableList.ts +++ /dev/null @@ -1,174 +0,0 @@ -import { Request, Response } from 'express'; -import moment from 'moment'; -import { parse } from 'url'; - -// mock tableListDataSource -const genList = (current: number, pageSize: number) => { - const tableListDataSource: API.RuleListItem[] = []; - - for (let i = 0; i < pageSize; i += 1) { - const index = (current - 1) * 10 + i; - tableListDataSource.push({ - key: index, - disabled: i % 6 === 0, - href: 'https://ant.design', - avatar: [ - 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', - 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', - ][i % 2], - name: `TradeCode ${index}`, - owner: '曲丽丽', - desc: '这是一段描述', - callNo: Math.floor(Math.random() * 1000), - status: Math.floor(Math.random() * 10) % 4, - updatedAt: moment().format('YYYY-MM-DD'), - createdAt: moment().format('YYYY-MM-DD'), - progress: Math.ceil(Math.random() * 100), - }); - } - tableListDataSource.reverse(); - return tableListDataSource; -}; - -let tableListDataSource = genList(1, 100); - -function getRule(req: Request, res: Response, u: string) { - let realUrl = u; - if (!realUrl || Object.prototype.toString.call(realUrl) !== '[object String]') { - realUrl = req.url; - } - const { current = 1, pageSize = 10 } = req.query; - const params = parse(realUrl, true).query as unknown as API.PageParams & - API.RuleListItem & { - sorter: any; - filter: any; - }; - - let dataSource = [...tableListDataSource].slice( - ((current as number) - 1) * (pageSize as number), - (current as number) * (pageSize as number), - ); - if (params.sorter) { - const sorter = JSON.parse(params.sorter); - dataSource = dataSource.sort((prev, next) => { - let sortNumber = 0; - Object.keys(sorter).forEach((key) => { - if (sorter[key] === 'descend') { - if (prev[key] - next[key] > 0) { - sortNumber += -1; - } else { - sortNumber += 1; - } - return; - } - if (prev[key] - next[key] > 0) { - sortNumber += 1; - } else { - sortNumber += -1; - } - }); - return sortNumber; - }); - } - if (params.filter) { - const filter = JSON.parse(params.filter as any) as { - [key: string]: string[]; - }; - if (Object.keys(filter).length > 0) { - dataSource = dataSource.filter((item) => { - return Object.keys(filter).some((key) => { - if (!filter[key]) { - return true; - } - if (filter[key].includes(`${item[key]}`)) { - return true; - } - return false; - }); - }); - } - } - - if (params.name) { - dataSource = dataSource.filter((data) => data?.name?.includes(params.name || '')); - } - const result = { - data: dataSource, - total: tableListDataSource.length, - success: true, - pageSize, - current: parseInt(`${params.current}`, 10) || 1, - }; - - return res.json(result); -} - -function postRule(req: Request, res: Response, u: string, b: Request) { - let realUrl = u; - if (!realUrl || Object.prototype.toString.call(realUrl) !== '[object String]') { - realUrl = req.url; - } - - const body = (b && b.body) || req.body; - const { method, name, desc, key } = body; - - switch (method) { - /* eslint no-case-declarations:0 */ - case 'delete': - tableListDataSource = tableListDataSource.filter((item) => key.indexOf(item.key) === -1); - break; - case 'post': - (() => { - const i = Math.ceil(Math.random() * 10000); - const newRule: API.RuleListItem = { - key: tableListDataSource.length, - href: 'https://ant.design', - avatar: [ - 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', - 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', - ][i % 2], - name, - owner: '曲丽丽', - desc, - callNo: Math.floor(Math.random() * 1000), - status: Math.floor(Math.random() * 10) % 2, - updatedAt: moment().format('YYYY-MM-DD'), - createdAt: moment().format('YYYY-MM-DD'), - progress: Math.ceil(Math.random() * 100), - }; - tableListDataSource.unshift(newRule); - return res.json(newRule); - })(); - return; - - case 'update': - (() => { - let newRule = {}; - tableListDataSource = tableListDataSource.map((item) => { - if (item.key === key) { - newRule = { ...item, desc, name }; - return { ...item, desc, name }; - } - return item; - }); - return res.json(newRule); - })(); - return; - default: - break; - } - - const result = { - list: tableListDataSource, - pagination: { - total: tableListDataSource.length, - }, - }; - - res.json(result); -} - -export default { - 'GET /api/rule': getRule, - 'POST /api/rule': postRule, -}; diff --git a/demo/mock/notices.ts b/demo/mock/notices.ts deleted file mode 100644 index 732dd584..00000000 --- a/demo/mock/notices.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { Request, Response } from 'express'; - -const getNotices = (req: Request, res: Response) => { - res.json({ - data: [ - { - id: '000000001', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png', - title: '你收到了 14 份新周报', - datetime: '2017-08-09', - type: 'notification', - }, - { - id: '000000002', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png', - title: '你推荐的 曲妮妮 已通过第三轮面试', - datetime: '2017-08-08', - type: 'notification', - }, - { - id: '000000003', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/kISTdvpyTAhtGxpovNWd.png', - title: '这种模板可以区分多种通知类型', - datetime: '2017-08-07', - read: true, - type: 'notification', - }, - { - id: '000000004', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/GvqBnKhFgObvnSGkDsje.png', - title: '左侧图标用于区分不同的类型', - datetime: '2017-08-07', - type: 'notification', - }, - { - id: '000000005', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png', - title: '内容不要超过两行字,超出时自动截断', - datetime: '2017-08-07', - type: 'notification', - }, - { - id: '000000006', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg', - title: '曲丽丽 评论了你', - description: '描述信息描述信息描述信息', - datetime: '2017-08-07', - type: 'message', - clickClose: true, - }, - { - id: '000000007', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg', - title: '朱偏右 回复了你', - description: '这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像', - datetime: '2017-08-07', - type: 'message', - clickClose: true, - }, - { - id: '000000008', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/fcHMVNCjPOsbUGdEduuv.jpeg', - title: '标题', - description: '这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像', - datetime: '2017-08-07', - type: 'message', - clickClose: true, - }, - { - id: '000000009', - title: '任务名称', - description: '任务需要在 2017-01-12 20:00 前启动', - extra: '未开始', - status: 'todo', - type: 'event', - }, - { - id: '000000010', - title: '第三方紧急代码变更', - description: '冠霖提交于 2017-01-06,需在 2017-01-07 前完成代码变更任务', - extra: '马上到期', - status: 'urgent', - type: 'event', - }, - { - id: '000000011', - title: '信息安全考试', - description: '指派竹尔于 2017-01-09 前完成更新并发布', - extra: '已耗时 8 天', - status: 'doing', - type: 'event', - }, - { - id: '000000012', - title: 'ABCD 版本发布', - description: '冠霖提交于 2017-01-06,需在 2017-01-07 前完成代码变更任务', - extra: '进行中', - status: 'processing', - type: 'event', - }, - ], - }); -}; - -export default { - 'GET /api/notices': getNotices, -}; diff --git a/demo/mock/route.ts b/demo/mock/route.ts deleted file mode 100644 index 418d10f1..00000000 --- a/demo/mock/route.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - '/api/auth_routes': { - '/form/advanced-form': { authority: ['admin', 'user'] }, - }, -}; diff --git a/demo/mock/user.ts b/demo/mock/user.ts deleted file mode 100644 index 75edd340..00000000 --- a/demo/mock/user.ts +++ /dev/null @@ -1,203 +0,0 @@ -import { Request, Response } from 'express'; - -const waitTime = (time: number = 100) => { - return new Promise((resolve) => { - setTimeout(() => { - resolve(true); - }, time); - }); -}; - -async function getFakeCaptcha(req: Request, res: Response) { - await waitTime(2000); - return res.json('captcha-xxx'); -} - -const { ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION } = process.env; - -/** - * 当前用户的权限,如果为空代表没登录 - * current user access, if is '', user need login - * 如果是 pro 的预览,默认是有权限的 - */ -let access = ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION === 'site' ? 'admin' : ''; - -const getAccess = () => { - return access; -}; - -// 代码中会兼容本地 service mock 以及部署站点的静态数据 -export default { - // 支持值为 Object 和 Array - 'GET /api/currentUser': (req: Request, res: Response) => { - if (!getAccess()) { - res.status(401).send({ - data: { - isLogin: false, - }, - errorCode: '401', - errorMessage: '请先登录!', - success: true, - }); - return; - } - res.send({ - success: true, - data: { - name: 'Serati Ma', - avatar: 'https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png', - userid: '00000001', - email: 'antdesign@alipay.com', - signature: '海纳百川,有容乃大', - title: '交互专家', - group: '蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED', - tags: [ - { - key: '0', - label: '很有想法的', - }, - { - key: '1', - label: '专注设计', - }, - { - key: '2', - label: '辣~', - }, - { - key: '3', - label: '大长腿', - }, - { - key: '4', - label: '川妹子', - }, - { - key: '5', - label: '海纳百川', - }, - ], - notifyCount: 12, - unreadCount: 11, - country: 'China', - access: getAccess(), - geographic: { - province: { - label: '浙江省', - key: '330000', - }, - city: { - label: '杭州市', - key: '330100', - }, - }, - address: '西湖区工专路 77 号', - phone: '0752-268888888', - }, - }); - }, - // GET POST 可省略 - 'GET /api/users': [ - { - key: '1', - name: 'John Brown', - age: 32, - address: 'New York No. 1 Lake Park', - }, - { - key: '2', - name: 'Jim Green', - age: 42, - address: 'London No. 1 Lake Park', - }, - { - key: '3', - name: 'Joe Black', - age: 32, - address: 'Sidney No. 1 Lake Park', - }, - ], - 'POST /api/login/account': async (req: Request, res: Response) => { - const { password, username, type } = req.body; - await waitTime(2000); - if (password === 'ant.design' && username === 'admin') { - res.send({ - status: 'ok', - type, - currentAuthority: 'admin', - }); - access = 'admin'; - return; - } - if (password === 'ant.design' && username === 'user') { - res.send({ - status: 'ok', - type, - currentAuthority: 'user', - }); - access = 'user'; - return; - } - if (type === 'mobile') { - res.send({ - status: 'ok', - type, - currentAuthority: 'admin', - }); - access = 'admin'; - return; - } - - res.send({ - status: 'error', - type, - currentAuthority: 'guest', - }); - access = 'guest'; - }, - 'POST /api/login/outLogin': (req: Request, res: Response) => { - access = ''; - res.send({ data: {}, success: true }); - }, - 'POST /api/register': (req: Request, res: Response) => { - res.send({ status: 'ok', currentAuthority: 'user', success: true }); - }, - 'GET /api/500': (req: Request, res: Response) => { - res.status(500).send({ - timestamp: 1513932555104, - status: 500, - error: 'error', - message: 'error', - path: '/base/category/list', - }); - }, - 'GET /api/404': (req: Request, res: Response) => { - res.status(404).send({ - timestamp: 1513932643431, - status: 404, - error: 'Not Found', - message: 'No message available', - path: '/base/category/list/2121212', - }); - }, - 'GET /api/403': (req: Request, res: Response) => { - res.status(403).send({ - timestamp: 1513932555104, - status: 403, - error: 'Forbidden', - message: 'Forbidden', - path: '/base/category/list', - }); - }, - 'GET /api/401': (req: Request, res: Response) => { - res.status(401).send({ - timestamp: 1513932555104, - status: 401, - error: 'Unauthorized', - message: 'Unauthorized', - path: '/base/category/list', - }); - }, - - 'GET /api/login/captcha': getFakeCaptcha, -}; diff --git a/demo/package.json b/demo/package.json deleted file mode 100644 index b4f1b8d7..00000000 --- a/demo/package.json +++ /dev/null @@ -1,113 +0,0 @@ -{ - "name": "ant-design-pro", - "version": "5.2.0", - "private": true, - "description": "An out-of-box UI solution for enterprise applications", - "scripts": { - "analyze": "cross-env ANALYZE=1 umi build", - "build": "umi build", - "deploy": "npm run build && npm run gh-pages", - "dev": "npm run start:dev", - "gh-pages": "gh-pages -d dist", - "i18n-remove": "pro i18n-remove --locale=zh-CN --write", - "postinstall": "umi g tmp", - "lint": "umi g tmp && npm run lint:js && npm run lint:style && npm run lint:prettier && npm run tsc", - "lint-staged": "lint-staged", - "lint-staged:js": "eslint --ext .js,.jsx,.ts,.tsx ", - "lint:fix": "eslint --fix --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src && npm run lint:style", - "lint:js": "eslint --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src", - "lint:prettier": "prettier -c --write \"src/**/*\" --end-of-line auto", - "lint:style": "stylelint --fix \"src/**/*.less\" --syntax less", - "openapi": "umi openapi", - "playwright": "playwright install && playwright test", - "prepare": "husky install", - "prettier": "prettier -c --write \"src/**/*\"", - "serve": "umi-serve", - "start": "cross-env UMI_ENV=dev umi dev", - "start:dev": "cross-env REACT_APP_ENV=dev MOCK=none UMI_ENV=dev umi dev", - "start:no-mock": "cross-env MOCK=none UMI_ENV=dev umi dev", - "start:no-ui": "cross-env UMI_UI=none UMI_ENV=dev umi dev", - "start:pre": "cross-env REACT_APP_ENV=pre UMI_ENV=dev umi dev", - "start:test": "cross-env REACT_APP_ENV=test MOCK=none UMI_ENV=dev umi dev", - "test": "umi test", - "test:component": "umi test ./src/components", - "test:e2e": "node ./tests/run-tests.js", - "tsc": "tsc --noEmit" - }, - "lint-staged": { - "**/*.less": "stylelint --syntax less", - "**/*.{js,jsx,ts,tsx}": "npm run lint-staged:js", - "**/*.{js,jsx,tsx,ts,less,md,json}": ["prettier --write"] - }, - "browserslist": ["> 1%", "last 2 versions", "not ie <= 10"], - "dependencies": { - "@ant-design/charts": "^0.9.4", - "@ant-design/icons": "^4.7.0", - "@ant-design/pro-card": "^1.19.0", - "@ant-design/pro-descriptions": "^1.10.0", - "@ant-design/pro-form": "^1.64.0", - "@ant-design/pro-layout": "^6.35.0", - "@ant-design/pro-table": "^2.71.0", - "@antv/data-set": "^0.11.0", - "@antv/l7": "^2.3.7", - "@antv/l7-maps": "^2.3.7", - "@antv/l7-react": "^2.1.9", - "@umijs/route-utils": "^2.0.0", - "ahooks": "^2.0.0", - "antd": "^4.19.0", - "bizcharts": "^3.5.3-beta.0", - "bizcharts-plugin-slider": "^2.1.1-beta.1", - "classnames": "^2.3.0", - "gg-editor": "^2.0.2", - "lodash": "^4.17.0", - "lodash-decorators": "^6.0.0", - "moment": "^2.29.0", - "numeral": "^2.0.6", - "nzh": "^1.0.3", - "omit.js": "^2.0.2", - "rc-menu": "^9.1.0", - "rc-util": "^5.16.0", - "react": "^17.0.0", - "react-dev-inspector": "^1.7.0", - "react-dom": "^17.0.0", - "react-fittext": "^1.0.0", - "react-helmet-async": "^1.2.0", - "react-router": "^4.3.1", - "umi": "^3.5.0", - "umi-serve": "^1.9.10" - }, - "devDependencies": { - "@ant-design/pro-cli": "^2.1.0", - "@playwright/test": "^1.17.0", - "@types/express": "^4.17.0", - "@types/history": "^4.7.0", - "@types/jest": "^26.0.0", - "@types/lodash": "^4.14.0", - "@types/react": "^17.0.0", - "@types/react-dom": "^17.0.0", - "@types/react-helmet": "^6.1.0", - "@umijs/fabric": "^2.8.0", - "@umijs/openapi": "^1.3.0", - "@umijs/plugin-blocks": "^2.2.0", - "@umijs/plugin-esbuild": "^1.4.0", - "@umijs/plugin-openapi": "^1.3.0", - "@umijs/preset-ant-design-pro": "^1.3.0", - "@umijs/preset-dumi": "^1.1.0", - "@umijs/preset-react": "^2.1.0", - "cross-env": "^7.0.0", - "cross-port-killer": "^1.3.0", - "detect-installer": "^1.0.0", - "eslint": "^7.32.0", - "gh-pages": "^3.2.0", - "husky": "^7.0.4", - "jsdom-global": "^3.0.0", - "lint-staged": "^10.0.0", - "mockjs": "^1.1.0", - "prettier": "^2.5.0", - "stylelint": "^13.0.0", - "swagger-ui-react": "^3.52.0", - "typescript": "^4.5.0", - "umi-serve": "^1.9.10" - }, - "engines": { "node": ">=12.0.0" } -} diff --git a/demo/playwright.config.ts b/demo/playwright.config.ts deleted file mode 100644 index ec1b31db..00000000 --- a/demo/playwright.config.ts +++ /dev/null @@ -1,22 +0,0 @@ -// playwright.config.ts -import type { PlaywrightTestConfig } from '@playwright/test'; -import { devices } from '@playwright/test'; - -const config: PlaywrightTestConfig = { - forbidOnly: !!process.env.CI, - retries: process.env.CI ? 2 : 0, - use: { - trace: 'on-first-retry', - }, - projects: [ - { - name: 'chromium', - use: { ...devices['Desktop Chrome'] }, - }, - { - name: 'firefox', - use: { ...devices['Desktop Firefox'] }, - }, - ], -}; -export default config; diff --git a/demo/public/CNAME b/demo/public/CNAME deleted file mode 100644 index 30c2d4d3..00000000 --- a/demo/public/CNAME +++ /dev/null @@ -1 +0,0 @@ -preview.pro.ant.design \ No newline at end of file diff --git a/demo/public/favicon.ico b/demo/public/favicon.ico deleted file mode 100644 index e2e93252988b5bed120ddeb168eb577bf0caa881..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmeHLO(?8k6#ga#Gs=ufvobTd=q@y~nOLdYlqL%nQY4WqC`)z}3y~cqOAAF4VkQd~ z^3$wrC}~D1l%!eMp!|gA&U5sN?~b{2>)yNg-s#Lc-+9k_p7Y<=XqqYcDJs(Vt%dBG z=F~Lpdy*pd!Y zozZT}udJ-#| zqiAVq0sT@kAMMobbULxOw+F6{j*egO8CQ?TgTuo^+}_@zrlv;l$*-)e#PRVl?(Xgo zi9`?zg>ZFsh0DuJ)Ya9!von7LPN@OfP9IfH_4tet&&I~a#O{TK1<3*LO-xJ( zZ*Fc5%v&m4#Z&mZySs8{XJ-fV^Yh@{p`ju8d_J)w6+U%`!(qAC+uJK~qg_o+O|QC` zTVg0Y{jSHqzP^^&G0t4^cwF+$`egj?@9$AtTMLuPB>7!lUKY8&zP?xd=H_PM(U;HS ztNi!(_oJes0<5X6tu4{BxVR{FO)_x3UauFkv$I%RTSHe@7dAIHF+4mhc?|>t(!XbCXVQZk z8yje7Xh2R*&WCwdw&?N4$H!4$Uyq)i9_;V$3;y)^-LKhmkv{Z#(CP^-7Wn# zI5-H>z`y`nTU%u=f7Tbh-mg5fPT0G8`Wx6^vD1(>-r0;AFlyjWYC!!D@UQlt)%}4^ diff --git a/demo/public/icons/icon-128x128.png b/demo/public/icons/icon-128x128.png deleted file mode 100644 index 48d0e2339a60a637b94319c65e8654289b4f4b6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1329 zcmV-11C0002qP)t-s01zMl z|Nj6D8~_Fu01Fxg6ePmN$p8o!Wo~x>2^n*Hg!uURG(b#MUupdO{0J2!4IC;FATIs> z{@dN(0umtr1r+b_@!;a*CNn?_87S=S?pR`MN>yMYFg?=M*UQe)wYk2qw7Hs~re<$= zUubdX=<2(_!=9w6l9``_ijrw^dn`Fc6(TV7_4V=c^R2SBrmV4+ouiMHoQsl~euj;D zf{I&ZZXPQ+87DQ^+ugv!$3;(CLQPmWL{HY)+rGlaqNuHRe}`^&fKXdyK1x+FK1#;P z&4`be_4fDTmuWjt2mKnbI+d3dfa z_PK3Vs;zn;Ot~u#==o*X;a^nmOa{(_o(tmupuw*`!> z#lUp|BbBD0;J$!S0To9DO4Z9XkCjq#?=s{WNE{XLCFmLibLLfxLm3nt7Wj-&k{L;X zo_Y$L6(Ax^@lhJo2uNHK09we3_>jt`DV`HX8L^}WDJO|ULbS4T1b_}iycq`oGqNH4 zQJi@^@H`%ly#;k8%FIH(J#9^VH>(ITJX3)9M7)?mVD;pNM){2bV!rABC{yFeZXJ$q ztx`Yw*~Rj#FGR_Att-g zD?cOlXM^rD8S|s+a(LB7MePP8cKc zywqQW@o0gm8Qu`-)UW-9#K*uQ5WQT5&CGnc%phPyF4p1{wj=@#5xikX3uI#(QrZ2A z66>Nxz+a;r*Km#iEGXxR4BFJu%9#^UG{?XqFlA~7sH!J&2X_C6*P7#50#^tYfm`)p zW2Pupno-5;QoKQ)pCj;SS_MKc4Ai#W7h-YyLi$8b7l@8b3KjwX8wCk}6<4mh7hj6_ z@bnBUa)|InAVBSV)+C{3Cf$?e`b2@nQysp0$(swOoN^Eg(SO9p-Q1JJAAwzQCMaKm&bGV`U^9&pp0Gf^+nkRf5 zTo3@>xi{%p{gIpTF5iJBic@aIws^IC=-v{M~W@Y%aj8G0o!r2b|HdROb8D$LP+n;FWCW`~3a=G(k;6PFes57kh(>00a~S6Cwx} zCE()Z^7Hf|E zp{K0H$jr97ziM-QXK;BCA1!ozgl>0$_4f8XNmSCn^FkCmKwfQVshbU{p46e2L| z?Ct65?BnI;*4f+4&(glZ#fXoVgo~3^UusNOVjC$ov9`LWtg%K>TsK2c$;{8e#mKwA z!>qBksjjnFVr-b6q?4MUQCw!>t&JT300tCEL_t(|+U?tESK2@nfZ>~&tE5s!683!u zK~Xjr+;FLD`~QDWsaSMof{9Cdrsv$}Q$GacB{NB8tUw4Mgb+dqA%qY@2qA(L2bqdsgXsNTkuvsd$l2J=n5?~ND zV51VpX8=z3{QjGMB}&;~4lO{w(%Zazp$0@daWIEhfP~dcYQd#z&@Au`02`W0K*FSZ zfqww-)R9s!Ht2yOKmf3z60nW%2IP#}oH2Xl0XAm~+{S+rP&t$X9^nbbm-x&1;@!yj zY%9B7sWA>ZWO1jKtCah(e))TD=Eenv9so{D4rn_thqYd2VK|ELzaOufx!t$^NZw>p z+Iyj>U-gQu^kN;GPyD#d{Hh5IJ3uJYc+Z77Ufo$Ggo+WA3Y*@1Ky13)LZP31QSeOBPQ+XWH1FRE< znBBKzO$T4zWLDa@R>>EuJj^qYQEmht0qwfj(!SqQ@iKSEQ|m2>2OGl+_^GUFJOcJ= zXWHkFZpC2%v9sp4{dDSJXp{It8QP8>kQnV+s>T(A1*ey{eEoDWoB-?=l!qbE1M&?^ zlg>TQVZNQW0vG^>5+Gs?WoT;w-lorADbq%mw`k7}=L`%i*#i$2a3L12&mCI9?2mZ} z0W6}7?qr1p3pjZ?4xKwIs2_Fw@&LQuwzS(*uz)OwIWgMMHdb!T{tPE4SL`S{H8xBn!v4)5iQu&kynG zu&g>v%A749U2|<^9&fVG1>_^~CFZ7LP5t_J?7+%^=uNif%+;?)oeFwB$`&F5UWnO^ z@}M}gKew%NvbE6ZWlDEPmWMOGGN93O87@!W;veOx{0)tnve;1G63u~Z#6xV7>iY035`Xj%Y> z^Q5IJ+!Y6p_dlYRYQ(^}0Dwm;s0$Yi48Tdj3g$4vO$-3uKeU2KKGd0O0O0VXbm7s4;+l9&n%p_`cvI z?LB&meH%ahXIS9}0Jn2n$9YS(u{W#$gO9RPz0KE#GlYO}vMs$dg#n^%CpUU*6%xDq zjs0(lqaT-@s*4=qi*zHU+H4m-VgiXywKHFAtzxV0RWJzsovKI0FJxD0TBWR9R(cUae(Kj zsHF%%MItH28Xp(4*{bSm0T9Fm0Q3xia~uV&0pKeFz=jn7(rEx(_sVL}lf@aG=xQ21 z0F-Q4EcX2Td}n9x&+_W8>Dj@bW1Zc-_04UCC6!U}srDWLO4_FE!gBaD92g8{VR7ke zeM?AW92o=O(D2yXclnR)y=d4(E-o&bT05P*g06FjUtV6efBWI#2OS@uWaJd^OFd|4 zX;(M2f>E+f{F>2!?AX@%T}(mq>gp=@<7Y-5siUJ~-_R&H)yX)dzBXt+ zw3(irC-{#uAUx*V_rCAF0|y6(^qk`23R+NfVtI9aeo@&CE(t4VpY6XpJmUB8uHDiy zwv9=Ab9i`ka&k&{ODsM)GxBB9kG{dJ?Y|`SJP2xb|L_=>Cn3tZ=GbsG#NjrD{p8lZ+I*;#ZnN-&`)3V#iUD zMPI6J3dwTaR#efm@D7ZSx~Kc$)0fQLLZ9GgMwTwT5=zbJZ|@6AUcO3G4f|Pz+YOkF zhRS^y7A`o43kXqaS`P?+li?F^ab$DRnFBz%pmtx;FkotX)-fdI0SkIBo$3`kjGW}D zZoDeqLtS3Q2M@@N^6~Cb6R{D+s3aFqxA6=o*eHod92P`F`24wEin51>RC@xG+Cw7; zO)`T9mP{{KyOZ{F0<#_c5Bhd4GTu4*uXH<{{3_)6x4r)lr){`JohSKG%?$A}zhMc= zW|@O)q8WsJQ6EdzmKROG;U@_#(HhDuk8bo;Ho`*6l-2u9HLE*dOv$E=6gvnZLNCqP zprds6w}?9hZO+b`b-ggB&>$s;nRQSt|AE@)FA7Ls_I33&;P}~m=VyWbcR}f(OIN21 zGvpB_DYkJ<3MQsNhOEYodj;5({(pE0$4P!F$)xqVIwo83~69g=48RK+49na7Q(C zC7>Jw*DbzEje?QUe|LGt3nX|7Uz)%oP2zR&b4Op@R)(SMB<|5c3@$a63w&>G*}*

    *C7T$?5!b= z&nPVm(<;~Sw_*kJlio|*qhI8#F?9y#@jvQ4Y?j2~r_a^)YoQ-co4WFOwF)i5mFnrV zp3rz^`K|nrI`guQ$X^%JuCI5qSS(}Tc|%+~o}P6dC={o1Q&<)3lnFnXE=l2Po$K4W zYZ0|2<3Cp|&)NE>;p=Muwg#BLXuboTJ(mwtjLbtdOE_A4n^}l29p9@>4vpS+t*^qG zb2Uo-W$@vKeR}iztf6tJTUh8=^kh_EBe^3f?1b(p_oBq&dpqW$pAyBB**bIt4BhwK zX02JE@mc}FExq0q+5_8B#EP&@;6-lx4t~)@$HBEBXnIqX0E$mhb$(} zt|vYUzekLn0SQ;Cd)J1 zXF3gv$u52+$>oQVvh7DxPpKeWD4yJgdWQQ`D#($Z=j%Df!iAxvR)-y7Ie5nI39+zG z4a3_4mE;SBh@MK8p%(n|yGj>Ao>j51ETLI#vuUt#g|%FDZG}&kbEb(|*9!RyL&U?| zvNnv+oEL_*R{Mw_;x+O`vNWUXL6>@M)sQr_lmlng7?sCaDH0YaGf%+R1ZM}9#$j$3 zi}N01^7uoRgvG74Fxi{415}={tg=gDHuqwR$1?9qlK<#~ zLG@an>_SlEY6+k8PD+S)C&NU7!~`$+Sin{JS2aLn_Jm#q|8H%OnLqt&n-f~C7KW9K z>QxTE1D!cV+(E>-8N#r>Aw98T*8=odDM_y2&?=ag7-=Rj&p%xvU zq=o{%T2@T(b@VqinV#`~IN4t3^z$HE=3~ZiDQ=xP6Gt)g;q1Wv2N&CBx=Ndw5 z6U*fS@;@VBF^MGsyag~+Eq&2UZ@5SG$!SM2ckBL!E1lBg>*t^{Lqn=cK^-Rhc#S(% zuAqbI(^+PqN#)t&5xr~v&*Y$qZ$3Yz)nRe`ZZcJUU8hd=)9$7 z6n-k7p||Esq}igp(IoxtD&_5A!OwcTvM3p-HHJGcVh|>N13O;!W%RXd{Y6@BEp1Jz zHCH!~H~lR%<3E0b>}>_dD6Ef8r_)LSp}O5L`DerkKk|Jc@n6*BmU&r@TKhG$-x=>`wv*Vj%M=6<7!P7~3+)?^D>AA~&^F+{mzBAMLh zuTiItS}IqcPpj-t;W15ahnBV9rHnrShN-@GCY+EyXV6Gass&4cM~^;F?z{3+SXKe7 zX8rBU7Fc!Kr5M!K@lDd)Bl)VMR)yb6;AHxpH?Q1Bx14XQy~`&ggyC$4u>az;q|C7G ziTI-A3y9BZbxP7rW4_G!ju{^(NOZstl}tvVR+j8_B`~)2cWn2~;amI9u@_9oSC+Xc z_+DcYbc7S~MIl7Fjk6qEWXDo6>n5U0O4P_k15Z^c%P@0?*Oaj8%BIU*uy|Vgi@eqH zPKZqrW$wXWQ9=QoQrY4VBCFzACRJhEv+U(FOmx1_uwVirtukLVbyF&%?xKU6D>Yot zj6ZW-1$@|ASwJlAu1;!K9!5uPdov-?7RK^;L%bs%6z9abcvP!i20^{1|g}`{&O=}R+#D;J+z#Fj(x6k%xY0!5_DrzSsTCn;pu^6 zIZV~_c4b?yxFutJZTc`BT4+(N21dx%Bxx5_=*+^Gl`PCmvS7QnNZUr>RqS>smtAo7 z%1fV4h6YI+Y2X$?ZuQmeFj!XWfPJxAc1<0;;3C|?V?=BITB{AnSkYW;+Vbas9ODwo zC?uf|l|KjLdt@iP*&!CGbh&OT1l3&s3RD|7knGOc{T%o)WLqmqSnTE5-M^OKN+8ct1C(XwQJJg%OozV)cJ^w# zVxbg~z7OMwn+eEPaBRR0KIDX14Kb^G-Strc8r6QmoINnF;F1;|U5n3%rdT9(U0dcP zI*}ZU>2wFp1u1KmK2cwSwk|=oZ8?l*@yIPBD3BPN(BINzFh#VAKBpVxZ71*JgwpWXLZfS%KkGa_tQn0bX5)h8 z6Q7LGdb=)NQ}a}>SD{8~!ga|bE*aS_Nxg_+ojhQ1{b@sVzaX)Z{rV-1%Qa*ioSy65 zb4ke$#&Mf>xuBg{&aCGNbhbOGbN4XT4?qQpRW^!2z;9eCH6fH7)+qpWe;n~*tCIq= z&w&jc@_tBWRiS3IyovPwt~fl#1Z-%o%T_B%)sO*FrOIkz-1r$#mr+&N2J06a?u1<~QB}EoR?wnU)c32Ew0(EP^w=K@< zM;7MeoWTwa-$09MwD#{-p5K@kGTM6q@*9`~NBz#snAQt$W%fZr`qk|A%IEM4|B(?x zOpx+g1-*Q?a%JHpKf|Cs>MCBj^^EmKDb?*U1(_uF({whek67oi^wL)^XH3=`&u$U^ z*K&AEIc$ISs)O2r7emK9XW_i^6Jxw-Ug6tIn{3gqAYG+j_U1<)>HovW7l7Z>STIh4 z7OH$pfQM^<6ZPN`%FY^PFKzq89tYsIi0BGroup 28 Copy 5Created with Sketch. \ No newline at end of file diff --git a/demo/public/pro_icon.svg b/demo/public/pro_icon.svg deleted file mode 100644 index e075b78d..00000000 --- a/demo/public/pro_icon.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/demo/src/access.ts b/demo/src/access.ts deleted file mode 100644 index e823e24b..00000000 --- a/demo/src/access.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * @see https://umijs.org/zh-CN/plugins/plugin-access - * */ -export default function access(initialState: { currentUser?: API.CurrentUser } | undefined) { - const { currentUser } = initialState ?? {}; - return { - canAdmin: currentUser && currentUser.access === 'admin', - }; -} diff --git a/demo/src/app.tsx b/demo/src/app.tsx deleted file mode 100644 index 58571014..00000000 --- a/demo/src/app.tsx +++ /dev/null @@ -1,108 +0,0 @@ -import type { Settings as LayoutSettings } from '@ant-design/pro-layout'; -import { SettingDrawer } from '@ant-design/pro-layout'; -import { PageLoading } from '@ant-design/pro-layout'; -import type { RunTimeLayoutConfig } from 'umi'; -import { history, Link } from 'umi'; -import RightContent from '@/components/RightContent'; -import Footer from '@/components/Footer'; -import { currentUser as queryCurrentUser } from './services/ant-design-pro/api'; -import { BookOutlined, LinkOutlined } from '@ant-design/icons'; -import defaultSettings from '../config/defaultSettings'; - -const isDev = process.env.NODE_ENV === 'development'; -const loginPath = '/user/login'; - -/** 获取用户信息比较慢的时候会展示一个 loading */ -export const initialStateConfig = { - loading: , -}; - -/** - * @see https://umijs.org/zh-CN/plugins/plugin-initial-state - * */ -export async function getInitialState(): Promise<{ - settings?: Partial; - currentUser?: API.CurrentUser; - loading?: boolean; - fetchUserInfo?: () => Promise; -}> { - const fetchUserInfo = async () => { - try { - const msg = await queryCurrentUser(); - return msg.data; - } catch (error) { - history.push(loginPath); - } - return undefined; - }; - // 如果不是登录页面,执行 - if (history.location.pathname !== loginPath) { - const currentUser = await fetchUserInfo(); - return { - fetchUserInfo, - currentUser, - settings: defaultSettings, - }; - } - return { - fetchUserInfo, - settings: defaultSettings, - }; -} - -// ProLayout 支持的api https://procomponents.ant.design/components/layout -export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) => { - return { - rightContentRender: () => , - disableContentMargin: false, - waterMarkProps: { - content: initialState?.currentUser?.name, - }, - footerRender: () =>

    , - onPageChange: () => { - const { location } = history; - // 如果没有登录,重定向到 login - if (!initialState?.currentUser && location.pathname !== loginPath) { - history.push(loginPath); - } - }, - links: isDev - ? [ - - - OpenAPI 文档 - , - - - 业务组件文档 - , - ] - : [], - menuHeaderRender: undefined, - // 自定义 403 页面 - // unAccessible:
    unAccessible
    , - // 增加一个 loading 的状态 - childrenRender: (children, props) => { - // if (initialState?.loading) return ; - return ( - <> - {children} - {!props.location?.pathname?.includes('/login') && ( - { - setInitialState((preInitialState) => ({ - ...preInitialState, - settings, - })); - }} - /> - )} - - ); - }, - ...initialState?.settings, - }; -}; diff --git a/demo/src/components/Footer/index.tsx b/demo/src/components/Footer/index.tsx deleted file mode 100644 index 4336de96..00000000 --- a/demo/src/components/Footer/index.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { useIntl } from 'umi'; -import { GithubOutlined } from '@ant-design/icons'; -import { DefaultFooter } from '@ant-design/pro-layout'; - -const Footer: React.FC = () => { - const intl = useIntl(); - const defaultMessage = intl.formatMessage({ - id: 'app.copyright.produced', - defaultMessage: '蚂蚁集团体验技术部出品', - }); - - const currentYear = new Date().getFullYear(); - - return ( - , - href: 'https://github.com/ant-design/ant-design-pro', - blankTarget: true, - }, - { - key: 'Ant Design', - title: 'Ant Design', - href: 'https://ant.design', - blankTarget: true, - }, - ]} - /> - ); -}; - -export default Footer; diff --git a/demo/src/components/HeaderDropdown/index.less b/demo/src/components/HeaderDropdown/index.less deleted file mode 100644 index f583513f..00000000 --- a/demo/src/components/HeaderDropdown/index.less +++ /dev/null @@ -1,16 +0,0 @@ -@import (reference) '~antd/es/style/themes/index'; - -.container > * { - background-color: @popover-bg; - border-radius: 4px; - box-shadow: @shadow-1-down; -} - -@media screen and (max-width: @screen-xs) { - .container { - width: 100% !important; - } - .container > * { - border-radius: 0 !important; - } -} diff --git a/demo/src/components/HeaderDropdown/index.tsx b/demo/src/components/HeaderDropdown/index.tsx deleted file mode 100644 index 45af90ae..00000000 --- a/demo/src/components/HeaderDropdown/index.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import type { DropDownProps } from 'antd/es/dropdown'; -import { Dropdown } from 'antd'; -import React from 'react'; -import classNames from 'classnames'; -import styles from './index.less'; - -export type HeaderDropdownProps = { - overlayClassName?: string; - overlay: React.ReactNode | (() => React.ReactNode) | any; - placement?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topCenter' | 'topRight' | 'bottomCenter'; -} & Omit; - -const HeaderDropdown: React.FC = ({ overlayClassName: cls, ...restProps }) => ( - -); - -export default HeaderDropdown; diff --git a/demo/src/components/HeaderSearch/index.less b/demo/src/components/HeaderSearch/index.less deleted file mode 100644 index 7dc3eaa0..00000000 --- a/demo/src/components/HeaderSearch/index.less +++ /dev/null @@ -1,25 +0,0 @@ -@import (reference) '~antd/es/style/themes/index'; - -.headerSearch { - display: inline-flex; - align-items: center; - .input { - width: 0; - min-width: 0; - overflow: hidden; - background: transparent; - border-radius: 0; - transition: width 0.3s, margin-left 0.3s; - :global(.ant-select-selection) { - background: transparent; - } - input { - box-shadow: none !important; - } - - &.show { - width: 210px; - margin-left: 8px; - } - } -} diff --git a/demo/src/components/HeaderSearch/index.tsx b/demo/src/components/HeaderSearch/index.tsx deleted file mode 100644 index d282de14..00000000 --- a/demo/src/components/HeaderSearch/index.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import { SearchOutlined } from '@ant-design/icons'; -import type { InputRef } from 'antd'; -import { AutoComplete, Input } from 'antd'; -import useMergedState from 'rc-util/es/hooks/useMergedState'; -import type { AutoCompleteProps } from 'antd/es/auto-complete'; -import React, { useRef } from 'react'; - -import classNames from 'classnames'; -import styles from './index.less'; - -export type HeaderSearchProps = { - onSearch?: (value?: string) => void; - onChange?: (value?: string) => void; - onVisibleChange?: (b: boolean) => void; - className?: string; - placeholder?: string; - options: AutoCompleteProps['options']; - defaultVisible?: boolean; - visible?: boolean; - defaultValue?: string; - value?: string; -}; - -const HeaderSearch: React.FC = (props) => { - const { - className, - defaultValue, - onVisibleChange, - placeholder, - visible, - defaultVisible, - ...restProps - } = props; - - const inputRef = useRef(null); - - const [value, setValue] = useMergedState(defaultValue, { - value: props.value, - onChange: props.onChange, - }); - - const [searchMode, setSearchMode] = useMergedState(defaultVisible ?? false, { - value: props.visible, - onChange: onVisibleChange, - }); - - const inputClass = classNames(styles.input, { - [styles.show]: searchMode, - }); - return ( -
    { - setSearchMode(true); - if (searchMode && inputRef.current) { - inputRef.current.focus(); - } - }} - onTransitionEnd={({ propertyName }) => { - if (propertyName === 'width' && !searchMode) { - if (onVisibleChange) { - onVisibleChange(searchMode); - } - } - }} - > - - setValue(completeValue)} - > - { - if (e.key === 'Enter') { - if (restProps.onSearch) { - restProps.onSearch(value); - } - } - }} - onBlur={() => { - setSearchMode(false); - }} - /> - -
    - ); -}; - -export default HeaderSearch; diff --git a/demo/src/components/NoticeIcon/NoticeIcon.tsx b/demo/src/components/NoticeIcon/NoticeIcon.tsx deleted file mode 100644 index 7a530c05..00000000 --- a/demo/src/components/NoticeIcon/NoticeIcon.tsx +++ /dev/null @@ -1,126 +0,0 @@ -import { BellOutlined } from '@ant-design/icons'; -import { Badge, Spin, Tabs } from 'antd'; -import useMergedState from 'rc-util/es/hooks/useMergedState'; -import React from 'react'; -import classNames from 'classnames'; -import type { NoticeIconTabProps } from './NoticeList'; -import NoticeList from './NoticeList'; -import HeaderDropdown from '../HeaderDropdown'; -import styles from './index.less'; - -const { TabPane } = Tabs; - -export type NoticeIconProps = { - count?: number; - bell?: React.ReactNode; - className?: string; - loading?: boolean; - onClear?: (tabName: string, tabKey: string) => void; - onItemClick?: (item: API.NoticeIconItem, tabProps: NoticeIconTabProps) => void; - onViewMore?: (tabProps: NoticeIconTabProps, e: MouseEvent) => void; - onTabChange?: (tabTile: string) => void; - style?: React.CSSProperties; - onPopupVisibleChange?: (visible: boolean) => void; - popupVisible?: boolean; - clearText?: string; - viewMoreText?: string; - clearClose?: boolean; - emptyImage?: string; - children?: React.ReactElement[]; -}; - -const NoticeIcon: React.FC & { - Tab: typeof NoticeList; -} = (props) => { - const getNotificationBox = (): React.ReactNode => { - const { - children, - loading, - onClear, - onTabChange, - onItemClick, - onViewMore, - clearText, - viewMoreText, - } = props; - if (!children) { - return null; - } - const panes: React.ReactNode[] = []; - React.Children.forEach(children, (child: React.ReactElement): void => { - if (!child) { - return; - } - const { list, title, count, tabKey, showClear, showViewMore } = child.props; - const len = list && list.length ? list.length : 0; - const msgCount = count || count === 0 ? count : len; - const tabTitle: string = msgCount > 0 ? `${title} (${msgCount})` : title; - panes.push( - - onClear && onClear(title, tabKey)} - onClick={(item): void => onItemClick && onItemClick(item, child.props)} - onViewMore={(event): void => onViewMore && onViewMore(child.props, event)} - showClear={showClear} - showViewMore={showViewMore} - title={title} - /> - , - ); - }); - return ( - <> - - - {panes} - - - - ); - }; - - const { className, count, bell } = props; - - const [visible, setVisible] = useMergedState(false, { - value: props.popupVisible, - onChange: props.onPopupVisibleChange, - }); - const noticeButtonClass = classNames(className, styles.noticeButton); - const notificationBox = getNotificationBox(); - const NoticeBellIcon = bell || ; - const trigger = ( - - - {NoticeBellIcon} - - - ); - if (!notificationBox) { - return trigger; - } - - return ( - - {trigger} - - ); -}; - -NoticeIcon.defaultProps = { - emptyImage: 'https://gw.alipayobjects.com/zos/rmsportal/wAhyIChODzsoKIOBHcBk.svg', -}; - -NoticeIcon.Tab = NoticeList; - -export default NoticeIcon; diff --git a/demo/src/components/NoticeIcon/NoticeList.less b/demo/src/components/NoticeIcon/NoticeList.less deleted file mode 100755 index c87fece4..00000000 --- a/demo/src/components/NoticeIcon/NoticeList.less +++ /dev/null @@ -1,103 +0,0 @@ -@import (reference) '~antd/es/style/themes/index'; - -.list { - max-height: 400px; - overflow: auto; - &::-webkit-scrollbar { - display: none; - } - .item { - padding-right: 24px; - padding-left: 24px; - overflow: hidden; - cursor: pointer; - transition: all 0.3s; - - .meta { - width: 100%; - } - - .avatar { - margin-top: 4px; - background: @component-background; - } - .iconElement { - font-size: 32px; - } - - &.read { - opacity: 0.4; - } - &:last-child { - border-bottom: 0; - } - &:hover { - background: @primary-1; - } - .title { - margin-bottom: 8px; - font-weight: normal; - } - .description { - font-size: 12px; - line-height: @line-height-base; - } - .datetime { - margin-top: 4px; - font-size: 12px; - line-height: @line-height-base; - } - .extra { - float: right; - margin-top: -1.5px; - margin-right: 0; - color: @text-color-secondary; - font-weight: normal; - } - } - .loadMore { - padding: 8px 0; - color: @primary-6; - text-align: center; - cursor: pointer; - &.loadedAll { - color: rgba(0, 0, 0, 0.25); - cursor: unset; - } - } -} - -.notFound { - padding: 73px 0 88px; - color: @text-color-secondary; - text-align: center; - img { - display: inline-block; - height: 76px; - margin-bottom: 16px; - } -} - -.bottomBar { - height: 46px; - color: @text-color; - line-height: 46px; - text-align: center; - border-top: 1px solid @border-color-split; - border-radius: 0 0 @border-radius-base @border-radius-base; - transition: all 0.3s; - div { - display: inline-block; - width: 50%; - cursor: pointer; - transition: all 0.3s; - user-select: none; - - &:only-child { - width: 100%; - } - &:not(:only-child):last-child { - border-left: 1px solid @border-color-split; - } - } -} diff --git a/demo/src/components/NoticeIcon/NoticeList.tsx b/demo/src/components/NoticeIcon/NoticeList.tsx deleted file mode 100644 index 5face399..00000000 --- a/demo/src/components/NoticeIcon/NoticeList.tsx +++ /dev/null @@ -1,113 +0,0 @@ -import { Avatar, List } from 'antd'; - -import React from 'react'; -import classNames from 'classnames'; -import styles from './NoticeList.less'; - -export type NoticeIconTabProps = { - count?: number; - showClear?: boolean; - showViewMore?: boolean; - style?: React.CSSProperties; - title: string; - tabKey: API.NoticeIconItemType; - onClick?: (item: API.NoticeIconItem) => void; - onClear?: () => void; - emptyText?: string; - clearText?: string; - viewMoreText?: string; - list: API.NoticeIconItem[]; - onViewMore?: (e: any) => void; -}; -const NoticeList: React.FC = ({ - list = [], - onClick, - onClear, - title, - onViewMore, - emptyText, - showClear = true, - clearText, - viewMoreText, - showViewMore = false, -}) => { - if (!list || list.length === 0) { - return ( -
    - not found -
    {emptyText}
    -
    - ); - } - return ( -
    - - className={styles.list} - dataSource={list} - renderItem={(item, i) => { - const itemCls = classNames(styles.item, { - [styles.read]: item.read, - }); - // eslint-disable-next-line no-nested-ternary - const leftIcon = item.avatar ? ( - typeof item.avatar === 'string' ? ( - - ) : ( - {item.avatar} - ) - ) : null; - - return ( - { - onClick?.(item); - }} - > - - {item.title} -
    {item.extra}
    -
    - } - description={ -
    -
    {item.description}
    -
    {item.datetime}
    -
    - } - /> - - ); - }} - /> -
    - {showClear ? ( -
    - {clearText} {title} -
    - ) : null} - {showViewMore ? ( -
    { - if (onViewMore) { - onViewMore(e); - } - }} - > - {viewMoreText} -
    - ) : null} -
    - - ); -}; - -export default NoticeList; diff --git a/demo/src/components/NoticeIcon/index.less b/demo/src/components/NoticeIcon/index.less deleted file mode 100644 index a2e44f15..00000000 --- a/demo/src/components/NoticeIcon/index.less +++ /dev/null @@ -1,35 +0,0 @@ -@import (reference) '~antd/es/style/themes/index'; - -.popover { - position: relative; - width: 336px; -} - -.noticeButton { - display: inline-block; - cursor: pointer; - transition: all 0.3s; -} -.icon { - padding: 4px; - vertical-align: middle; -} - -.badge { - font-size: 16px; -} - -.tabs { - :global { - .ant-tabs-nav-list { - margin: auto; - } - - .ant-tabs-nav-scroll { - text-align: center; - } - .ant-tabs-nav { - margin-bottom: 0; - } - } -} diff --git a/demo/src/components/NoticeIcon/index.tsx b/demo/src/components/NoticeIcon/index.tsx deleted file mode 100644 index 326a363b..00000000 --- a/demo/src/components/NoticeIcon/index.tsx +++ /dev/null @@ -1,153 +0,0 @@ -import { useEffect, useState } from 'react'; -import { Tag, message } from 'antd'; -import { groupBy } from 'lodash'; -import moment from 'moment'; -import { useModel, useRequest } from 'umi'; -import { getNotices } from '@/services/ant-design-pro/api'; - -import NoticeIcon from './NoticeIcon'; -import styles from './index.less'; - -export type GlobalHeaderRightProps = { - fetchingNotices?: boolean; - onNoticeVisibleChange?: (visible: boolean) => void; - onNoticeClear?: (tabName?: string) => void; -}; - -const getNoticeData = (notices: API.NoticeIconItem[]): Record => { - if (!notices || notices.length === 0 || !Array.isArray(notices)) { - return {}; - } - - const newNotices = notices.map((notice) => { - const newNotice = { ...notice }; - - if (newNotice.datetime) { - newNotice.datetime = moment(notice.datetime as string).fromNow(); - } - - if (newNotice.id) { - newNotice.key = newNotice.id; - } - - if (newNotice.extra && newNotice.status) { - const color = { - todo: '', - processing: 'blue', - urgent: 'red', - doing: 'gold', - }[newNotice.status]; - newNotice.extra = ( - - {newNotice.extra} - - ) as any; - } - - return newNotice; - }); - return groupBy(newNotices, 'type'); -}; - -const getUnreadData = (noticeData: Record) => { - const unreadMsg: Record = {}; - Object.keys(noticeData).forEach((key) => { - const value = noticeData[key]; - - if (!unreadMsg[key]) { - unreadMsg[key] = 0; - } - - if (Array.isArray(value)) { - unreadMsg[key] = value.filter((item) => !item.read).length; - } - }); - return unreadMsg; -}; - -const NoticeIconView: React.FC = () => { - const { initialState } = useModel('@@initialState'); - const { currentUser } = initialState || {}; - const [notices, setNotices] = useState([]); - const { data } = useRequest(getNotices); - - useEffect(() => { - setNotices(data || []); - }, [data]); - - const noticeData = getNoticeData(notices); - const unreadMsg = getUnreadData(noticeData || {}); - - const changeReadState = (id: string) => { - setNotices( - notices.map((item) => { - const notice = { ...item }; - if (notice.id === id) { - notice.read = true; - } - return notice; - }), - ); - }; - - const clearReadState = (title: string, key: string) => { - setNotices( - notices.map((item) => { - const notice = { ...item }; - if (notice.type === key) { - notice.read = true; - } - return notice; - }), - ); - message.success(`${'清空了'} ${title}`); - }; - - return ( - { - changeReadState(item.id!); - }} - onClear={(title: string, key: string) => clearReadState(title, key)} - loading={false} - clearText="清空" - viewMoreText="查看更多" - onViewMore={() => message.info('Click on view more')} - clearClose - > - - - - - ); -}; - -export default NoticeIconView; diff --git a/demo/src/components/RightContent/AvatarDropdown.tsx b/demo/src/components/RightContent/AvatarDropdown.tsx deleted file mode 100644 index fc768c29..00000000 --- a/demo/src/components/RightContent/AvatarDropdown.tsx +++ /dev/null @@ -1,103 +0,0 @@ -import React, { useCallback } from 'react'; -import { LogoutOutlined, SettingOutlined, UserOutlined } from '@ant-design/icons'; -import { Avatar, Menu, Spin } from 'antd'; -import { history, useModel } from 'umi'; -import { stringify } from 'querystring'; -import HeaderDropdown from '../HeaderDropdown'; -import styles from './index.less'; -import { outLogin } from '@/services/ant-design-pro/api'; -import type { MenuInfo } from 'rc-menu/lib/interface'; - -export type GlobalHeaderRightProps = { - menu?: boolean; -}; - -/** - * 退出登录,并且将当前的 url 保存 - */ -const loginOut = async () => { - await outLogin(); - const { query = {}, search, pathname } = history.location; - const { redirect } = query; - // Note: There may be security issues, please note - if (window.location.pathname !== '/user/login' && !redirect) { - history.replace({ - pathname: '/user/login', - search: stringify({ - redirect: pathname + search, - }), - }); - } -}; - -const AvatarDropdown: React.FC = ({ menu }) => { - const { initialState, setInitialState } = useModel('@@initialState'); - - const onMenuClick = useCallback( - (event: MenuInfo) => { - const { key } = event; - if (key === 'logout') { - setInitialState((s) => ({ ...s, currentUser: undefined })); - loginOut(); - return; - } - history.push(`/account/${key}`); - }, - [setInitialState], - ); - - const loading = ( - - - - ); - - if (!initialState) { - return loading; - } - - const { currentUser } = initialState; - - if (!currentUser || !currentUser.name) { - return loading; - } - - const menuHeaderDropdown = ( - - {menu && ( - - - 个人中心 - - )} - {menu && ( - - - 个人设置 - - )} - {menu && } - - - - 退出登录 - - - ); - return ( - - - - {currentUser.name} - - - ); -}; - -export default AvatarDropdown; diff --git a/demo/src/components/RightContent/index.less b/demo/src/components/RightContent/index.less deleted file mode 100644 index 6d6f1986..00000000 --- a/demo/src/components/RightContent/index.less +++ /dev/null @@ -1,84 +0,0 @@ -@import (reference) '~antd/es/style/themes/index'; - -@pro-header-hover-bg: rgba(0, 0, 0, 0.025); - -.menu { - :global(.anticon) { - margin-right: 8px; - } - :global(.ant-dropdown-menu-item) { - min-width: 160px; - } -} - -.right { - display: flex; - float: right; - height: 48px; - margin-left: auto; - overflow: hidden; - .action { - display: flex; - align-items: center; - height: 48px; - padding: 0 12px; - cursor: pointer; - transition: all 0.3s; - > span { - vertical-align: middle; - } - &:hover { - background: @pro-header-hover-bg; - } - &:global(.opened) { - background: @pro-header-hover-bg; - } - } - .search { - padding: 0 12px; - &:hover { - background: transparent; - } - } - .account { - .avatar { - margin-right: 8px; - color: @primary-color; - vertical-align: top; - background: rgba(255, 255, 255, 0.85); - } - } -} - -.dark { - .action { - &:hover { - background: #252a3d; - } - &:global(.opened) { - background: #252a3d; - } - } -} - -@media only screen and (max-width: @screen-md) { - :global(.ant-divider-vertical) { - vertical-align: unset; - } - .name { - display: none; - } - .right { - position: absolute; - top: 0; - right: 12px; - .account { - .avatar { - margin-right: 0; - } - } - .search { - display: none; - } - } -} diff --git a/demo/src/components/RightContent/index.tsx b/demo/src/components/RightContent/index.tsx deleted file mode 100644 index 6e478abb..00000000 --- a/demo/src/components/RightContent/index.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import { Space } from 'antd'; -import { QuestionCircleOutlined } from '@ant-design/icons'; -import React from 'react'; -import { useModel, SelectLang } from 'umi'; -import Avatar from './AvatarDropdown'; -import HeaderSearch from '../HeaderSearch'; -import styles from './index.less'; -import NoticeIconView from '../NoticeIcon'; - -export type SiderTheme = 'light' | 'dark'; - -const GlobalHeaderRight: React.FC = () => { - const { initialState } = useModel('@@initialState'); - - if (!initialState || !initialState.settings) { - return null; - } - - const { navTheme, layout } = initialState.settings; - let className = styles.right; - - if ((navTheme === 'dark' && layout === 'top') || layout === 'mix') { - className = `${styles.right} ${styles.dark}`; - } - - return ( - - umi ui, - value: 'umi ui', - }, - { - label: Ant Design, - value: 'Ant Design', - }, - { - label: Pro Table, - value: 'Pro Table', - }, - { - label: Pro Layout, - value: 'Pro Layout', - }, - ]} // onSearch={value => { - // console.log('input', value); - // }} - /> - { - window.open('https://pro.ant.design/docs/getting-started'); - }} - > - - - - - - - ); -}; - -export default GlobalHeaderRight; diff --git a/demo/src/components/index.md b/demo/src/components/index.md deleted file mode 100644 index 408da93a..00000000 --- a/demo/src/components/index.md +++ /dev/null @@ -1,272 +0,0 @@ ---- -title: 业务组件 -sidemenu: false ---- - -> 此功能由[dumi](https://d.umijs.org/zh-CN/guide/advanced#umi-%E9%A1%B9%E7%9B%AE%E9%9B%86%E6%88%90%E6%A8%A1%E5%BC%8F)提供,dumi 是一个 📖 为组件开发场景而生的文档工具,用过的都说好。 - -# 业务组件 - -这里列举了 Pro 中所有用到的组件,这些组件不适合作为组件库,但是在业务中却真实需要。所以我们准备了这个文档,来指导大家是否需要使用这个组件。 - -## Footer 页脚组件 - -这个组件自带了一些 Pro 的配置,你一般都需要改掉它的信息。 - -```tsx -/** - * background: '#f0f2f5' - */ -import React from 'react'; -import Footer from '@/components/Footer'; - -export default () =>
    ; -``` - -## HeaderDropdown 头部下拉列表 - -HeaderDropdown 是 antd Dropdown 的封装,但是增加了移动端的特殊处理,用法也是相同的。 - -```tsx -/** - * background: '#f0f2f5' - */ -import { Button, Menu } from 'antd'; -import React from 'react'; -import HeaderDropdown from '@/components/HeaderDropdown'; - -export default () => { - const menuHeaderDropdown = ( - - 个人中心 - 个人设置 - - 退出登录 - - ); - return ( - - - - ); -}; -``` - -## HeaderSearch 头部搜索框 - -一个带补全数据的输入框,支持收起和展开 Input - -```tsx -/** - * background: '#f0f2f5' - */ -import { Button, Menu } from 'antd'; -import React from 'react'; -import HeaderSearch from '@/components/HeaderSearch'; - -export default () => { - return ( - { - console.log('input', value); - }} - /> - ); -}; -``` - -### API - -| 参数 | 说明 | 类型 | 默认值 | -| --------------- | ---------------------------------- | ---------------------------- | ------ | -| value | 输入框的值 | `string` | - | -| onChange | 值修改后触发 | `(value?: string) => void` | - | -| onSearch | 查询后触发 | `(value?: string) => void` | - | -| options | 选项菜单的的列表 | `{label,value}[]` | - | -| defaultVisible | 输入框默认是否显示,只有第一次生效 | `boolean` | - | -| visible | 输入框是否显示 | `boolean` | - | -| onVisibleChange | 输入框显示隐藏的回调函数 | `(visible: boolean) => void` | - | - -## NoticeIcon 通知工具 - -通知工具提供一个展示多种通知信息的界面。 - -```tsx -/** - * background: '#f0f2f5' - */ -import { message } from 'antd'; -import React from 'react'; -import NoticeIcon from '@/components/NoticeIcon/NoticeIcon'; - -export default () => { - const list = [ - { - id: '000000001', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png', - title: '你收到了 14 份新周报', - datetime: '2017-08-09', - type: 'notification', - }, - { - id: '000000002', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png', - title: '你推荐的 曲妮妮 已通过第三轮面试', - datetime: '2017-08-08', - type: 'notification', - }, - ]; - return ( - { - message.info(`${item.title} 被点击了`); - }} - onClear={(title: string, key: string) => message.info('点击了清空更多')} - loading={false} - clearText="清空" - viewMoreText="查看更多" - onViewMore={() => message.info('点击了查看更多')} - clearClose - > - - - - - ); -}; -``` - -### NoticeIcon API - -| 参数 | 说明 | 类型 | 默认值 | -| --- | --- | --- | --- | -| count | 有多少未读通知 | `number` | - | -| bell | 铃铛的图表 | `ReactNode` | - | -| onClear | 点击清空数据按钮 | `(tabName: string, tabKey: string) => void` | - | -| onItemClick | 未读消息列被点击 | `(item: API.NoticeIconData, tabProps: NoticeIconTabProps) => void` | - | -| onViewMore | 查看更多的按钮点击 | `(tabProps: NoticeIconTabProps, e: MouseEvent) => void` | - | -| onTabChange | 通知 Tab 的切换 | `(tabTile: string) => void;` | - | -| popupVisible | 通知显示是否展示 | `boolean` | - | -| onPopupVisibleChange | 通知信息显示隐藏的回调函数 | `(visible: boolean) => void` | - | -| clearText | 清空按钮的文字 | `string` | - | -| viewMoreText | 查看更多的按钮文字 | `string` | - | -| clearClose | 展示清空按钮 | `boolean` | - | -| emptyImage | 列表为空时的兜底展示 | `ReactNode` | - | - -### NoticeIcon.Tab API - -| 参数 | 说明 | 类型 | 默认值 | -| ------------ | ------------------ | ------------------------------------ | ------ | -| count | 有多少未读通知 | `number` | - | -| title | 通知 Tab 的标题 | `ReactNode` | - | -| showClear | 展示清除按钮 | `boolean` | `true` | -| showViewMore | 展示加载更 | `boolean` | `true` | -| tabKey | Tab 的唯一 key | `string` | - | -| onClick | 子项的单击事件 | `(item: API.NoticeIconData) => void` | - | -| onClear | 清楚按钮的点击 | `()=>void` | - | -| emptyText | 为空的时候测试 | `()=>void` | - | -| viewMoreText | 查看更多的按钮文字 | `string` | - | -| onViewMore | 查看更多的按钮点击 | `( e: MouseEvent) => void` | - | -| list | 通知信息的列表 | `API.NoticeIconData` | - | - -### NoticeIconData - -```tsx | pure -export interface NoticeIconData { - id: string; - key: string; - avatar: string; - title: string; - datetime: string; - type: string; - read?: boolean; - description: string; - clickClose?: boolean; - extra: any; - status: string; -} -``` - -## RightContent - -RightContent 是以上几个组件的组合,同时新增了 plugins 的 `SelectLang` 插件。 - -```tsx | pure - - umi ui, value: 'umi ui' }, - { - label: Ant Design, - value: 'Ant Design', - }, - { - label: Pro Table, - value: 'Pro Table', - }, - { - label: Pro Layout, - value: 'Pro Layout', - }, - ]} - /> - - { - window.location.href = 'https://pro.ant.design/docs/getting-started'; - }} - > - - - - - {REACT_APP_ENV && ( - - {REACT_APP_ENV} - - )} - - -``` diff --git a/demo/src/e2e/baseLayout.e2e.spec.ts b/demo/src/e2e/baseLayout.e2e.spec.ts deleted file mode 100644 index e1d62c71..00000000 --- a/demo/src/e2e/baseLayout.e2e.spec.ts +++ /dev/null @@ -1,45 +0,0 @@ -import type { Page } from '@playwright/test'; -import { test, expect } from '@playwright/test'; -const { uniq } = require('lodash'); -const RouterConfig = require('../../config/routes').default; - -const BASE_URL = `http://localhost:${process.env.PORT || 8001}`; - -function formatter(routes: any, parentPath = ''): string[] { - const fixedParentPath = parentPath.replace(/\/{1,}/g, '/'); - let result: string[] = []; - routes.forEach((item: { path: string; routes: string }) => { - if (item.path && !item.path.startsWith('/')) { - result.push(`${fixedParentPath}/${item.path}`.replace(/\/{1,}/g, '/')); - } - if (item.path && item.path.startsWith('/')) { - result.push(`${item.path}`.replace(/\/{1,}/g, '/')); - } - if (item.routes) { - result = result.concat( - formatter(item.routes, item.path ? `${fixedParentPath}/${item.path}` : parentPath), - ); - } - }); - return uniq(result.filter((item) => !!item)); -} - -const testPage = (path: string, page: Page) => async () => { - await page.evaluate(() => { - localStorage.setItem('antd-pro-authority', '["admin"]'); - }); - await page.goto(`${BASE_URL}${path}`); - await page.waitForSelector('footer', { - timeout: 2000, - }); - const haveFooter = await page.evaluate(() => document.getElementsByTagName('footer').length > 0); - expect(haveFooter).toBeTruthy(); -}; - -const routers = formatter(RouterConfig); - -routers.forEach((route) => { - test(`test route page ${route}`, async ({ page }) => { - await testPage(route, page); - }); -}); diff --git a/demo/src/global.less b/demo/src/global.less deleted file mode 100644 index 0d6158c7..00000000 --- a/demo/src/global.less +++ /dev/null @@ -1,57 +0,0 @@ -@import '~antd/es/style/variable.less'; - -html, -body, -#root { - height: 100%; -} - -.colorWeak { - filter: invert(80%); -} - -.ant-layout { - min-height: 100vh; -} -.ant-pro-sider.ant-layout-sider.ant-pro-sider-fixed { - left: unset; -} - -canvas { - display: block; -} - -body { - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -ul, -ol { - list-style: none; -} - -@media (max-width: @screen-xs) { - .ant-table { - width: 100%; - overflow-x: auto; - &-thead > tr, - &-tbody > tr { - > th, - > td { - white-space: pre; - > span { - display: block; - } - } - } - } -} - -// Compatible with IE11 -@media screen and(-ms-high-contrast: active), (-ms-high-contrast: none) { - body .ant-design-pro > .ant-layout { - min-height: 100vh; - } -} diff --git a/demo/src/global.tsx b/demo/src/global.tsx deleted file mode 100644 index 29f47a09..00000000 --- a/demo/src/global.tsx +++ /dev/null @@ -1,91 +0,0 @@ -import { Button, message, notification } from 'antd'; -import { useIntl } from 'umi'; -import defaultSettings from '../config/defaultSettings'; - -const { pwa } = defaultSettings; -const isHttps = document.location.protocol === 'https:'; - -const clearCache = () => { - // remove all caches - if (window.caches) { - caches - .keys() - .then((keys) => { - keys.forEach((key) => { - caches.delete(key); - }); - }) - .catch((e) => console.log(e)); - } -}; - -// if pwa is true -if (pwa) { - // Notify user if offline now - window.addEventListener('sw.offline', () => { - message.warning(useIntl().formatMessage({ id: 'app.pwa.offline' })); - }); - - // Pop up a prompt on the page asking the user if they want to use the latest version - window.addEventListener('sw.updated', (event: Event) => { - const e = event as CustomEvent; - const reloadSW = async () => { - // Check if there is sw whose state is waiting in ServiceWorkerRegistration - // https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration - const worker = e.detail && e.detail.waiting; - if (!worker) { - return true; - } - // Send skip-waiting event to waiting SW with MessageChannel - await new Promise((resolve, reject) => { - const channel = new MessageChannel(); - channel.port1.onmessage = (msgEvent) => { - if (msgEvent.data.error) { - reject(msgEvent.data.error); - } else { - resolve(msgEvent.data); - } - }; - worker.postMessage({ type: 'skip-waiting' }, [channel.port2]); - }); - - clearCache(); - window.location.reload(); - return true; - }; - const key = `open${Date.now()}`; - const btn = ( - - ); - notification.open({ - message: useIntl().formatMessage({ id: 'app.pwa.serviceworker.updated' }), - description: useIntl().formatMessage({ id: 'app.pwa.serviceworker.updated.hint' }), - btn, - key, - onClose: async () => null, - }); - }); -} else if ('serviceWorker' in navigator && isHttps) { - // unregister service worker - const { serviceWorker } = navigator; - if (serviceWorker.getRegistrations) { - serviceWorker.getRegistrations().then((sws) => { - sws.forEach((sw) => { - sw.unregister(); - }); - }); - } - serviceWorker.getRegistration().then((sw) => { - if (sw) sw.unregister(); - }); - - clearCache(); -} diff --git a/demo/src/locales/bn-BD.ts b/demo/src/locales/bn-BD.ts deleted file mode 100644 index f9f6afd6..00000000 --- a/demo/src/locales/bn-BD.ts +++ /dev/null @@ -1,26 +0,0 @@ -import component from './bn-BD/component'; -import globalHeader from './bn-BD/globalHeader'; -import menu from './bn-BD/menu'; -import pages from './bn-BD/pages'; -import pwa from './bn-BD/pwa'; -import settingDrawer from './bn-BD/settingDrawer'; -import settings from './bn-BD/settings'; - -export default { - 'navBar.lang': 'ভাষা', - 'layout.user.link.help': 'সহায়তা', - 'layout.user.link.privacy': 'গোপনীয়তা', - 'layout.user.link.terms': 'শর্তাদি', - 'app.copyright.produced': 'প্রযোজনা করেছেন অ্যান্ট ফিনান্সিয়াল এক্সপেরিয়েন্স ডিপার্টমেন্ট', - 'app.preview.down.block': 'আপনার স্থানীয় প্রকল্পে এই পৃষ্ঠাটি ডাউনলোড করুন', - 'app.welcome.link.fetch-blocks': 'সমস্ত ব্লক পান', - 'app.welcome.link.block-list': - '`block` ডেভেলপমেন্ট এর উপর ভিত্তি করে দ্রুত স্ট্যান্ডার্ড, পৃষ্ঠাসমূহ তৈরি করুন।', - ...globalHeader, - ...menu, - ...settingDrawer, - ...settings, - ...pwa, - ...component, - ...pages, -}; diff --git a/demo/src/locales/bn-BD/component.ts b/demo/src/locales/bn-BD/component.ts deleted file mode 100644 index a546e757..00000000 --- a/demo/src/locales/bn-BD/component.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - 'component.tagSelect.expand': 'বিস্তৃত', - 'component.tagSelect.collapse': 'সঙ্কুচিত', - 'component.tagSelect.all': 'সব', -}; diff --git a/demo/src/locales/bn-BD/globalHeader.ts b/demo/src/locales/bn-BD/globalHeader.ts deleted file mode 100644 index 2679be46..00000000 --- a/demo/src/locales/bn-BD/globalHeader.ts +++ /dev/null @@ -1,17 +0,0 @@ -export default { - 'component.globalHeader.search': 'অনুসন্ধান করুন', - 'component.globalHeader.search.example1': 'অনুসন্ধান উদাহরণ ১', - 'component.globalHeader.search.example2': 'অনুসন্ধান উদাহরণ ২', - 'component.globalHeader.search.example3': 'অনুসন্ধান উদাহরণ ৩', - 'component.globalHeader.help': 'সহায়তা', - 'component.globalHeader.notification': 'বিজ্ঞপ্তি', - 'component.globalHeader.notification.empty': 'আপনি সমস্ত বিজ্ঞপ্তি দেখেছেন।', - 'component.globalHeader.message': 'বার্তা', - 'component.globalHeader.message.empty': 'আপনি সমস্ত বার্তা দেখেছেন।', - 'component.globalHeader.event': 'ঘটনা', - 'component.globalHeader.event.empty': 'আপনি সমস্ত ইভেন্ট দেখেছেন।', - 'component.noticeIcon.clear': 'সাফ', - 'component.noticeIcon.cleared': 'সাফ করা হয়েছে', - 'component.noticeIcon.empty': 'বিজ্ঞপ্তি নেই', - 'component.noticeIcon.view-more': 'আরো দেখুন', -}; diff --git a/demo/src/locales/bn-BD/menu.ts b/demo/src/locales/bn-BD/menu.ts deleted file mode 100644 index ae511a0d..00000000 --- a/demo/src/locales/bn-BD/menu.ts +++ /dev/null @@ -1,52 +0,0 @@ -export default { - 'menu.welcome': 'স্বাগতম', - 'menu.more-blocks': 'আরও ব্লক', - 'menu.home': 'নীড়', - 'menu.admin': 'অ্যাডমিন', - 'menu.admin.sub-page': 'উপ-পৃষ্ঠা', - 'menu.login': 'প্রবেশ', - 'menu.register': 'নিবন্ধন', - 'menu.register-result': 'নিবন্ধনে ফলাফল', - 'menu.dashboard': 'ড্যাশবোর্ড', - 'menu.dashboard.analysis': 'বিশ্লেষণ', - 'menu.dashboard.monitor': 'নিরীক্ষণ', - 'menu.dashboard.workplace': 'কর্মক্ষেত্র', - 'menu.exception.403': '403', - 'menu.exception.404': '404', - 'menu.exception.500': '500', - 'menu.form': 'ফর্ম', - 'menu.form.basic-form': 'বেসিক ফর্ম', - 'menu.form.step-form': 'পদক্ষেপ ফর্ম', - 'menu.form.step-form.info': 'পদক্ষেপ ফর্ম (স্থানান্তর তথ্য লিখুন)', - 'menu.form.step-form.confirm': 'পদক্ষেপ ফর্ম (স্থানান্তর তথ্য নিশ্চিত করুন)', - 'menu.form.step-form.result': 'পদক্ষেপ ফর্ম (সমাপ্ত)', - 'menu.form.advanced-form': 'উন্নত ফর্ম', - 'menu.list': 'তালিকা', - 'menu.list.table-list': 'অনুসন্ধানের টেবিল', - 'menu.list.basic-list': 'বেসিক তালিকা', - 'menu.list.card-list': 'কার্ডের তালিকা', - 'menu.list.search-list': 'অনুসন্ধানের তালিকা', - 'menu.list.search-list.articles': 'অনুসন্ধানের তালিকা (নিবন্ধসমূহ)', - 'menu.list.search-list.projects': 'অনুসন্ধানের তালিকা (প্রকল্পগুলি)', - 'menu.list.search-list.applications': 'অনুসন্ধানের তালিকা (অ্যাপ্লিকেশন)', - 'menu.profile': 'প্রোফাইল', - 'menu.profile.basic': 'বেসিক প্রোফাইল', - 'menu.profile.advanced': 'উন্নত প্রোফাইল', - 'menu.result': 'ফলাফল', - 'menu.result.success': 'সাফল্য', - 'menu.result.fail': 'ব্যর্থ', - 'menu.exception': 'ব্যতিক্রম', - 'menu.exception.not-permission': '403', - 'menu.exception.not-find': '404', - 'menu.exception.server-error': '500', - 'menu.exception.trigger': 'ট্রিগার', - 'menu.account': 'হিসাব', - 'menu.account.center': 'অ্যাকাউন্ট কেন্দ্র', - 'menu.account.settings': 'অ্যাকাউন্ট সেটিংস', - 'menu.account.trigger': 'ট্রিগার ত্রুটি', - 'menu.account.logout': 'প্রস্থান', - 'menu.editor': 'গ্রাফিক সম্পাদক', - 'menu.editor.flow': 'ফ্লো এডিটর', - 'menu.editor.mind': 'মাইন্ড এডিটর', - 'menu.editor.koni': 'কোনি সম্পাদক', -}; diff --git a/demo/src/locales/bn-BD/pages.ts b/demo/src/locales/bn-BD/pages.ts deleted file mode 100644 index 726bd209..00000000 --- a/demo/src/locales/bn-BD/pages.ts +++ /dev/null @@ -1,70 +0,0 @@ -export default { - 'pages.layouts.userLayout.title': - 'পিঁপড়া ডিজাইন হচ্ছে সিহু জেলার সবচেয়ে প্রভাবশালী ওয়েব ডিজাইনের স্পেসিফিকেশন', - 'pages.login.accountLogin.tab': 'অ্যাকাউন্টে লগইন', - 'pages.login.accountLogin.errorMessage': 'ভুল ব্যবহারকারীর নাম/পাসওয়ার্ড(admin/ant.design)', - 'pages.login.failure': 'লগইন ব্যর্থ হয়েছে। আবার চেষ্টা করুন!', - 'pages.login.success': 'সফল লগইন!', - 'pages.login.username.placeholder': 'ব্যবহারকারীর নাম: admin or user', - 'pages.login.username.required': 'আপনার ব্যবহারকারীর নাম ইনপুট করুন!', - 'pages.login.password.placeholder': 'পাসওয়ার্ড: ant.design', - 'pages.login.password.required': 'আপনার পাসওয়ার্ড ইনপুট করুন!', - 'pages.login.phoneLogin.tab': 'ফোন লগইন', - 'pages.login.phoneLogin.errorMessage': 'যাচাইকরণ কোড ত্রুটি', - 'pages.login.phoneNumber.placeholder': 'ফোন নম্বর', - 'pages.login.phoneNumber.required': 'আপনার ফোন নম্বর ইনপুট করুন!', - 'pages.login.phoneNumber.invalid': 'ফোন নম্বরটি সঠিক নয়!', - 'pages.login.captcha.placeholder': 'যাচাইকরণের কোড', - 'pages.login.captcha.required': 'দয়া করে ভেরিফিকেশন কোডটি ইনপুট করুন!', - 'pages.login.phoneLogin.getVerificationCode': 'কোড পান', - 'pages.getCaptchaSecondText': 'সেকেন্ড', - 'pages.login.rememberMe': 'আমাকে মনে রাখুন', - 'pages.login.forgotPassword': 'পাসওয়ার্ড ভুলে গেছেন?', - 'pages.login.submit': 'প্রবেশ করুন', - 'pages.login.loginWith': 'লগইন করতে পারেন:', - 'pages.login.registerAccount': 'অ্যাকাউন্ট নিবন্ধন করুন', - 'pages.welcome.advancedComponent': 'অ্যাডভান্সড কম্পোনেন্ট', - 'pages.welcome.link': 'স্বাগতম', - 'pages.welcome.advancedLayout': 'অ্যাডভান্সড লেআউট', - 'pages.welcome.alertMessage': 'দ্রুত এবং শক্তিশালী ভারী শুল্ক উপাদান প্রকাশ করা হয়েছে।', - 'pages.admin.subPage.title': 'এই পৃষ্ঠাটি কেবল অ্যাডমিন দ্বারা দেখা যাবে', - 'pages.admin.subPage.alertMessage': - 'UMI UI এখন প্রকাশিত হয়েছে, অভিজ্ঞতা শুরু করতে npm run ui ব্যবহার করতে স্বাগতম।', - 'pages.searchTable.createForm.newRule': 'নতুন বিধি', - 'pages.searchTable.updateForm.ruleConfig': 'বিধি কনফিগারেশন', - 'pages.searchTable.updateForm.basicConfig': 'মৌলিক তথ্য', - 'pages.searchTable.updateForm.ruleName.nameLabel': 'বিধি নাম', - 'pages.searchTable.updateForm.ruleName.nameRules': 'বিধির নাম লিখুন!', - 'pages.searchTable.updateForm.ruleDesc.descLabel': 'বিধির বিবরণ', - 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': 'কমপক্ষে পাঁচটি অক্ষর লিখুন', - 'pages.searchTable.updateForm.ruleDesc.descRules': - 'কমপক্ষে পাঁচটি অক্ষরের একটি বিধান বিবরণ লিখুন!', - 'pages.searchTable.updateForm.ruleProps.title': 'বৈশিষ্ট্য কনফিগার করুন', - 'pages.searchTable.updateForm.object': 'নিরীক্ষণ অবজেক্ট', - 'pages.searchTable.updateForm.ruleProps.templateLabel': 'বিধি টেম্পলেট', - 'pages.searchTable.updateForm.ruleProps.typeLabel': 'বিধি প্রকার', - 'pages.searchTable.updateForm.schedulingPeriod.title': 'সময়সূচী নির্ধারণ করুন', - 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': 'শুরুর সময়', - 'pages.searchTable.updateForm.schedulingPeriod.timeRules': 'একটি শুরুর সময় চয়ন করুন!', - 'pages.searchTable.titleDesc': 'বর্ণনা', - 'pages.searchTable.ruleName': 'বিধি নাম প্রয়োজন', - 'pages.searchTable.titleCallNo': 'পরিষেবা কল সংখ্যা', - 'pages.searchTable.titleStatus': 'অবস্থা', - 'pages.searchTable.nameStatus.default': 'ডিফল্ট', - 'pages.searchTable.nameStatus.running': 'চলমান', - 'pages.searchTable.nameStatus.online': 'অনলাইন', - 'pages.searchTable.nameStatus.abnormal': 'অস্বাভাবিক', - 'pages.searchTable.titleUpdatedAt': 'সর্বশেষ নির্ধারিত', - 'pages.searchTable.exception': 'ব্যতিক্রম জন্য কারণ লিখুন!', - 'pages.searchTable.titleOption': 'অপশন', - 'pages.searchTable.config': 'কনফিগারেশন', - 'pages.searchTable.subscribeAlert': 'সতর্কতা সাবস্ক্রাইব করুন', - 'pages.searchTable.title': 'ইনকয়েরি ফরম', - 'pages.searchTable.new': 'নতুন', - 'pages.searchTable.chosen': 'নির্বাচিত', - 'pages.searchTable.item': 'আইটেম', - 'pages.searchTable.totalServiceCalls': 'পরিষেবা কলগুলির মোট সংখ্যা', - 'pages.searchTable.tenThousand': '000', - 'pages.searchTable.batchDeletion': 'একসাখে ডিলিট', - 'pages.searchTable.batchApproval': 'একসাখে অনুমোদন', -}; diff --git a/demo/src/locales/bn-BD/pwa.ts b/demo/src/locales/bn-BD/pwa.ts deleted file mode 100644 index 233fb305..00000000 --- a/demo/src/locales/bn-BD/pwa.ts +++ /dev/null @@ -1,7 +0,0 @@ -export default { - 'app.pwa.offline': 'আপনি এখন অফলাইন', - 'app.pwa.serviceworker.updated': 'নতুন সামগ্রী উপলব্ধ', - 'app.pwa.serviceworker.updated.hint': - 'বর্তমান পৃষ্ঠাটি পুনরায় লোড করতে দয়া করে "রিফ্রেশ" বোতাম টিপুন', - 'app.pwa.serviceworker.updated.ok': 'রিফ্রেশ', -}; diff --git a/demo/src/locales/bn-BD/settingDrawer.ts b/demo/src/locales/bn-BD/settingDrawer.ts deleted file mode 100644 index 2bd1d045..00000000 --- a/demo/src/locales/bn-BD/settingDrawer.ts +++ /dev/null @@ -1,31 +0,0 @@ -export default { - 'app.setting.pagestyle': 'পৃষ্ঠা স্টাইল সেটিং', - 'app.setting.pagestyle.dark': 'ডার্ক স্টাইল', - 'app.setting.pagestyle.light': 'লাইট স্টাইল', - 'app.setting.content-width': 'সামগ্রীর প্রস্থ', - 'app.setting.content-width.fixed': 'স্থির', - 'app.setting.content-width.fluid': 'প্রবাহী', - 'app.setting.themecolor': 'থিম রঙ', - 'app.setting.themecolor.dust': 'ডাস্ট রেড', - 'app.setting.themecolor.volcano': 'আগ্নেয়গিরি', - 'app.setting.themecolor.sunset': 'সানসেট কমলা', - 'app.setting.themecolor.cyan': 'সবুজাভ নীল', - 'app.setting.themecolor.green': 'পোলার সবুজ', - 'app.setting.themecolor.daybreak': 'দিবস ব্রেক ব্লু (ডিফল্ট)', - 'app.setting.themecolor.geekblue': 'গিক আঠালো', - 'app.setting.themecolor.purple': 'গোল্ডেন বেগুনি', - 'app.setting.navigationmode': 'নেভিগেশন মোড', - 'app.setting.sidemenu': 'সাইড মেনু লেআউট', - 'app.setting.topmenu': 'টপ মেনু লেআউট', - 'app.setting.fixedheader': 'স্থির হেডার', - 'app.setting.fixedsidebar': 'স্থির সাইডবার', - 'app.setting.fixedsidebar.hint': 'সাইড মেনু বিন্যাসে কাজ করে', - 'app.setting.hideheader': 'স্ক্রোল করার সময় হেডার লুকানো', - 'app.setting.hideheader.hint': 'লুকানো হেডার সক্ষম থাকলে কাজ করে', - 'app.setting.othersettings': 'অন্যান্য সেটিংস্', - 'app.setting.weakmode': 'দুর্বল মোড', - 'app.setting.copy': 'সেটিং কপি করুন', - 'app.setting.copyinfo': 'সাফল্যের অনুলিপি করুন - প্রতিস্থাপন করুন: src/models/setting.js', - 'app.setting.production.hint': - 'কেবল বিকাশের পরিবেশে প্যানেল শো সেট করা হচ্ছে, দয়া করে ম্যানুয়ালি সংশোধন করুন', -}; diff --git a/demo/src/locales/bn-BD/settings.ts b/demo/src/locales/bn-BD/settings.ts deleted file mode 100644 index 93cf904a..00000000 --- a/demo/src/locales/bn-BD/settings.ts +++ /dev/null @@ -1,59 +0,0 @@ -export default { - 'app.settings.menuMap.basic': 'মৌলিক বৈশিষ্ট্যসহ', - 'app.settings.menuMap.security': 'নিরাপত্তা বিন্যাস', - 'app.settings.menuMap.binding': 'অ্যাকাউন্ট বাঁধাই', - 'app.settings.menuMap.notification': 'নতুন বার্তা বিজ্ঞপ্তি', - 'app.settings.basic.avatar': 'অবতার', - 'app.settings.basic.change-avatar': 'অবতার পরিবর্তন করুন', - 'app.settings.basic.email': 'ইমেইল', - 'app.settings.basic.email-message': 'আপনার ইমেইল ইনপুট করুন!', - 'app.settings.basic.nickname': 'ডাক নাম', - 'app.settings.basic.nickname-message': 'আপনার ডাকনামটি ইনপুট করুন!', - 'app.settings.basic.profile': 'ব্যক্তিগত প্রোফাইল', - 'app.settings.basic.profile-message': 'আপনার ব্যক্তিগত প্রোফাইল ইনপুট করুন!', - 'app.settings.basic.profile-placeholder': 'নিজের সাথে সংক্ষিপ্ত পরিচয়', - 'app.settings.basic.country': 'দেশ/অঞ্চল', - 'app.settings.basic.country-message': 'আপনার দেশ ইনপুট করুন!', - 'app.settings.basic.geographic': 'প্রদেশ বা শহর', - 'app.settings.basic.geographic-message': 'আপনার ভৌগলিক তথ্য ইনপুট করুন!', - 'app.settings.basic.address': 'রাস্তার ঠিকানা', - 'app.settings.basic.address-message': 'দয়া করে আপনার ঠিকানা ইনপুট করুন!', - 'app.settings.basic.phone': 'ফোন নম্বর', - 'app.settings.basic.phone-message': 'আপনার ফোন ইনপুট করুন!', - 'app.settings.basic.update': 'তথ্য হালনাগাদ', - 'app.settings.security.strong': 'শক্তিশালী', - 'app.settings.security.medium': 'মধ্যম', - 'app.settings.security.weak': 'দুর্বল', - 'app.settings.security.password': 'অ্যাকাউন্টের পাসওয়ার্ড', - 'app.settings.security.password-description': 'বর্তমান পাসওয়ার্ড শক্তি', - 'app.settings.security.phone': 'সুরক্ষা ফোন', - 'app.settings.security.phone-description': 'আবদ্ধ ফোন', - 'app.settings.security.question': 'নিরাপত্তা প্রশ্ন', - 'app.settings.security.question-description': - 'সুরক্ষা প্রশ্ন সেট করা নেই, এবং সুরক্ষা নীতি কার্যকরভাবে অ্যাকাউন্ট সুরক্ষা রক্ষা করতে পারে', - 'app.settings.security.email': 'ব্যাকআপ ইমেইল', - 'app.settings.security.email-description': 'বাউন্ড ইমেইল', - 'app.settings.security.mfa': 'MFA ডিভাইস', - 'app.settings.security.mfa-description': - "আনবাউন্ড এমএফএ ডিভাইস, বাঁধাইয়ের পরে, দু'বার নিশ্চিত করা যায়", - 'app.settings.security.modify': 'পরিবর্তন করুন', - 'app.settings.security.set': 'সেট', - 'app.settings.security.bind': 'বাঁধাই', - 'app.settings.binding.taobao': 'বাঁধাই তাওবাও', - 'app.settings.binding.taobao-description': 'বর্তমানে আনবাউন্ড তাওবাও অ্যাকাউন্ট', - 'app.settings.binding.alipay': 'বাইন্ডিং আলিপে', - 'app.settings.binding.alipay-description': 'বর্তমানে আনবাউন্ড আলিপে অ্যাকাউন্ট', - 'app.settings.binding.dingding': 'বাঁধাই ডিঙ্গটালক', - 'app.settings.binding.dingding-description': 'বর্তমানে আনবাউন্ড ডিঙ্গটাল অ্যাকাউন্ট', - 'app.settings.binding.bind': 'বাঁধাই', - 'app.settings.notification.password': 'অ্যাকাউন্টের পাসওয়ার্ড', - 'app.settings.notification.password-description': - 'অন্যান্য ব্যবহারকারীর বার্তাগুলি স্টেশন চিঠি আকারে জানানো হবে', - 'app.settings.notification.messages': 'সিস্টেম বার্তা', - 'app.settings.notification.messages-description': - 'সিস্টেম বার্তাগুলি স্টেশন চিঠির আকারে জানানো হবে', - 'app.settings.notification.todo': 'করণীয় বিজ্ঞপ্তি', - 'app.settings.notification.todo-description': 'করণীয় তালিকাটি স্টেশন থেকে চিঠি আকারে জানানো হবে', - 'app.settings.open': 'খোলা', - 'app.settings.close': 'বন্ধ', -}; diff --git a/demo/src/locales/en-US.ts b/demo/src/locales/en-US.ts deleted file mode 100644 index acb0f42f..00000000 --- a/demo/src/locales/en-US.ts +++ /dev/null @@ -1,25 +0,0 @@ -import component from './en-US/component'; -import globalHeader from './en-US/globalHeader'; -import menu from './en-US/menu'; -import pages from './en-US/pages'; -import pwa from './en-US/pwa'; -import settingDrawer from './en-US/settingDrawer'; -import settings from './en-US/settings'; - -export default { - 'navBar.lang': 'Languages', - 'layout.user.link.help': 'Help', - 'layout.user.link.privacy': 'Privacy', - 'layout.user.link.terms': 'Terms', - 'app.copyright.produced': 'Produced by Ant Financial Experience Department', - 'app.preview.down.block': 'Download this page to your local project', - 'app.welcome.link.fetch-blocks': 'Get all block', - 'app.welcome.link.block-list': 'Quickly build standard, pages based on `block` development', - ...globalHeader, - ...menu, - ...settingDrawer, - ...settings, - ...pwa, - ...component, - ...pages, -}; diff --git a/demo/src/locales/en-US/component.ts b/demo/src/locales/en-US/component.ts deleted file mode 100644 index 3ba7eeda..00000000 --- a/demo/src/locales/en-US/component.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - 'component.tagSelect.expand': 'Expand', - 'component.tagSelect.collapse': 'Collapse', - 'component.tagSelect.all': 'All', -}; diff --git a/demo/src/locales/en-US/globalHeader.ts b/demo/src/locales/en-US/globalHeader.ts deleted file mode 100644 index 60b6d4ec..00000000 --- a/demo/src/locales/en-US/globalHeader.ts +++ /dev/null @@ -1,17 +0,0 @@ -export default { - 'component.globalHeader.search': 'Search', - 'component.globalHeader.search.example1': 'Search example 1', - 'component.globalHeader.search.example2': 'Search example 2', - 'component.globalHeader.search.example3': 'Search example 3', - 'component.globalHeader.help': 'Help', - 'component.globalHeader.notification': 'Notification', - 'component.globalHeader.notification.empty': 'You have viewed all notifications.', - 'component.globalHeader.message': 'Message', - 'component.globalHeader.message.empty': 'You have viewed all messsages.', - 'component.globalHeader.event': 'Event', - 'component.globalHeader.event.empty': 'You have viewed all events.', - 'component.noticeIcon.clear': 'Clear', - 'component.noticeIcon.cleared': 'Cleared', - 'component.noticeIcon.empty': 'No notifications', - 'component.noticeIcon.view-more': 'View more', -}; diff --git a/demo/src/locales/en-US/menu.ts b/demo/src/locales/en-US/menu.ts deleted file mode 100644 index eae3e532..00000000 --- a/demo/src/locales/en-US/menu.ts +++ /dev/null @@ -1,52 +0,0 @@ -export default { - 'menu.welcome': 'Welcome', - 'menu.more-blocks': 'More Blocks', - 'menu.home': 'Home', - 'menu.admin': 'Admin', - 'menu.admin.sub-page': 'Sub-Page', - 'menu.login': 'Login', - 'menu.register': 'Register', - 'menu.register-result': 'Register Result', - 'menu.dashboard': 'Dashboard', - 'menu.dashboard.analysis': 'Analysis', - 'menu.dashboard.monitor': 'Monitor', - 'menu.dashboard.workplace': 'Workplace', - 'menu.exception.403': '403', - 'menu.exception.404': '404', - 'menu.exception.500': '500', - 'menu.form': 'Form', - 'menu.form.basic-form': 'Basic Form', - 'menu.form.step-form': 'Step Form', - 'menu.form.step-form.info': 'Step Form(write transfer information)', - 'menu.form.step-form.confirm': 'Step Form(confirm transfer information)', - 'menu.form.step-form.result': 'Step Form(finished)', - 'menu.form.advanced-form': 'Advanced Form', - 'menu.list': 'List', - 'menu.list.table-list': 'Search Table', - 'menu.list.basic-list': 'Basic List', - 'menu.list.card-list': 'Card List', - 'menu.list.search-list': 'Search List', - 'menu.list.search-list.articles': 'Search List(articles)', - 'menu.list.search-list.projects': 'Search List(projects)', - 'menu.list.search-list.applications': 'Search List(applications)', - 'menu.profile': 'Profile', - 'menu.profile.basic': 'Basic Profile', - 'menu.profile.advanced': 'Advanced Profile', - 'menu.result': 'Result', - 'menu.result.success': 'Success', - 'menu.result.fail': 'Fail', - 'menu.exception': 'Exception', - 'menu.exception.not-permission': '403', - 'menu.exception.not-find': '404', - 'menu.exception.server-error': '500', - 'menu.exception.trigger': 'Trigger', - 'menu.account': 'Account', - 'menu.account.center': 'Account Center', - 'menu.account.settings': 'Account Settings', - 'menu.account.trigger': 'Trigger Error', - 'menu.account.logout': 'Logout', - 'menu.editor': 'Graphic Editor', - 'menu.editor.flow': 'Flow Editor', - 'menu.editor.mind': 'Mind Editor', - 'menu.editor.koni': 'Koni Editor', -}; diff --git a/demo/src/locales/en-US/pages.ts b/demo/src/locales/en-US/pages.ts deleted file mode 100644 index 3d617424..00000000 --- a/demo/src/locales/en-US/pages.ts +++ /dev/null @@ -1,70 +0,0 @@ -export default { - 'pages.layouts.userLayout.title': - 'Ant Design is the most influential web design specification in Xihu district', - 'pages.login.accountLogin.tab': 'Account Login', - 'pages.login.accountLogin.errorMessage': 'Incorrect username/password(admin/ant.design)', - 'pages.login.failure': 'Login failed, please try again!', - 'pages.login.success': 'Login successful!', - 'pages.login.username.placeholder': 'Username: admin or user', - 'pages.login.username.required': 'Please input your username!', - 'pages.login.password.placeholder': 'Password: ant.design', - 'pages.login.password.required': 'Please input your password!', - 'pages.login.phoneLogin.tab': 'Phone Login', - 'pages.login.phoneLogin.errorMessage': 'Verification Code Error', - 'pages.login.phoneNumber.placeholder': 'Phone Number', - 'pages.login.phoneNumber.required': 'Please input your phone number!', - 'pages.login.phoneNumber.invalid': 'Phone number is invalid!', - 'pages.login.captcha.placeholder': 'Verification Code', - 'pages.login.captcha.required': 'Please input verification code!', - 'pages.login.phoneLogin.getVerificationCode': 'Get Code', - 'pages.getCaptchaSecondText': 'sec(s)', - 'pages.login.rememberMe': 'Remember me', - 'pages.login.forgotPassword': 'Forgot Password ?', - 'pages.login.submit': 'Login', - 'pages.login.loginWith': 'Login with :', - 'pages.login.registerAccount': 'Register Account', - 'pages.welcome.advancedComponent': 'Advanced Component', - 'pages.welcome.link': 'Welcome', - 'pages.welcome.advancedLayout': 'Advanced Layout', - 'pages.welcome.alertMessage': 'Faster and stronger heavy-duty components have been released.', - 'pages.admin.subPage.title': 'This page can only be viewed by Admin', - 'pages.admin.subPage.alertMessage': - 'Umi ui is now released, welcome to use npm run ui to start the experience.', - 'pages.searchTable.createForm.newRule': 'New Rule', - 'pages.searchTable.updateForm.ruleConfig': 'Rule configuration', - 'pages.searchTable.updateForm.basicConfig': 'Basic Information', - 'pages.searchTable.updateForm.ruleName.nameLabel': 'Rule Name', - 'pages.searchTable.updateForm.ruleName.nameRules': 'Please enter the rule name!', - 'pages.searchTable.updateForm.ruleDesc.descLabel': 'Rule Description', - 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': 'Please enter at least five characters', - 'pages.searchTable.updateForm.ruleDesc.descRules': - 'Please enter a rule description of at least five characters!', - 'pages.searchTable.updateForm.ruleProps.title': 'Configure Properties', - 'pages.searchTable.updateForm.object': 'Monitoring Object', - 'pages.searchTable.updateForm.ruleProps.templateLabel': 'Rule Template', - 'pages.searchTable.updateForm.ruleProps.typeLabel': 'Rule Type', - 'pages.searchTable.updateForm.schedulingPeriod.title': 'Set Scheduling Period', - 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': 'Starting Time', - 'pages.searchTable.updateForm.schedulingPeriod.timeRules': 'Please choose a start time!', - 'pages.searchTable.titleDesc': 'Description', - 'pages.searchTable.ruleName': 'Rule name is required', - 'pages.searchTable.titleCallNo': 'Number of Service Calls', - 'pages.searchTable.titleStatus': 'Status', - 'pages.searchTable.nameStatus.default': 'default', - 'pages.searchTable.nameStatus.running': 'running', - 'pages.searchTable.nameStatus.online': 'online', - 'pages.searchTable.nameStatus.abnormal': 'abnormal', - 'pages.searchTable.titleUpdatedAt': 'Last Scheduled at', - 'pages.searchTable.exception': 'Please enter the reason for the exception!', - 'pages.searchTable.titleOption': 'Option', - 'pages.searchTable.config': 'Configuration', - 'pages.searchTable.subscribeAlert': 'Subscribe to alerts', - 'pages.searchTable.title': 'Enquiry Form', - 'pages.searchTable.new': 'New', - 'pages.searchTable.chosen': 'chosen', - 'pages.searchTable.item': 'item', - 'pages.searchTable.totalServiceCalls': 'Total Number of Service Calls', - 'pages.searchTable.tenThousand': '0000', - 'pages.searchTable.batchDeletion': 'bacth deletion', - 'pages.searchTable.batchApproval': 'batch approval', -}; diff --git a/demo/src/locales/en-US/pwa.ts b/demo/src/locales/en-US/pwa.ts deleted file mode 100644 index ed8d199e..00000000 --- a/demo/src/locales/en-US/pwa.ts +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'app.pwa.offline': 'You are offline now', - 'app.pwa.serviceworker.updated': 'New content is available', - 'app.pwa.serviceworker.updated.hint': 'Please press the "Refresh" button to reload current page', - 'app.pwa.serviceworker.updated.ok': 'Refresh', -}; diff --git a/demo/src/locales/en-US/settingDrawer.ts b/demo/src/locales/en-US/settingDrawer.ts deleted file mode 100644 index a644905e..00000000 --- a/demo/src/locales/en-US/settingDrawer.ts +++ /dev/null @@ -1,31 +0,0 @@ -export default { - 'app.setting.pagestyle': 'Page style setting', - 'app.setting.pagestyle.dark': 'Dark style', - 'app.setting.pagestyle.light': 'Light style', - 'app.setting.content-width': 'Content Width', - 'app.setting.content-width.fixed': 'Fixed', - 'app.setting.content-width.fluid': 'Fluid', - 'app.setting.themecolor': 'Theme Color', - 'app.setting.themecolor.dust': 'Dust Red', - 'app.setting.themecolor.volcano': 'Volcano', - 'app.setting.themecolor.sunset': 'Sunset Orange', - 'app.setting.themecolor.cyan': 'Cyan', - 'app.setting.themecolor.green': 'Polar Green', - 'app.setting.themecolor.daybreak': 'Daybreak Blue (default)', - 'app.setting.themecolor.geekblue': 'Geek Glue', - 'app.setting.themecolor.purple': 'Golden Purple', - 'app.setting.navigationmode': 'Navigation Mode', - 'app.setting.sidemenu': 'Side Menu Layout', - 'app.setting.topmenu': 'Top Menu Layout', - 'app.setting.fixedheader': 'Fixed Header', - 'app.setting.fixedsidebar': 'Fixed Sidebar', - 'app.setting.fixedsidebar.hint': 'Works on Side Menu Layout', - 'app.setting.hideheader': 'Hidden Header when scrolling', - 'app.setting.hideheader.hint': 'Works when Hidden Header is enabled', - 'app.setting.othersettings': 'Other Settings', - 'app.setting.weakmode': 'Weak Mode', - 'app.setting.copy': 'Copy Setting', - 'app.setting.copyinfo': 'copy success,please replace defaultSettings in src/models/setting.js', - 'app.setting.production.hint': - 'Setting panel shows in development environment only, please manually modify', -}; diff --git a/demo/src/locales/en-US/settings.ts b/demo/src/locales/en-US/settings.ts deleted file mode 100644 index 822dd003..00000000 --- a/demo/src/locales/en-US/settings.ts +++ /dev/null @@ -1,60 +0,0 @@ -export default { - 'app.settings.menuMap.basic': 'Basic Settings', - 'app.settings.menuMap.security': 'Security Settings', - 'app.settings.menuMap.binding': 'Account Binding', - 'app.settings.menuMap.notification': 'New Message Notification', - 'app.settings.basic.avatar': 'Avatar', - 'app.settings.basic.change-avatar': 'Change avatar', - 'app.settings.basic.email': 'Email', - 'app.settings.basic.email-message': 'Please input your email!', - 'app.settings.basic.nickname': 'Nickname', - 'app.settings.basic.nickname-message': 'Please input your Nickname!', - 'app.settings.basic.profile': 'Personal profile', - 'app.settings.basic.profile-message': 'Please input your personal profile!', - 'app.settings.basic.profile-placeholder': 'Brief introduction to yourself', - 'app.settings.basic.country': 'Country/Region', - 'app.settings.basic.country-message': 'Please input your country!', - 'app.settings.basic.geographic': 'Province or city', - 'app.settings.basic.geographic-message': 'Please input your geographic info!', - 'app.settings.basic.address': 'Street Address', - 'app.settings.basic.address-message': 'Please input your address!', - 'app.settings.basic.phone': 'Phone Number', - 'app.settings.basic.phone-message': 'Please input your phone!', - 'app.settings.basic.update': 'Update Information', - 'app.settings.security.strong': 'Strong', - 'app.settings.security.medium': 'Medium', - 'app.settings.security.weak': 'Weak', - 'app.settings.security.password': 'Account Password', - 'app.settings.security.password-description': 'Current password strength', - 'app.settings.security.phone': 'Security Phone', - 'app.settings.security.phone-description': 'Bound phone', - 'app.settings.security.question': 'Security Question', - 'app.settings.security.question-description': - 'The security question is not set, and the security policy can effectively protect the account security', - 'app.settings.security.email': 'Backup Email', - 'app.settings.security.email-description': 'Bound Email', - 'app.settings.security.mfa': 'MFA Device', - 'app.settings.security.mfa-description': - 'Unbound MFA device, after binding, can be confirmed twice', - 'app.settings.security.modify': 'Modify', - 'app.settings.security.set': 'Set', - 'app.settings.security.bind': 'Bind', - 'app.settings.binding.taobao': 'Binding Taobao', - 'app.settings.binding.taobao-description': 'Currently unbound Taobao account', - 'app.settings.binding.alipay': 'Binding Alipay', - 'app.settings.binding.alipay-description': 'Currently unbound Alipay account', - 'app.settings.binding.dingding': 'Binding DingTalk', - 'app.settings.binding.dingding-description': 'Currently unbound DingTalk account', - 'app.settings.binding.bind': 'Bind', - 'app.settings.notification.password': 'Account Password', - 'app.settings.notification.password-description': - 'Messages from other users will be notified in the form of a station letter', - 'app.settings.notification.messages': 'System Messages', - 'app.settings.notification.messages-description': - 'System messages will be notified in the form of a station letter', - 'app.settings.notification.todo': 'To-do Notification', - 'app.settings.notification.todo-description': - 'The to-do list will be notified in the form of a letter from the station', - 'app.settings.open': 'Open', - 'app.settings.close': 'Close', -}; diff --git a/demo/src/locales/fa-IR.ts b/demo/src/locales/fa-IR.ts deleted file mode 100644 index 98445785..00000000 --- a/demo/src/locales/fa-IR.ts +++ /dev/null @@ -1,24 +0,0 @@ -import component from './fa-IR/component'; -import globalHeader from './fa-IR/globalHeader'; -import menu from './fa-IR/menu'; -import pwa from './fa-IR/pwa'; -import settingDrawer from './fa-IR/settingDrawer'; -import settings from './fa-IR/settings'; -import pages from './fa-IR/pages'; - -export default { - 'navBar.lang': 'زبان ها ', - 'layout.user.link.help': 'کمک', - 'layout.user.link.privacy': 'حریم خصوصی', - 'layout.user.link.terms': 'مقررات', - 'app.preview.down.block': 'این صفحه را در پروژه محلی خود بارگیری کنید', - 'app.welcome.link.fetch-blocks': 'دریافت تمام بلوک', - 'app.welcome.link.block-list': 'به سرعت صفحات استاندارد مبتنی بر توسعه "بلوک" را بسازید', - ...globalHeader, - ...menu, - ...settingDrawer, - ...settings, - ...pwa, - ...component, - ...pages, -}; diff --git a/demo/src/locales/fa-IR/component.ts b/demo/src/locales/fa-IR/component.ts deleted file mode 100644 index 91e7a056..00000000 --- a/demo/src/locales/fa-IR/component.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - 'component.tagSelect.expand': 'باز', - 'component.tagSelect.collapse': 'بسته ', - 'component.tagSelect.all': 'همه', -}; diff --git a/demo/src/locales/fa-IR/globalHeader.ts b/demo/src/locales/fa-IR/globalHeader.ts deleted file mode 100644 index 1a92fbb8..00000000 --- a/demo/src/locales/fa-IR/globalHeader.ts +++ /dev/null @@ -1,17 +0,0 @@ -export default { - 'component.globalHeader.search': 'جستجو ', - 'component.globalHeader.search.example1': 'مثال 1 را جستجو کنید', - 'component.globalHeader.search.example2': 'مثال 2 را جستجو کنید', - 'component.globalHeader.search.example3': 'مثال 3 را جستجو کنید', - 'component.globalHeader.help': 'کمک', - 'component.globalHeader.notification': 'اعلان', - 'component.globalHeader.notification.empty': 'شما همه اعلان ها را مشاهده کرده اید.', - 'component.globalHeader.message': 'پیام', - 'component.globalHeader.message.empty': 'شما همه پیام ها را مشاهده کرده اید.', - 'component.globalHeader.event': 'رویداد', - 'component.globalHeader.event.empty': 'شما همه رویدادها را مشاهده کرده اید.', - 'component.noticeIcon.clear': 'پاک کردن', - 'component.noticeIcon.cleared': 'پاک شد', - 'component.noticeIcon.empty': 'بدون اعلان', - 'component.noticeIcon.view-more': 'نمایش بیشتر', -}; diff --git a/demo/src/locales/fa-IR/menu.ts b/demo/src/locales/fa-IR/menu.ts deleted file mode 100644 index c67e0039..00000000 --- a/demo/src/locales/fa-IR/menu.ts +++ /dev/null @@ -1,52 +0,0 @@ -export default { - 'menu.welcome': 'خوش آمدید', - 'menu.more-blocks': 'بلوک های بیشتر', - 'menu.home': 'خانه', - 'menu.admin': 'مدیر', - 'menu.admin.sub-page': 'زیر صفحه', - 'menu.login': 'ورود', - 'menu.register': 'ثبت نام', - 'menu.register-result': 'ثبت نام نتیجه', - 'menu.dashboard': 'داشبورد', - 'menu.dashboard.analysis': 'تحلیل و بررسی', - 'menu.dashboard.monitor': 'نظارت', - 'menu.dashboard.workplace': 'محل کار', - 'menu.exception.403': '403', - 'menu.exception.404': '404', - 'menu.exception.500': '500', - 'menu.form': 'فرم', - 'menu.form.basic-form': 'فرم اساسی', - 'menu.form.step-form': 'فرم مرحله', - 'menu.form.step-form.info': 'فرم مرحله (نوشتن اطلاعات انتقال)', - 'menu.form.step-form.confirm': 'فرم مرحله (تأیید اطلاعات انتقال)', - 'menu.form.step-form.result': 'فرم مرحله (تمام شده)', - 'menu.form.advanced-form': 'فرم پیشرفته', - 'menu.list': 'لیست', - 'menu.list.table-list': 'جدول جستجو', - 'menu.list.basic-list': 'لیست اصلی', - 'menu.list.card-list': 'لیست کارت', - 'menu.list.search-list': 'لیست جستجو', - 'menu.list.search-list.articles': 'لیست جستجو (مقالات)', - 'menu.list.search-list.projects': 'لیست جستجو (پروژه ها)', - 'menu.list.search-list.applications': 'لیست جستجو (برنامه ها)', - 'menu.profile': 'مشخصات', - 'menu.profile.basic': 'مشخصات عمومی', - 'menu.profile.advanced': 'مشخصات پیشرفته', - 'menu.result': 'نتیجه', - 'menu.result.success': 'موفق', - 'menu.result.fail': 'ناموفق', - 'menu.exception': 'استثنا', - 'menu.exception.not-permission': '403', - 'menu.exception.not-find': '404', - 'menu.exception.server-error': '500', - 'menu.exception.trigger': 'راه اندازی', - 'menu.account': 'حساب', - 'menu.account.center': 'مرکز حساب', - 'menu.account.settings': 'تنظیمات حساب', - 'menu.account.trigger': 'خطای راه اندازی', - 'menu.account.logout': 'خروج', - 'menu.editor': 'ویرایشگر گرافیک', - 'menu.editor.flow': 'ویرایشگر جریان', - 'menu.editor.mind': 'ویرایشگر ذهن', - 'menu.editor.koni': 'ویرایشگر Koni', -}; diff --git a/demo/src/locales/fa-IR/pages.ts b/demo/src/locales/fa-IR/pages.ts deleted file mode 100644 index d2782d3d..00000000 --- a/demo/src/locales/fa-IR/pages.ts +++ /dev/null @@ -1,67 +0,0 @@ -export default { - 'pages.layouts.userLayout.title': 'طراحی مورچه تأثیرگذارترین مشخصات طراحی وب در منطقه Xihu است', - 'pages.login.accountLogin.tab': 'ورود به حساب کاربری', - 'pages.login.accountLogin.errorMessage': 'نام کاربری / رمزعبور نادرست (مدیر / ant.design)', - 'pages.login.username.placeholder': 'نام کاربری: مدیر یا کاربر', - 'pages.login.username.required': 'لطفا نام کاربری خود را وارد کنید!', - 'pages.login.password.placeholder': 'رمز عبور: ant.design', - 'pages.login.password.required': 'لطفاً رمز ورود خود را وارد کنید!', - 'pages.login.phoneLogin.tab': 'ورود به سیستم تلفن', - 'pages.login.phoneLogin.errorMessage': 'خطای کد تأیید', - 'pages.login.phoneNumber.placeholder': 'شماره تلفن', - 'pages.login.phoneNumber.required': 'لطفاً شماره تلفن خود را وارد کنید!', - 'pages.login.phoneNumber.invalid': 'شماره تلفن نامعتبر است!', - 'pages.login.captcha.placeholder': 'کد تایید', - 'pages.login.captcha.required': 'لطفا کد تأیید را وارد کنید!', - 'pages.login.phoneLogin.getVerificationCode': 'دریافت کد', - 'pages.getCaptchaSecondText': 'ثانیه', - 'pages.login.rememberMe': 'مرا به خاطر بسپار', - 'pages.login.forgotPassword': 'رمز عبور را فراموش کرده اید ?', - 'pages.login.submit': 'ارسال', - 'pages.login.loginWith': 'وارد شوید با :', - 'pages.login.registerAccount': 'ثبت نام', - 'pages.welcome.advancedComponent': 'مولفه پیشرفته', - 'pages.welcome.link': 'خوش آمدید', - 'pages.welcome.advancedLayout': 'چیدمان پیشرفته', - 'pages.welcome.alertMessage': 'اجزای سنگین تر سریعتر و قوی تر آزاد شده اند.', - 'pages.admin.subPage.title': 'این صفحه فقط توسط مدیر قابل مشاهده است', - 'pages.admin.subPage.alertMessage': - 'رابط کاربری Umi اکنون منتشر شده است ، برای شروع تجربه استفاده از npm run ui خوش آمدید.', - 'pages.searchTable.createForm.newRule': 'قانون جدید', - 'pages.searchTable.updateForm.ruleConfig': 'پیکربندی قانون', - 'pages.searchTable.updateForm.basicConfig': 'اطلاعات اولیه', - 'pages.searchTable.updateForm.ruleName.nameLabel': ' نام قانون', - 'pages.searchTable.updateForm.ruleName.nameRules': 'لطفاً نام قانون را وارد کنید!', - 'pages.searchTable.updateForm.ruleDesc.descLabel': 'شرح قانون', - 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': 'لطفاً حداقل پنج حرف وارد کنید', - 'pages.searchTable.updateForm.ruleDesc.descRules': - 'لطفاً حداقل یک قانون حاوی پنج کاراکتر شرح دهید!', - 'pages.searchTable.updateForm.ruleProps.title': 'پیکربندی خصوصیات', - 'pages.searchTable.updateForm.object': 'نظارت بر شی', - 'pages.searchTable.updateForm.ruleProps.templateLabel': 'الگوی قانون', - 'pages.searchTable.updateForm.ruleProps.typeLabel': 'نوع قانون', - 'pages.searchTable.updateForm.schedulingPeriod.title': 'تنظیم دوره زمان بندی', - 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': 'زمان شروع', - 'pages.searchTable.updateForm.schedulingPeriod.timeRules': 'لطفاً زمان شروع را انتخاب کنید!', - 'pages.searchTable.titleDesc': 'شرح', - 'pages.searchTable.ruleName': 'نام قانون لازم است', - 'pages.searchTable.titleCallNo': 'تعداد تماس های خدماتی', - 'pages.searchTable.titleStatus': 'وضعیت', - 'pages.searchTable.nameStatus.default': 'پیش فرض', - 'pages.searchTable.nameStatus.running': 'در حال دویدن', - 'pages.searchTable.nameStatus.online': 'برخط', - 'pages.searchTable.nameStatus.abnormal': 'غیرطبیعی', - 'pages.searchTable.titleUpdatedAt': 'آخرین برنامه ریزی در', - 'pages.searchTable.exception': 'لطفا دلیل استثنا را وارد کنید!', - 'pages.searchTable.titleOption': 'گزینه', - 'pages.searchTable.config': 'پیکربندی', - 'pages.searchTable.subscribeAlert': 'مشترک شدن در هشدارها', - 'pages.searchTable.title': 'فرم درخواست', - 'pages.searchTable.new': 'جدید', - 'pages.searchTable.chosen': 'انتخاب شده', - 'pages.searchTable.item': 'مورد', - 'pages.searchTable.totalServiceCalls': 'تعداد کل تماس های خدماتی', - 'pages.searchTable.tenThousand': '0000', - 'pages.searchTable.batchDeletion': 'حذف دسته ای', - 'pages.searchTable.batchApproval': 'تصویب دسته ای', -}; diff --git a/demo/src/locales/fa-IR/pwa.ts b/demo/src/locales/fa-IR/pwa.ts deleted file mode 100644 index 54831b4c..00000000 --- a/demo/src/locales/fa-IR/pwa.ts +++ /dev/null @@ -1,7 +0,0 @@ -export default { - 'app.pwa.offline': 'شما اکنون آفلاین هستید', - 'app.pwa.serviceworker.updated': 'مطالب جدید در دسترس است', - 'app.pwa.serviceworker.updated.hint': - 'لطفاً برای بارگیری مجدد صفحه فعلی ، دکمه "تازه سازی" را فشار دهید', - 'app.pwa.serviceworker.updated.ok': 'تازه سازی', -}; diff --git a/demo/src/locales/fa-IR/settingDrawer.ts b/demo/src/locales/fa-IR/settingDrawer.ts deleted file mode 100644 index cb223d54..00000000 --- a/demo/src/locales/fa-IR/settingDrawer.ts +++ /dev/null @@ -1,32 +0,0 @@ -export default { - 'app.setting.pagestyle': 'تنظیم نوع صفحه', - 'app.setting.pagestyle.dark': 'سبک تیره', - 'app.setting.pagestyle.light': 'سبک سبک', - 'app.setting.content-width': 'عرض محتوا', - 'app.setting.content-width.fixed': 'ثابت', - 'app.setting.content-width.fluid': 'شناور', - 'app.setting.themecolor': 'رنگ تم', - 'app.setting.themecolor.dust': 'گرد و غبار قرمز', - 'app.setting.themecolor.volcano': 'آتشفشان', - 'app.setting.themecolor.sunset': 'غروب نارنجی', - 'app.setting.themecolor.cyan': 'فیروزه ای', - 'app.setting.themecolor.green': 'سبز قطبی', - 'app.setting.themecolor.daybreak': 'آبی روشن(پیشفرض)', - 'app.setting.themecolor.geekblue': 'چسب گیک', - 'app.setting.themecolor.purple': 'بنفش طلایی', - 'app.setting.navigationmode': 'حالت پیمایش', - 'app.setting.sidemenu': 'طرح منوی کناری', - 'app.setting.topmenu': 'طرح منوی بالایی', - 'app.setting.fixedheader': 'سرصفحه ثابت', - 'app.setting.fixedsidebar': 'نوار کناری ثابت', - 'app.setting.fixedsidebar.hint': 'کار بر روی منوی کناری', - 'app.setting.hideheader': 'هدر پنهان هنگام پیمایش', - 'app.setting.hideheader.hint': 'وقتی Hidden Header فعال باشد کار می کند', - 'app.setting.othersettings': 'تنظیمات دیگر', - 'app.setting.weakmode': 'حالت ضعیف', - 'app.setting.copy': 'تنظیمات کپی', - 'app.setting.copyinfo': - 'موفقیت در کپی کردن , لطفا defaultSettings را در src / models / setting.js جایگزین کنید', - 'app.setting.production.hint': - 'صفحه تنظیم فقط در محیط توسعه نمایش داده می شود ، لطفاً دستی تغییر دهید', -}; diff --git a/demo/src/locales/fa-IR/settings.ts b/demo/src/locales/fa-IR/settings.ts deleted file mode 100644 index 040bc319..00000000 --- a/demo/src/locales/fa-IR/settings.ts +++ /dev/null @@ -1,60 +0,0 @@ -export default { - 'app.settings.menuMap.basic': 'تنظیمات پایه ', - 'app.settings.menuMap.security': 'تنظیمات امنیتی', - 'app.settings.menuMap.binding': 'صحافی حساب', - 'app.settings.menuMap.notification': 'اعلان پیام جدید', - 'app.settings.basic.avatar': 'آواتار', - 'app.settings.basic.change-avatar': 'آواتار را تغییر دهید', - 'app.settings.basic.email': 'ایمیل', - 'app.settings.basic.email-message': 'لطفا ایمیل خود را وارد کنید!', - 'app.settings.basic.nickname': 'نام مستعار', - 'app.settings.basic.nickname-message': 'لطفاً نام مستعار خود را وارد کنید!', - 'app.settings.basic.profile': 'پروفایل شخصی', - 'app.settings.basic.profile-message': 'لطفاً مشخصات شخصی خود را وارد کنید!', - 'app.settings.basic.profile-placeholder': 'معرفی مختصر خودتان', - 'app.settings.basic.country': 'کشور / منطقه', - 'app.settings.basic.country-message': 'لطفاً کشور خود را وارد کنید!', - 'app.settings.basic.geographic': 'استان یا شهر', - 'app.settings.basic.geographic-message': 'لطفاً اطلاعات جغرافیایی خود را وارد کنید!', - 'app.settings.basic.address': 'آدرس خیابان', - 'app.settings.basic.address-message': 'لطفا آدرس خود را وارد کنید!', - 'app.settings.basic.phone': 'شماره تلفن', - 'app.settings.basic.phone-message': 'لطفاً تلفن خود را وارد کنید!', - 'app.settings.basic.update': 'به روز رسانی اطلاعات', - 'app.settings.security.strong': 'قوی', - 'app.settings.security.medium': 'متوسط', - 'app.settings.security.weak': 'ضعیف', - 'app.settings.security.password': 'رمز عبور حساب کاربری', - 'app.settings.security.password-description': 'قدرت رمز عبور فعلی', - 'app.settings.security.phone': 'تلفن امنیتی', - 'app.settings.security.phone-description': 'تلفن مقید', - 'app.settings.security.question': 'سوال امنیتی', - 'app.settings.security.question-description': - 'سوال امنیتی تنظیم نشده است و سیاست امنیتی می تواند به طور موثر از امنیت حساب محافظت کند', - 'app.settings.security.email': 'ایمیل پشتیبان', - 'app.settings.security.email-description': 'ایمیل مقید', - 'app.settings.security.mfa': 'دستگاه MFA', - 'app.settings.security.mfa-description': - 'دستگاه MFA بسته نشده ، پس از اتصال ، می تواند دو بار تأیید شود', - 'app.settings.security.modify': 'تغییر', - 'app.settings.security.set': 'تنظیم', - 'app.settings.security.bind': 'بستن', - 'app.settings.binding.taobao': 'اتصال Taobao', - 'app.settings.binding.taobao-description': 'حساب Taobao در حال حاضر بسته نشده است', - 'app.settings.binding.alipay': 'اتصال Alipay', - 'app.settings.binding.alipay-description': 'حساب Alipay در حال حاضر بسته نشده است', - 'app.settings.binding.dingding': 'اتصال DingTalk', - 'app.settings.binding.dingding-description': 'حساب DingTalk در حال حاضر محدود نشده است', - 'app.settings.binding.bind': 'بستن', - 'app.settings.notification.password': 'رمز عبور حساب کاربری', - 'app.settings.notification.password-description': - 'پیام های سایر کاربران در قالب یک نامه ایستگاهی اعلام خواهد شد', - 'app.settings.notification.messages': 'پیام های سیستم', - 'app.settings.notification.messages-description': - 'پیام های سیستم به صورت نامه ایستگاه مطلع می شوند', - 'app.settings.notification.todo': 'اعلان کارها', - 'app.settings.notification.todo-description': - 'لیست کارها به صورت نامه ای از ایستگاه اطلاع داده می شود', - 'app.settings.open': 'باز کن', - 'app.settings.close': 'بستن', -}; diff --git a/demo/src/locales/id-ID.ts b/demo/src/locales/id-ID.ts deleted file mode 100644 index 79100d43..00000000 --- a/demo/src/locales/id-ID.ts +++ /dev/null @@ -1,25 +0,0 @@ -import component from './id-ID/component'; -import globalHeader from './id-ID/globalHeader'; -import menu from './id-ID/menu'; -import pwa from './id-ID/pwa'; -import settingDrawer from './id-ID/settingDrawer'; -import settings from './id-ID/settings'; -import pages from './id-ID/pages'; - -export default { - 'navbar.lang': 'Bahasa', - 'layout.user.link.help': 'Bantuan', - 'layout.user.link.privacy': 'Privasi', - 'layout.user.link.terms': 'Ketentuan', - 'app.preview.down.block': 'Unduh halaman ini dalam projek lokal anda', - 'app.welcome.link.fetch-blocks': 'Dapatkan semua blok', - 'app.welcome.link.block-list': - 'Buat standar dengan cepat, halaman-halaman berdasarkan pengembangan `block`', - ...globalHeader, - ...menu, - ...settingDrawer, - ...settings, - ...pwa, - ...component, - ...pages, -}; diff --git a/demo/src/locales/id-ID/component.ts b/demo/src/locales/id-ID/component.ts deleted file mode 100644 index fe583aff..00000000 --- a/demo/src/locales/id-ID/component.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - 'component.tagSelect.expand': 'Perluas', - 'component.tagSelect.collapse': 'Lipat', - 'component.tagSelect.all': 'Semua', -}; diff --git a/demo/src/locales/id-ID/globalHeader.ts b/demo/src/locales/id-ID/globalHeader.ts deleted file mode 100644 index e6283ea8..00000000 --- a/demo/src/locales/id-ID/globalHeader.ts +++ /dev/null @@ -1,17 +0,0 @@ -export default { - 'component.globalHeader.search': 'Pencarian', - 'component.globalHeader.search.example1': 'Contoh 1 Pencarian', - 'component.globalHeader.search.example2': 'Contoh 2 Pencarian', - 'component.globalHeader.search.example3': 'Contoh 3 Pencarian', - 'component.globalHeader.help': 'Bantuan', - 'component.globalHeader.notification': 'Notifikasi', - 'component.globalHeader.notification.empty': 'Anda telah membaca semua notifikasi', - 'component.globalHeader.message': 'Pesan', - 'component.globalHeader.message.empty': 'Anda telah membaca semua pesan.', - 'component.globalHeader.event': 'Acara', - 'component.globalHeader.event.empty': 'Anda telah melihat semua acara.', - 'component.noticeIcon.clear': 'Kosongkan', - 'component.noticeIcon.cleared': 'Berhasil dikosongkan', - 'component.noticeIcon.empty': 'Tidak ada pemberitahuan', - 'component.noticeIcon.view-more': 'Melihat lebih', -}; diff --git a/demo/src/locales/id-ID/menu.ts b/demo/src/locales/id-ID/menu.ts deleted file mode 100644 index 254ff443..00000000 --- a/demo/src/locales/id-ID/menu.ts +++ /dev/null @@ -1,52 +0,0 @@ -export default { - 'menu.welcome': 'Selamat Datang', - 'menu.more-blocks': 'Blocks Lainnya', - 'menu.home': 'Halaman Awal', - 'menu.admin': 'Admin', - 'menu.admin.sub-page': 'Sub-Halaman', - 'menu.login': 'Masuk', - 'menu.register': 'Pendaftaran', - 'menu.register-result': 'Hasil Pendaftaran', - 'menu.dashboard': 'Dasbor', - 'menu.dashboard.analysis': 'Analisis', - 'menu.dashboard.monitor': 'Monitor', - 'menu.dashboard.workplace': 'Workplace', - 'menu.exception.403': '403', - 'menu.exception.404': '404', - 'menu.exception.500': '500', - 'menu.form': 'Form', - 'menu.form.basic-form': 'Form Dasar', - 'menu.form.step-form': 'Form Bertahap', - 'menu.form.step-form.info': 'Form Bertahap(menulis informasi yang dibagikan)', - 'menu.form.step-form.confirm': 'Form Bertahap(konfirmasi informasi yang dibagikan)', - 'menu.form.step-form.result': 'Form Bertahap(selesai)', - 'menu.form.advanced-form': 'Form Lanjutan', - 'menu.list': 'Daftar', - 'menu.list.table-list': 'Tabel Pencarian', - 'menu.list.basic-list': 'Daftar Dasar', - 'menu.list.card-list': 'Daftar Kartu', - 'menu.list.search-list': 'Daftar Pencarian', - 'menu.list.search-list.articles': 'Daftar Pencarian(artikel)', - 'menu.list.search-list.projects': 'Daftar Pencarian(projek)', - 'menu.list.search-list.applications': 'Daftar Pencarian(aplikasi)', - 'menu.profile': 'Profil', - 'menu.profile.basic': 'Profil Dasar', - 'menu.profile.advanced': 'Profile Lanjutan', - 'menu.result': 'Hasil', - 'menu.result.success': 'Sukses', - 'menu.result.fail': 'Gagal', - 'menu.exception': 'Pengecualian', - 'menu.exception.not-permission': '403', - 'menu.exception.not-find': '404', - 'menu.exception.server-error': '500', - 'menu.exception.trigger': 'Jalankan', - 'menu.account': 'Akun', - 'menu.account.center': 'Detail Akun', - 'menu.account.settings': 'Pengaturan Akun', - 'menu.account.trigger': 'Mengaktivasi Error', - 'menu.account.logout': 'Keluar', - 'menu.editor': 'Penyusun Grafis', - 'menu.editor.flow': 'Penyusun Alur', - 'menu.editor.mind': 'Penyusun Mind', - 'menu.editor.koni': 'Penyusun Koni', -}; diff --git a/demo/src/locales/id-ID/pages.ts b/demo/src/locales/id-ID/pages.ts deleted file mode 100644 index ebae874f..00000000 --- a/demo/src/locales/id-ID/pages.ts +++ /dev/null @@ -1,70 +0,0 @@ -export default { - 'pages.layouts.userLayout.title': - 'Ant Design adalah spesifikasi desain Web yang paling berpengaruh di Kabupaten Xihu', - 'pages.login.accountLogin.tab': 'Login dengan akun', - 'pages.login.accountLogin.errorMessage': 'Nama pengguna dan kata sandi salah(admin/ant.design)', - 'pages.login.username.placeholder': 'nama pengguna: admin atau user', - 'pages.login.username.required': 'Nama pengguna harus diisi!', - 'pages.login.password.placeholder': 'kata sandi: ant.design', - 'pages.login.password.required': 'Kata sandi harus diisi!', - 'pages.login.phoneLogin.tab': 'Login dengan ponsel', - 'pages.login.phoneLogin.errorMessage': 'Kesalahan kode verifikasi', - 'pages.login.phoneNumber.placeholder': 'masukkan nomor telepon', - 'pages.login.phoneNumber.required': 'Nomor ponsel harus diisi!', - 'pages.login.phoneNumber.invalid': 'Nomor ponsel tidak valid!', - 'pages.login.captcha.placeholder': 'kode verifikasi', - 'pages.login.captcha.required': 'Kode verifikasi diperlukan!', - 'pages.login.phoneLogin.getVerificationCode': 'Dapatkan kode', - 'pages.getCaptchaSecondText': 'detik tersisa', - 'pages.login.rememberMe': 'Ingat saya', - 'pages.login.forgotPassword': 'Lupa Kata Sandi?', - 'pages.login.submit': 'Masuk', - 'pages.login.loginWith': 'Masuk dengan :', - 'pages.login.registerAccount': 'Daftar Akun', - 'pages.welcome.advancedComponent': 'Formulir Lanjutan', - 'pages.welcome.link': 'Selamat datang', - 'pages.welcome.advancedLayout': 'Tata letak Lanjutan', - 'pages.welcome.alertMessage': - 'Komponen heavy-duty yang lebih cepat dan lebih kuat telah dirilis.', - 'pages.admin.subPage.title': 'Halaman ini hanya dapat dilihat oleh admin', - 'pages.admin.subPage.alertMessage': - 'umi ui telah dirilis, silahkan gunakan npm run ui untuk memulai pengalaman.', - 'pages.searchTable.createForm.newRule': 'Aturan baru', - 'pages.searchTable.updateForm.ruleConfig': 'Konfigurasi aturan', - 'pages.searchTable.updateForm.basicConfig': 'Informasi dasar', - 'pages.searchTable.updateForm.ruleName.nameLabel': 'Nama aturan', - 'pages.searchTable.updateForm.ruleName.nameRules': 'Harap masukkan nama aturan!', - 'pages.searchTable.updateForm.ruleDesc.descLabel': 'Deskripsi aturan', - 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': - 'Harap masukkan setidaknya lima karakter', - 'pages.searchTable.updateForm.ruleDesc.descRules': - 'Harap masukkan deskripsi aturan setidaknya lima karakter!', - 'pages.searchTable.updateForm.ruleProps.title': 'Properti aturan', - 'pages.searchTable.updateForm.object': 'Objek pemantauan', - 'pages.searchTable.updateForm.ruleProps.templateLabel': 'Template aturan', - 'pages.searchTable.updateForm.ruleProps.typeLabel': 'Jenis aturan', - 'pages.searchTable.updateForm.schedulingPeriod.title': 'Periode penjadwalan', - 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': 'Waktu mulai', - 'pages.searchTable.updateForm.schedulingPeriod.timeRules': 'Pilih waktu mulai!', - 'pages.searchTable.titleDesc': 'deskripsi', - 'pages.searchTable.ruleName': 'Nama aturan wajib diisi', - 'pages.searchTable.titleCallNo': 'Jumlah panggilan', - 'pages.searchTable.titleStatus': 'Status', - 'pages.searchTable.nameStatus.default': 'default', - 'pages.searchTable.nameStatus.running': 'menyala', - 'pages.searchTable.nameStatus.online': 'online', - 'pages.searchTable.nameStatus.abnormal': 'abnormal', - 'pages.searchTable.titleUpdatedAt': 'Waktu terjadwal', - 'pages.searchTable.exception': 'Harap masukkan alasan pengecualian!', - 'pages.searchTable.titleOption': 'Pengoperasian', - 'pages.searchTable.config': 'Konfigurasi', - 'pages.searchTable.subscribeAlert': 'Berlangganan notifikasi', - 'pages.searchTable.title': 'Formulir pertanyaan', - 'pages.searchTable.new': 'Baru', - 'pages.searchTable.chosen': 'Terpilih', - 'pages.searchTable.item': 'item', - 'pages.searchTable.totalServiceCalls': 'Jumlah total panggilan layanan', - 'pages.searchTable.tenThousand': '0000', - 'pages.searchTable.batchDeletion': 'Penghapusan batch', - 'pages.searchTable.batchApproval': 'Persetujuan batch', -}; diff --git a/demo/src/locales/id-ID/pwa.ts b/demo/src/locales/id-ID/pwa.ts deleted file mode 100644 index b2cb8a12..00000000 --- a/demo/src/locales/id-ID/pwa.ts +++ /dev/null @@ -1,7 +0,0 @@ -export default { - 'app.pwa.offline': 'Koneksi anda terputus', - 'app.pwa.serviceworker.updated': 'Konten baru sudah tersedia', - 'app.pwa.serviceworker.updated.hint': - 'Silahkan klik tombol "Refresh" untuk memuat ulang halaman ini', - 'app.pwa.serviceworker.updated.ok': 'Memuat ulang', -}; diff --git a/demo/src/locales/id-ID/settingDrawer.ts b/demo/src/locales/id-ID/settingDrawer.ts deleted file mode 100644 index f2d3e407..00000000 --- a/demo/src/locales/id-ID/settingDrawer.ts +++ /dev/null @@ -1,32 +0,0 @@ -export default { - 'app.setting.pagestyle': 'Pengaturan style Halaman', - 'app.setting.pagestyle.dark': 'Style Gelap', - 'app.setting.pagestyle.light': 'Style Cerah', - 'app.setting.content-width': 'Lebar Konten', - 'app.setting.content-width.fixed': 'Tetap', - 'app.setting.content-width.fluid': 'Fluid', - 'app.setting.themecolor': 'Theme Color', - 'app.setting.themecolor.dust': 'Dust Red', - 'app.setting.themecolor.volcano': 'Volcano', - 'app.setting.themecolor.sunset': 'Sunset Orange', - 'app.setting.themecolor.cyan': 'Cyan', - 'app.setting.themecolor.green': 'Polar Green', - 'app.setting.themecolor.daybreak': 'Daybreak Blue (bawaan)', - 'app.setting.themecolor.geekblue': 'Geek Glue', - 'app.setting.themecolor.purple': 'Golden Purple', - 'app.setting.navigationmode': 'Mode Navigasi', - 'app.setting.sidemenu': 'Susunan Menu Samping', - 'app.setting.topmenu': 'Susunan Menu Atas', - 'app.setting.fixedheader': 'Header Tetap', - 'app.setting.fixedsidebar': 'Sidebar Tetap', - 'app.setting.fixedsidebar.hint': 'Berjalan pada Susunan Menu Samping', - 'app.setting.hideheader': 'Sembunyikan Header ketika gulir ke bawah', - 'app.setting.hideheader.hint': 'Bekerja ketika Header tersembunyi dimunculkan', - 'app.setting.othersettings': 'Pengaturan Lainnya', - 'app.setting.weakmode': 'Mode Lemah', - 'app.setting.copy': 'Salin Pengaturan', - 'app.setting.copyinfo': - 'Berhasil disalin,tolong ubah defaultSettings pada src/models/setting.js', - 'app.setting.production.hint': - 'Panel pengaturan hanya muncul pada lingkungan pengembangan, silahkan modifikasi secara menual', -}; diff --git a/demo/src/locales/id-ID/settings.ts b/demo/src/locales/id-ID/settings.ts deleted file mode 100644 index 04b7d120..00000000 --- a/demo/src/locales/id-ID/settings.ts +++ /dev/null @@ -1,60 +0,0 @@ -export default { - 'app.settings.menuMap.basic': 'Pengaturan Dasar', - 'app.settings.menuMap.security': 'Pengaturan Keamanan', - 'app.settings.menuMap.binding': 'Pengikatan Akun', - 'app.settings.menuMap.notification': 'Notifikasi Pesan Baru', - 'app.settings.basic.avatar': 'Avatar', - 'app.settings.basic.change-avatar': 'Ubah avatar', - 'app.settings.basic.email': 'Email', - 'app.settings.basic.email-message': 'Tolong masukkan email!', - 'app.settings.basic.nickname': 'Nickname', - 'app.settings.basic.nickname-message': 'Tolong masukkan Nickname!', - 'app.settings.basic.profile': 'Profil Personal', - 'app.settings.basic.profile-message': 'Tolong masukkan profil personal!', - 'app.settings.basic.profile-placeholder': 'Perkenalan Singkat tentang Diri Anda', - 'app.settings.basic.country': 'Negara/Wilayah', - 'app.settings.basic.country-message': 'Tolong masukkan negara anda!', - 'app.settings.basic.geographic': 'Provinsi atau kota', - 'app.settings.basic.geographic-message': 'Tolong masukkan info geografis anda!', - 'app.settings.basic.address': 'Alamat Jalan', - 'app.settings.basic.address-message': 'Tolong masukkan Alamat Jalan anda!', - 'app.settings.basic.phone': 'Nomor Ponsel', - 'app.settings.basic.phone-message': 'Tolong masukkan Nomor Ponsel anda!', - 'app.settings.basic.update': 'Perbarui Informasi', - 'app.settings.security.strong': 'Kuat', - 'app.settings.security.medium': 'Sedang', - 'app.settings.security.weak': 'Lemah', - 'app.settings.security.password': 'Kata Sandi Akun', - 'app.settings.security.password-description': 'Kekuatan Kata Sandi saat ini', - 'app.settings.security.phone': 'Keamanan Ponsel', - 'app.settings.security.phone-description': 'Mengikat Ponsel', - 'app.settings.security.question': 'Pertanyaan Keamanan', - 'app.settings.security.question-description': - 'Pertanyaan Keamanan belum diatur, dan kebijakan keamanan dapat melindungi akun secara efektif', - 'app.settings.security.email': 'Email Cadangan', - 'app.settings.security.email-description': 'Mengikat Email', - 'app.settings.security.mfa': 'Perangka MFA', - 'app.settings.security.mfa-description': - 'Tidak mengikat Perangkat MFA, setelah diikat, dapat dikonfirmasi dua kali', - 'app.settings.security.modify': 'Modifikasi', - 'app.settings.security.set': 'Setel', - 'app.settings.security.bind': 'Ikat', - 'app.settings.binding.taobao': 'Mengikat Taobao', - 'app.settings.binding.taobao-description': 'Tidak mengikat akun Taobao saat ini', - 'app.settings.binding.alipay': 'Mengikat Alipay', - 'app.settings.binding.alipay-description': 'Tidak mengikat akun Alipay saat ini', - 'app.settings.binding.dingding': 'Mengikat DingTalk', - 'app.settings.binding.dingding-description': 'Tidak mengikat akun DingTalk', - 'app.settings.binding.bind': 'Ikat', - 'app.settings.notification.password': 'Kata Sandi Akun', - 'app.settings.notification.password-description': - 'Pesan dari pengguna lain akan diberitahu dalam bentuk surat', - 'app.settings.notification.messages': 'Pesan Sistem', - 'app.settings.notification.messages-description': - 'Pesan sistem akan diberitahu dalam bentuk surat', - 'app.settings.notification.todo': 'Notifikasi daftar To-do', - 'app.settings.notification.todo-description': - 'Daftar to-do akan diberitahukan dalam bentuk surat dari stasiun', - 'app.settings.open': 'Buka', - 'app.settings.close': 'Tutup', -}; diff --git a/demo/src/locales/ja-JP.ts b/demo/src/locales/ja-JP.ts deleted file mode 100644 index ed51f694..00000000 --- a/demo/src/locales/ja-JP.ts +++ /dev/null @@ -1,24 +0,0 @@ -import globalHeader from './ja-JP/globalHeader'; -import menu from './ja-JP/menu'; -import settingDrawer from './ja-JP/settingDrawer'; -import settings from './ja-JP/settings'; -import pwa from './ja-JP/pwa'; -import component from './ja-JP/component'; -import pages from './ja-JP/pages'; - -export default { - 'navBar.lang': '言語', - 'layout.user.link.help': 'ヘルプ', - 'layout.user.link.privacy': 'プライバシー', - 'layout.user.link.terms': '利用規約', - 'app.preview.down.block': 'このページをローカルプロジェクトにダウンロードしてください', - 'app.welcome.link.fetch-blocks': '', - 'app.welcome.link.block-list': '', - ...globalHeader, - ...menu, - ...settingDrawer, - ...settings, - ...pwa, - ...component, - ...pages, -}; diff --git a/demo/src/locales/ja-JP/component.ts b/demo/src/locales/ja-JP/component.ts deleted file mode 100644 index 40f238c0..00000000 --- a/demo/src/locales/ja-JP/component.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - 'component.tagSelect.expand': '展開', - 'component.tagSelect.collapse': '折りたたむ', - 'component.tagSelect.all': 'すべて', -}; diff --git a/demo/src/locales/ja-JP/globalHeader.ts b/demo/src/locales/ja-JP/globalHeader.ts deleted file mode 100644 index 16429387..00000000 --- a/demo/src/locales/ja-JP/globalHeader.ts +++ /dev/null @@ -1,17 +0,0 @@ -export default { - 'component.globalHeader.search': '検索', - 'component.globalHeader.search.example1': '検索例1', - 'component.globalHeader.search.example2': '検索例2', - 'component.globalHeader.search.example3': '検索例3', - 'component.globalHeader.help': 'ヘルプ', - 'component.globalHeader.notification': '通知', - 'component.globalHeader.notification.empty': 'すべての通知を表示しました。', - 'component.globalHeader.message': 'メッセージ', - 'component.globalHeader.message.empty': 'すべてのメッセージを表示しました。', - 'component.globalHeader.event': 'イベント', - 'component.globalHeader.event.empty': 'すべてのイベントを表示しました。', - 'component.noticeIcon.clear': 'クリア', - 'component.noticeIcon.cleared': 'クリア済み', - 'component.noticeIcon.empty': '通知なし', - 'component.noticeIcon.view-more': 'もっと見る', -}; diff --git a/demo/src/locales/ja-JP/menu.ts b/demo/src/locales/ja-JP/menu.ts deleted file mode 100644 index af6ed0ea..00000000 --- a/demo/src/locales/ja-JP/menu.ts +++ /dev/null @@ -1,52 +0,0 @@ -export default { - 'menu.welcome': 'ようこそ', - 'menu.more-blocks': 'その他のブロック', - 'menu.home': 'ホーム', - 'menu.admin': '管理者', - 'menu.admin.sub-page': 'サブページ', - 'menu.login': 'ログイン', - 'menu.register': '登録', - 'menu.register-result': '登録結果', - 'menu.dashboard': 'ダッシュボード', - 'menu.dashboard.analysis': '分析', - 'menu.dashboard.monitor': 'モニター', - 'menu.dashboard.workplace': '職場', - 'menu.exception.403': '403', - 'menu.exception.404': '404', - 'menu.exception.500': '500', - 'menu.form': 'フォーム', - 'menu.form.basic-form': '基本フォーム', - 'menu.form.step-form': 'ステップフォーム', - 'menu.form.step-form.info': 'ステップフォーム(転送情報の書き込み)', - 'menu.form.step-form.confirm': 'ステップフォーム(転送情報の確認)', - 'menu.form.step-form.result': 'ステップフォーム(完成)', - 'menu.form.advanced-form': '高度なフォーム', - 'menu.list': 'リスト', - 'menu.list.table-list': '検索テーブル', - 'menu.list.basic-list': '基本リスト', - 'menu.list.card-list': 'カードリスト', - 'menu.list.search-list': '検索リスト', - 'menu.list.search-list.articles': '検索リスト(記事)', - 'menu.list.search-list.projects': '検索リスト(プロジェクト)', - 'menu.list.search-list.applications': '検索リスト(アプリ)', - 'menu.profile': 'プロフィール', - 'menu.profile.basic': '基本プロフィール', - 'menu.profile.advanced': '高度なプロフィール', - 'menu.result': '結果', - 'menu.result.success': '成功', - 'menu.result.fail': '失敗', - 'menu.exception': '例外', - 'menu.exception.not-permission': '403', - 'menu.exception.not-find': '404', - 'menu.exception.server-error': '500', - 'menu.exception.trigger': 'トリガー', - 'menu.account': 'アカウント', - 'menu.account.center': 'アカウントセンター', - 'menu.account.settings': 'アカウント設定', - 'menu.account.trigger': 'トリガーエラー', - 'menu.account.logout': 'ログアウト', - 'menu.editor': 'グラフィックエディタ', - 'menu.editor.flow': 'フローエディタ', - 'menu.editor.mind': 'マインドエディター', - 'menu.editor.koni': 'コニエディター', -}; diff --git a/demo/src/locales/ja-JP/pages.ts b/demo/src/locales/ja-JP/pages.ts deleted file mode 100644 index f438dbe6..00000000 --- a/demo/src/locales/ja-JP/pages.ts +++ /dev/null @@ -1,67 +0,0 @@ -export default { - 'pages.layouts.userLayout.title': 'Ant Designは、西湖区で最も影響力のあるWebデザイン仕様です。', - 'pages.login.accountLogin.tab': 'アカウントログイン', - 'pages.login.accountLogin.errorMessage': - 'ユーザー名/パスワードが正しくありません(admin/ant.design)', - 'pages.login.username.placeholder': 'ユーザー名:adminまたはuser', - 'pages.login.username.required': 'ユーザー名を入力してください!', - 'pages.login.password.placeholder': 'パスワード:ant.design', - 'pages.login.password.required': 'パスワードを入力してください!', - 'pages.login.phoneLogin.tab': '電話ログイン', - 'pages.login.phoneLogin.errorMessage': '検証コードエラー', - 'pages.login.phoneNumber.placeholder': '電話番号', - 'pages.login.phoneNumber.required': '電話番号を入力してください!', - 'pages.login.phoneNumber.invalid': '電話番号が無効です!', - 'pages.login.captcha.placeholder': '確認コード', - 'pages.login.captcha.required': '確認コードを入力してください!', - 'pages.login.phoneLogin.getVerificationCode': '確認コードを取得', - 'pages.getCaptchaSecondText': '秒', - 'pages.login.rememberMe': 'Remember me', - 'pages.login.forgotPassword': 'パスワードをお忘れですか?', - 'pages.login.submit': 'ログイン', - 'pages.login.loginWith': 'その他のログイン方法:', - 'pages.login.registerAccount': 'アカウント登録', - 'pages.welcome.advancedComponent': '高度なコンポーネント', - 'pages.welcome.link': 'ようこそ', - 'pages.welcome.advancedLayout': '高度なレイアウト', - 'pages.welcome.alertMessage': 'より高速で強力な頑丈なコンポーネントがリリースされました。', - 'pages.admin.subPage.title': 'このページは管理者のみが表示できます', - 'pages.admin.subPage.alertMessage': - 'Umi uiがリリースされました。npm run uiを使用して体験してください。', - 'pages.searchTable.createForm.newRule': '新しいルール', - 'pages.searchTable.updateForm.ruleConfig': 'ルール構成', - 'pages.searchTable.updateForm.basicConfig': '基本情報', - 'pages.searchTable.updateForm.ruleName.nameLabel': 'ルール名', - 'pages.searchTable.updateForm.ruleName.nameRules': 'ルール名を入力してください!', - 'pages.searchTable.updateForm.ruleDesc.descLabel': 'ルールの説明', - 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': '5文字以上入力してください', - 'pages.searchTable.updateForm.ruleDesc.descRules': '5文字以上のルールの説明を入力してください!', - 'pages.searchTable.updateForm.ruleProps.title': 'プロパティの構成', - 'pages.searchTable.updateForm.object': '監視対象', - 'pages.searchTable.updateForm.ruleProps.templateLabel': 'ルールテンプレート', - 'pages.searchTable.updateForm.ruleProps.typeLabel': 'ルールタイプ', - 'pages.searchTable.updateForm.schedulingPeriod.title': 'スケジュール期間の設定', - 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': '開始時間', - 'pages.searchTable.updateForm.schedulingPeriod.timeRules': '開始時間を選択してください!', - 'pages.searchTable.titleDesc': '説明', - 'pages.searchTable.ruleName': 'ルール名が必要です', - 'pages.searchTable.titleCallNo': 'サービスコール数', - 'pages.searchTable.titleStatus': 'ステータス', - 'pages.searchTable.nameStatus.default': 'デフォルト', - 'pages.searchTable.nameStatus.running': '起動中', - 'pages.searchTable.nameStatus.online': 'オンライン', - 'pages.searchTable.nameStatus.abnormal': '異常', - 'pages.searchTable.titleUpdatedAt': '最終スケジュール', - 'pages.searchTable.exception': '例外の理由を入力してください!', - 'pages.searchTable.titleOption': 'オプション', - 'pages.searchTable.config': '構成', - 'pages.searchTable.subscribeAlert': 'アラートを購読する', - 'pages.searchTable.title': 'お問い合わせフォーム', - 'pages.searchTable.new': '新しい', - 'pages.searchTable.chosen': '選んだ項目', - 'pages.searchTable.item': '項目', - 'pages.searchTable.totalServiceCalls': 'サービスコールの総数', - 'pages.searchTable.tenThousand': '万', - 'pages.searchTable.batchDeletion': 'バッチ削除', - 'pages.searchTable.batchApproval': 'バッチ承認', -}; diff --git a/demo/src/locales/ja-JP/pwa.ts b/demo/src/locales/ja-JP/pwa.ts deleted file mode 100644 index ace23aef..00000000 --- a/demo/src/locales/ja-JP/pwa.ts +++ /dev/null @@ -1,7 +0,0 @@ -export default { - 'app.pwa.offline': 'あなたは今オフラインです', - 'app.pwa.serviceworker.updated': '新しいコンテンツが利用可能です', - 'app.pwa.serviceworker.updated.hint': - '現在のページをリロードするには、「更新」ボタンを押してください', - 'app.pwa.serviceworker.updated.ok': 'リフレッシュ', -}; diff --git a/demo/src/locales/ja-JP/settingDrawer.ts b/demo/src/locales/ja-JP/settingDrawer.ts deleted file mode 100644 index 67a22df1..00000000 --- a/demo/src/locales/ja-JP/settingDrawer.ts +++ /dev/null @@ -1,31 +0,0 @@ -export default { - 'app.setting.pagestyle': 'ページスタイル設定', - 'app.setting.pagestyle.dark': 'ダークスタイル', - 'app.setting.pagestyle.light': 'ライトスタイル', - 'app.setting.content-width': 'コンテンツの幅', - 'app.setting.content-width.fixed': '固定', - 'app.setting.content-width.fluid': '流体', - 'app.setting.themecolor': 'テーマカラー', - 'app.setting.themecolor.dust': 'ダストレッド', - 'app.setting.themecolor.volcano': 'ボルケ-ノ', - 'app.setting.themecolor.sunset': 'サンセットオレンジ', - 'app.setting.themecolor.cyan': 'シアン', - 'app.setting.themecolor.green': 'ポーラーグリーン', - 'app.setting.themecolor.daybreak': '夜明けの青(デフォルト)', - 'app.setting.themecolor.geekblue': 'ギーク ブルー', - 'app.setting.themecolor.purple': 'ゴールデンパープル', - 'app.setting.navigationmode': 'ナビゲーションモード', - 'app.setting.sidemenu': 'サイドメニューのレイアウト', - 'app.setting.topmenu': 'トップメニューのレイアウト', - 'app.setting.fixedheader': '固定ヘッダー', - 'app.setting.fixedsidebar': '固定サイドバー', - 'app.setting.fixedsidebar.hint': 'サイドメニューのレイアウトで動作します', - 'app.setting.hideheader': 'スクロール時の非表示ヘッダー', - 'app.setting.hideheader.hint': '非表示ヘッダーが有効になっている場合に機能します', - 'app.setting.othersettings': 'その他の設定', - 'app.setting.weakmode': 'ウィークモード', - 'app.setting.copy': 'コピー設定', - 'app.setting.copyinfo': - 'コピーが成功しました。src/models/setting.jsのdefaultSettingsを置き換えてください', - 'app.setting.production.hint': '設定パネルは開発環境でのみ表示されます。手動で変更してください', -}; diff --git a/demo/src/locales/ja-JP/settings.ts b/demo/src/locales/ja-JP/settings.ts deleted file mode 100644 index de52481c..00000000 --- a/demo/src/locales/ja-JP/settings.ts +++ /dev/null @@ -1,59 +0,0 @@ -export default { - 'app.settings.menuMap.basic': '基本設定', - 'app.settings.menuMap.security': 'セキュリティ設定', - 'app.settings.menuMap.binding': 'アカウントのバインド', - 'app.settings.menuMap.notification': '新しいメッセージの通知', - 'app.settings.basic.avatar': 'アバター', - 'app.settings.basic.change-avatar': 'アバターを変更する', - 'app.settings.basic.email': 'メール', - 'app.settings.basic.email-message': 'メールアドレスを入力してください!', - 'app.settings.basic.nickname': 'ニックネーム', - 'app.settings.basic.nickname-message': 'ニックネームを入力してください!', - 'app.settings.basic.profile': '個人プロフィール', - 'app.settings.basic.profile-message': '個人プロフィールを入力してください!', - 'app.settings.basic.profile-placeholder': '自己紹介', - 'app.settings.basic.country': '国/地域', - 'app.settings.basic.country-message': 'あなたの国を入力してください!', - 'app.settings.basic.geographic': '州または市', - 'app.settings.basic.geographic-message': '地理情報を入力してください!', - 'app.settings.basic.address': '住所', - 'app.settings.basic.address-message': '住所を入力してください!', - 'app.settings.basic.phone': '電話番号', - 'app.settings.basic.phone-message': '電話番号を入力してください!', - 'app.settings.basic.update': '更新情報', - 'app.settings.security.strong': '強い', - 'app.settings.security.medium': 'ミディアム', - 'app.settings.security.weak': '弱い', - 'app.settings.security.password': 'アカウントパスワード', - 'app.settings.security.password-description': '現在のパスワードの強度', - 'app.settings.security.phone': 'セキュリティ電話番号', - 'app.settings.security.phone-description': 'バインドされた電話番号', - 'app.settings.security.question': '秘密の質問', - 'app.settings.security.question-description': - 'セキュリティの質問が設定されてません。セキュリティポリシーはアカウントのセキュリティを効果的に保護できます', - 'app.settings.security.email': 'バックアップメール', - 'app.settings.security.email-description': 'バインドされたメール', - 'app.settings.security.mfa': '多要素認証デバイス', - 'app.settings.security.mfa-description': - 'バインドされていない多要素認証デバイスは、バインド後、2回確認できます', - 'app.settings.security.modify': '変更する', - 'app.settings.security.set': 'セットする', - 'app.settings.security.bind': 'バインド', - 'app.settings.binding.taobao': 'タオバオをバインドする', - 'app.settings.binding.taobao-description': '現在バインドされていないタオバオアカウント', - 'app.settings.binding.alipay': 'アリペイをバインドする', - 'app.settings.binding.alipay-description': '現在バインドされていないアリペイアカウント', - 'app.settings.binding.dingding': 'ディントークをバインドする', - 'app.settings.binding.dingding-description': '現在バインドされていないディントークアカウント', - 'app.settings.binding.bind': 'バインド', - 'app.settings.notification.password': 'アカウントパスワード', - 'app.settings.notification.password-description': - '他のユーザーからのメッセージは、ステーションレターの形式で通知されます', - 'app.settings.notification.messages': 'システムメッセージ', - 'app.settings.notification.messages-description': - 'システムメッセージは、ステーションレターの形式で通知されます', - 'app.settings.notification.todo': 'To Do(用事) 通知', - 'app.settings.notification.todo-description': 'To Doタスクは、内部レターの形式で通知されます', - 'app.settings.open': '開く', - 'app.settings.close': '閉じる', -}; diff --git a/demo/src/locales/pt-BR.ts b/demo/src/locales/pt-BR.ts deleted file mode 100644 index 628dd9c5..00000000 --- a/demo/src/locales/pt-BR.ts +++ /dev/null @@ -1,22 +0,0 @@ -import component from './pt-BR/component'; -import globalHeader from './pt-BR/globalHeader'; -import menu from './pt-BR/menu'; -import pwa from './pt-BR/pwa'; -import settingDrawer from './pt-BR/settingDrawer'; -import settings from './pt-BR/settings'; -import pages from './pt-BR/pages'; - -export default { - 'navBar.lang': 'Idiomas', - 'layout.user.link.help': 'ajuda', - 'layout.user.link.privacy': 'política de privacidade', - 'layout.user.link.terms': 'termos de serviços', - 'app.preview.down.block': 'Download this page to your local project', - ...globalHeader, - ...menu, - ...settingDrawer, - ...settings, - ...pwa, - ...component, - ...pages, -}; diff --git a/demo/src/locales/pt-BR/component.ts b/demo/src/locales/pt-BR/component.ts deleted file mode 100644 index 7cf9999c..00000000 --- a/demo/src/locales/pt-BR/component.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - 'component.tagSelect.expand': 'Expandir', - 'component.tagSelect.collapse': 'Diminuir', - 'component.tagSelect.all': 'Todas', -}; diff --git a/demo/src/locales/pt-BR/globalHeader.ts b/demo/src/locales/pt-BR/globalHeader.ts deleted file mode 100644 index c9273991..00000000 --- a/demo/src/locales/pt-BR/globalHeader.ts +++ /dev/null @@ -1,18 +0,0 @@ -export default { - 'component.globalHeader.search': 'Busca', - 'component.globalHeader.search.example1': 'Exemplo de busca 1', - 'component.globalHeader.search.example2': 'Exemplo de busca 2', - 'component.globalHeader.search.example3': 'Exemplo de busca 3', - 'component.globalHeader.help': 'Ajuda', - 'component.globalHeader.notification': 'Notificação', - 'component.globalHeader.notification.empty': 'Você visualizou todas as notificações.', - 'component.globalHeader.message': 'Mensagem', - 'component.globalHeader.message.empty': 'Você visualizou todas as mensagens.', - 'component.globalHeader.event': 'Evento', - 'component.globalHeader.event.empty': 'Você visualizou todos os eventos.', - 'component.noticeIcon.clear': 'Limpar', - 'component.noticeIcon.cleared': 'Limpo', - 'component.noticeIcon.empty': 'Sem notificações', - 'component.noticeIcon.loaded': 'Carregado', - 'component.noticeIcon.view-more': 'Veja mais', -}; diff --git a/demo/src/locales/pt-BR/menu.ts b/demo/src/locales/pt-BR/menu.ts deleted file mode 100644 index 99d4d725..00000000 --- a/demo/src/locales/pt-BR/menu.ts +++ /dev/null @@ -1,52 +0,0 @@ -export default { - 'menu.welcome': 'Welcome', - 'menu.more-blocks': 'More Blocks', - 'menu.home': 'Início', - 'menu.login': 'Login', - 'menu.admin': 'Admin', - 'menu.admin.sub-page': 'Sub-Page', - 'menu.register': 'Registro', - 'menu.register-result': 'Resultado de registro', - 'menu.dashboard': 'Dashboard', - 'menu.dashboard.analysis': 'Análise', - 'menu.dashboard.monitor': 'Monitor', - 'menu.dashboard.workplace': 'Ambiente de Trabalho', - 'menu.exception.403': '403', - 'menu.exception.404': '404', - 'menu.exception.500': '500', - 'menu.form': 'Formulário', - 'menu.form.basic-form': 'Formulário Básico', - 'menu.form.step-form': 'Formulário Assistido', - 'menu.form.step-form.info': 'Formulário Assistido(gravar informações de transferência)', - 'menu.form.step-form.confirm': 'Formulário Assistido(confirmar informações de transferência)', - 'menu.form.step-form.result': 'Formulário Assistido(finalizado)', - 'menu.form.advanced-form': 'Formulário Avançado', - 'menu.list': 'Lista', - 'menu.list.table-list': 'Tabela de Busca', - 'menu.list.basic-list': 'Lista Básica', - 'menu.list.card-list': 'Lista de Card', - 'menu.list.search-list': 'Lista de Busca', - 'menu.list.search-list.articles': 'Lista de Busca(artigos)', - 'menu.list.search-list.projects': 'Lista de Busca(projetos)', - 'menu.list.search-list.applications': 'Lista de Busca(aplicações)', - 'menu.profile': 'Perfil', - 'menu.profile.basic': 'Perfil Básico', - 'menu.profile.advanced': 'Perfil Avançado', - 'menu.result': 'Resultado', - 'menu.result.success': 'Sucesso', - 'menu.result.fail': 'Falha', - 'menu.exception': 'Exceção', - 'menu.exception.not-permission': '403', - 'menu.exception.not-find': '404', - 'menu.exception.server-error': '500', - 'menu.exception.trigger': 'Disparar', - 'menu.account': 'Conta', - 'menu.account.center': 'Central da Conta', - 'menu.account.settings': 'Configurar Conta', - 'menu.account.trigger': 'Disparar Erro', - 'menu.account.logout': 'Sair', - 'menu.editor': 'Graphic Editor', - 'menu.editor.flow': 'Flow Editor', - 'menu.editor.mind': 'Mind Editor', - 'menu.editor.koni': 'Koni Editor', -}; diff --git a/demo/src/locales/pt-BR/pages.ts b/demo/src/locales/pt-BR/pages.ts deleted file mode 100644 index 14f8a8dd..00000000 --- a/demo/src/locales/pt-BR/pages.ts +++ /dev/null @@ -1,70 +0,0 @@ -export default { - 'pages.layouts.userLayout.title': - 'Ant Design é a especificação de web design mais influente no distrito de Xihu', - 'pages.login.accountLogin.tab': 'Login da conta', - 'pages.login.accountLogin.errorMessage': 'usuário/senha incorreto(admin/ant.design)', - 'pages.login.username.placeholder': 'Usuário: admin or user', - 'pages.login.username.required': 'Por favor insira seu usuário!', - 'pages.login.password.placeholder': 'Senha: ant.design', - 'pages.login.password.required': 'Por favor insira sua senha!', - 'pages.login.phoneLogin.tab': 'Login com Telefone', - 'pages.login.phoneLogin.errorMessage': 'Erro de Código de Verificação', - 'pages.login.phoneNumber.placeholder': 'Telefone', - 'pages.login.phoneNumber.required': 'Por favor entre com seu telefone!', - 'pages.login.phoneNumber.invalid': 'Telefone é inválido!', - 'pages.login.captcha.placeholder': 'Código de Verificação', - 'pages.login.captcha.required': 'Por favor entre com o código de verificação!', - 'pages.login.phoneLogin.getVerificationCode': 'Obter Código', - 'pages.getCaptchaSecondText': 'seg(s)', - 'pages.login.rememberMe': 'Lembre-me', - 'pages.login.forgotPassword': 'Perdeu a Senha ?', - 'pages.login.submit': 'Enviar', - 'pages.login.loginWith': 'Login com :', - 'pages.login.registerAccount': 'Registra Conta', - 'pages.welcome.advancedComponent': 'Componente Avançado', - 'pages.welcome.link': 'Bem-vindo', - 'pages.welcome.advancedLayout': 'Layout Avançado', - 'pages.welcome.alertMessage': 'Componentes pesados mais rápidos e mais fortes foram lançados.', - 'pages.admin.subPage.title': 'Esta página só pode ser vista pelo Admin', - 'pages.admin.subPage.alertMessage': - 'O Umi ui foi lançado, bem-vindo ao usar o npm run ui para iniciar a experiência.', - 'pages.searchTable.createForm.newRule': 'Neva Regra', - 'pages.searchTable.updateForm.ruleConfig': 'Configuração de Regra', - 'pages.searchTable.updateForm.basicConfig': 'Informação básica', - 'pages.searchTable.updateForm.ruleName.nameLabel': 'Nome da Regra', - 'pages.searchTable.updateForm.ruleName.nameRules': 'Por favor entre com o nome da regra!', - 'pages.searchTable.updateForm.ruleDesc.descLabel': 'Descrição da Regra', - 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': - 'Por favor insira ao menos cinco caracteres', - 'pages.searchTable.updateForm.ruleDesc.descRules': - 'Insira uma descrição de regra de pelo menos cinco caracteres!', - 'pages.searchTable.updateForm.ruleProps.title': 'Configurar Propriedades', - 'pages.searchTable.updateForm.object': 'Objeto de Monitoramento', - 'pages.searchTable.updateForm.ruleProps.templateLabel': 'Modelo de Regra', - 'pages.searchTable.updateForm.ruleProps.typeLabel': 'Tipo de Regra', - 'pages.searchTable.updateForm.schedulingPeriod.title': 'Definir Período de Agendamento', - 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': 'Hora de Início', - 'pages.searchTable.updateForm.schedulingPeriod.timeRules': - 'Por favor selecione um horáriod e início!', - 'pages.searchTable.titleDesc': 'Descrição', - 'pages.searchTable.ruleName': 'O nome da regra é obrigatório', - 'pages.searchTable.titleCallNo': 'Número de chamadas de serviço', - 'pages.searchTable.titleStatus': 'Status', - 'pages.searchTable.nameStatus.default': 'padrão', - 'pages.searchTable.nameStatus.running': 'executando', - 'pages.searchTable.nameStatus.online': 'online', - 'pages.searchTable.nameStatus.abnormal': 'anormal', - 'pages.searchTable.titleUpdatedAt': 'Última programação em', - 'pages.searchTable.exception': 'Por favor, indique o motivo da exceção!', - 'pages.searchTable.titleOption': 'Opção', - 'pages.searchTable.config': 'Configuração', - 'pages.searchTable.subscribeAlert': 'Inscreva-se para receber alertas', - 'pages.searchTable.title': 'Formulário de Consulta', - 'pages.searchTable.new': 'Novo', - 'pages.searchTable.chosen': 'selecionado', - 'pages.searchTable.item': 'item', - 'pages.searchTable.totalServiceCalls': 'Número total de chamadas de serviço', - 'pages.searchTable.tenThousand': '0000', - 'pages.searchTable.batchDeletion': 'deleção em lote', - 'pages.searchTable.batchApproval': 'aprovação em lote', -}; diff --git a/demo/src/locales/pt-BR/pwa.ts b/demo/src/locales/pt-BR/pwa.ts deleted file mode 100644 index 05cc7978..00000000 --- a/demo/src/locales/pt-BR/pwa.ts +++ /dev/null @@ -1,7 +0,0 @@ -export default { - 'app.pwa.offline': 'Você está offline agora', - 'app.pwa.serviceworker.updated': 'Novo conteúdo está disponível', - 'app.pwa.serviceworker.updated.hint': - 'Por favor, pressione o botão "Atualizar" para recarregar a página atual', - 'app.pwa.serviceworker.updated.ok': 'Atualizar', -}; diff --git a/demo/src/locales/pt-BR/settingDrawer.ts b/demo/src/locales/pt-BR/settingDrawer.ts deleted file mode 100644 index 8a10b57e..00000000 --- a/demo/src/locales/pt-BR/settingDrawer.ts +++ /dev/null @@ -1,32 +0,0 @@ -export default { - 'app.setting.pagestyle': 'Configuração de estilo da página', - 'app.setting.pagestyle.dark': 'Dark style', - 'app.setting.pagestyle.light': 'Light style', - 'app.setting.content-width': 'Largura do conteúdo', - 'app.setting.content-width.fixed': 'Fixo', - 'app.setting.content-width.fluid': 'Fluido', - 'app.setting.themecolor': 'Cor do Tema', - 'app.setting.themecolor.dust': 'Dust Red', - 'app.setting.themecolor.volcano': 'Volcano', - 'app.setting.themecolor.sunset': 'Sunset Orange', - 'app.setting.themecolor.cyan': 'Cyan', - 'app.setting.themecolor.green': 'Polar Green', - 'app.setting.themecolor.daybreak': 'Daybreak Blue (default)', - 'app.setting.themecolor.geekblue': 'Geek Glue', - 'app.setting.themecolor.purple': 'Golden Purple', - 'app.setting.navigationmode': 'Modo de Navegação', - 'app.setting.sidemenu': 'Layout do Menu Lateral', - 'app.setting.topmenu': 'Layout do Menu Superior', - 'app.setting.fixedheader': 'Cabeçalho fixo', - 'app.setting.fixedsidebar': 'Barra lateral fixa', - 'app.setting.fixedsidebar.hint': 'Funciona no layout do menu lateral', - 'app.setting.hideheader': 'Esconder o cabeçalho quando rolar', - 'app.setting.hideheader.hint': 'Funciona quando o esconder cabeçalho está abilitado', - 'app.setting.othersettings': 'Outras configurações', - 'app.setting.weakmode': 'Weak Mode', - 'app.setting.copy': 'Copiar Configuração', - 'app.setting.copyinfo': - 'copiado com sucesso,por favor trocar o defaultSettings em src/models/setting.js', - 'app.setting.production.hint': - 'O painel de configuração apenas é exibido no ambiente de desenvolvimento, por favor modifique manualmente o', -}; diff --git a/demo/src/locales/pt-BR/settings.ts b/demo/src/locales/pt-BR/settings.ts deleted file mode 100644 index aad2e387..00000000 --- a/demo/src/locales/pt-BR/settings.ts +++ /dev/null @@ -1,60 +0,0 @@ -export default { - 'app.settings.menuMap.basic': 'Configurações Básicas', - 'app.settings.menuMap.security': 'Configurações de Segurança', - 'app.settings.menuMap.binding': 'Vinculação de Conta', - 'app.settings.menuMap.notification': 'Mensagens de Notificação', - 'app.settings.basic.avatar': 'Avatar', - 'app.settings.basic.change-avatar': 'Alterar avatar', - 'app.settings.basic.email': 'Email', - 'app.settings.basic.email-message': 'Por favor insira seu email!', - 'app.settings.basic.nickname': 'Nome de usuário', - 'app.settings.basic.nickname-message': 'Por favor insira seu nome de usuário!', - 'app.settings.basic.profile': 'Perfil pessoal', - 'app.settings.basic.profile-message': 'Por favor insira seu perfil pessoal!', - 'app.settings.basic.profile-placeholder': 'Breve introdução sua', - 'app.settings.basic.country': 'País/Região', - 'app.settings.basic.country-message': 'Por favor insira país!', - 'app.settings.basic.geographic': 'Província, estado ou cidade', - 'app.settings.basic.geographic-message': 'Por favor insira suas informações geográficas!', - 'app.settings.basic.address': 'Endereço', - 'app.settings.basic.address-message': 'Por favor insira seu endereço!', - 'app.settings.basic.phone': 'Número de telefone', - 'app.settings.basic.phone-message': 'Por favor insira seu número de telefone!', - 'app.settings.basic.update': 'Atualizar Informações', - 'app.settings.security.strong': 'Forte', - 'app.settings.security.medium': 'Média', - 'app.settings.security.weak': 'Fraca', - 'app.settings.security.password': 'Senha da Conta', - 'app.settings.security.password-description': 'Força da senha', - 'app.settings.security.phone': 'Telefone de Seguraça', - 'app.settings.security.phone-description': 'Telefone vinculado', - 'app.settings.security.question': 'Pergunta de Segurança', - 'app.settings.security.question-description': - 'A pergunta de segurança não está definida e a política de segurança pode proteger efetivamente a segurança da conta', - 'app.settings.security.email': 'Email de Backup', - 'app.settings.security.email-description': 'Email vinculado', - 'app.settings.security.mfa': 'Dispositivo MFA', - 'app.settings.security.mfa-description': - 'O dispositivo MFA não vinculado, após a vinculação, pode ser confirmado duas vezes', - 'app.settings.security.modify': 'Modificar', - 'app.settings.security.set': 'Atribuir', - 'app.settings.security.bind': 'Vincular', - 'app.settings.binding.taobao': 'Vincular Taobao', - 'app.settings.binding.taobao-description': 'Atualmente não vinculado à conta Taobao', - 'app.settings.binding.alipay': 'Vincular Alipay', - 'app.settings.binding.alipay-description': 'Atualmente não vinculado à conta Alipay', - 'app.settings.binding.dingding': 'Vincular DingTalk', - 'app.settings.binding.dingding-description': 'Atualmente não vinculado à conta DingTalk', - 'app.settings.binding.bind': 'Vincular', - 'app.settings.notification.password': 'Senha da Conta', - 'app.settings.notification.password-description': - 'Mensagens de outros usuários serão notificadas na forma de uma estação de letra', - 'app.settings.notification.messages': 'Mensagens de Sistema', - 'app.settings.notification.messages-description': - 'Mensagens de sistema serão notificadas na forma de uma estação de letra', - 'app.settings.notification.todo': 'Notificação de To-do', - 'app.settings.notification.todo-description': - 'A lista de to-do será notificada na forma de uma estação de letra', - 'app.settings.open': 'Aberto', - 'app.settings.close': 'Fechado', -}; diff --git a/demo/src/locales/zh-CN.ts b/demo/src/locales/zh-CN.ts deleted file mode 100644 index e4258ce8..00000000 --- a/demo/src/locales/zh-CN.ts +++ /dev/null @@ -1,25 +0,0 @@ -import component from './zh-CN/component'; -import globalHeader from './zh-CN/globalHeader'; -import menu from './zh-CN/menu'; -import pwa from './zh-CN/pwa'; -import settingDrawer from './zh-CN/settingDrawer'; -import settings from './zh-CN/settings'; -import pages from './zh-CN/pages'; - -export default { - 'navBar.lang': '语言', - 'layout.user.link.help': '帮助', - 'layout.user.link.privacy': '隐私', - 'layout.user.link.terms': '条款', - 'app.copyright.produced': '蚂蚁集团体验技术部出品', - 'app.preview.down.block': '下载此页面到本地项目', - 'app.welcome.link.fetch-blocks': '获取全部区块', - 'app.welcome.link.block-list': '基于 block 开发,快速构建标准页面', - ...pages, - ...globalHeader, - ...menu, - ...settingDrawer, - ...settings, - ...pwa, - ...component, -}; diff --git a/demo/src/locales/zh-CN/component.ts b/demo/src/locales/zh-CN/component.ts deleted file mode 100644 index 1f1feadb..00000000 --- a/demo/src/locales/zh-CN/component.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - 'component.tagSelect.expand': '展开', - 'component.tagSelect.collapse': '收起', - 'component.tagSelect.all': '全部', -}; diff --git a/demo/src/locales/zh-CN/globalHeader.ts b/demo/src/locales/zh-CN/globalHeader.ts deleted file mode 100644 index 9fd66a58..00000000 --- a/demo/src/locales/zh-CN/globalHeader.ts +++ /dev/null @@ -1,17 +0,0 @@ -export default { - 'component.globalHeader.search': '站内搜索', - 'component.globalHeader.search.example1': '搜索提示一', - 'component.globalHeader.search.example2': '搜索提示二', - 'component.globalHeader.search.example3': '搜索提示三', - 'component.globalHeader.help': '使用文档', - 'component.globalHeader.notification': '通知', - 'component.globalHeader.notification.empty': '你已查看所有通知', - 'component.globalHeader.message': '消息', - 'component.globalHeader.message.empty': '您已读完所有消息', - 'component.globalHeader.event': '待办', - 'component.globalHeader.event.empty': '你已完成所有待办', - 'component.noticeIcon.clear': '清空', - 'component.noticeIcon.cleared': '清空了', - 'component.noticeIcon.empty': '暂无数据', - 'component.noticeIcon.view-more': '查看更多', -}; diff --git a/demo/src/locales/zh-CN/menu.ts b/demo/src/locales/zh-CN/menu.ts deleted file mode 100644 index fecb70a4..00000000 --- a/demo/src/locales/zh-CN/menu.ts +++ /dev/null @@ -1,52 +0,0 @@ -export default { - 'menu.welcome': '欢迎', - 'menu.more-blocks': '更多区块', - 'menu.home': '首页', - 'menu.admin': '管理页', - 'menu.admin.sub-page': '二级管理页', - 'menu.login': '登录', - 'menu.register': '注册', - 'menu.register-result': '注册结果', - 'menu.dashboard': 'Dashboard', - 'menu.dashboard.analysis': '分析页', - 'menu.dashboard.monitor': '监控页', - 'menu.dashboard.workplace': '工作台', - 'menu.exception.403': '403', - 'menu.exception.404': '404', - 'menu.exception.500': '500', - 'menu.form': '表单页', - 'menu.form.basic-form': '基础表单', - 'menu.form.step-form': '分步表单', - 'menu.form.step-form.info': '分步表单(填写转账信息)', - 'menu.form.step-form.confirm': '分步表单(确认转账信息)', - 'menu.form.step-form.result': '分步表单(完成)', - 'menu.form.advanced-form': '高级表单', - 'menu.list': '列表页', - 'menu.list.table-list': '查询表格', - 'menu.list.basic-list': '标准列表', - 'menu.list.card-list': '卡片列表', - 'menu.list.search-list': '搜索列表', - 'menu.list.search-list.articles': '搜索列表(文章)', - 'menu.list.search-list.projects': '搜索列表(项目)', - 'menu.list.search-list.applications': '搜索列表(应用)', - 'menu.profile': '详情页', - 'menu.profile.basic': '基础详情页', - 'menu.profile.advanced': '高级详情页', - 'menu.result': '结果页', - 'menu.result.success': '成功页', - 'menu.result.fail': '失败页', - 'menu.exception': '异常页', - 'menu.exception.not-permission': '403', - 'menu.exception.not-find': '404', - 'menu.exception.server-error': '500', - 'menu.exception.trigger': '触发错误', - 'menu.account': '个人页', - 'menu.account.center': '个人中心', - 'menu.account.settings': '个人设置', - 'menu.account.trigger': '触发报错', - 'menu.account.logout': '退出登录', - 'menu.editor': '图形编辑器', - 'menu.editor.flow': '流程编辑器', - 'menu.editor.mind': '脑图编辑器', - 'menu.editor.koni': '拓扑编辑器', -}; diff --git a/demo/src/locales/zh-CN/pages.ts b/demo/src/locales/zh-CN/pages.ts deleted file mode 100644 index adb36f4d..00000000 --- a/demo/src/locales/zh-CN/pages.ts +++ /dev/null @@ -1,67 +0,0 @@ -export default { - 'pages.layouts.userLayout.title': 'Ant Design 是西湖区最具影响力的 Web 设计规范', - 'pages.login.accountLogin.tab': '账户密码登录', - 'pages.login.accountLogin.errorMessage': '错误的用户名和密码(admin/ant.design)', - 'pages.login.failure': '登录失败,请重试!', - 'pages.login.success': '登录成功!', - 'pages.login.username.placeholder': '用户名: admin or user', - 'pages.login.username.required': '用户名是必填项!', - 'pages.login.password.placeholder': '密码: ant.design', - 'pages.login.password.required': '密码是必填项!', - 'pages.login.phoneLogin.tab': '手机号登录', - 'pages.login.phoneLogin.errorMessage': '验证码错误', - 'pages.login.phoneNumber.placeholder': '请输入手机号!', - 'pages.login.phoneNumber.required': '手机号是必填项!', - 'pages.login.phoneNumber.invalid': '不合法的手机号!', - 'pages.login.captcha.placeholder': '请输入验证码!', - 'pages.login.captcha.required': '验证码是必填项!', - 'pages.login.phoneLogin.getVerificationCode': '获取验证码', - 'pages.getCaptchaSecondText': '秒后重新获取', - 'pages.login.rememberMe': '自动登录', - 'pages.login.forgotPassword': '忘记密码 ?', - 'pages.login.submit': '登录', - 'pages.login.loginWith': '其他登录方式 :', - 'pages.login.registerAccount': '注册账户', - 'pages.welcome.advancedComponent': '高级表格', - 'pages.welcome.link': '欢迎使用', - 'pages.welcome.advancedLayout': '高级布局', - 'pages.welcome.alertMessage': '更快更强的重型组件,已经发布。', - 'pages.admin.subPage.title': ' 这个页面只有 admin 权限才能查看', - 'pages.admin.subPage.alertMessage': 'umi ui 现已发布,欢迎使用 npm run ui 启动体验。', - 'pages.searchTable.createForm.newRule': '新建规则', - 'pages.searchTable.updateForm.ruleConfig': '规则配置', - 'pages.searchTable.updateForm.basicConfig': '基本信息', - 'pages.searchTable.updateForm.ruleName.nameLabel': '规则名称', - 'pages.searchTable.updateForm.ruleName.nameRules': '请输入规则名称!', - 'pages.searchTable.updateForm.ruleDesc.descLabel': '规则描述', - 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': '请输入至少五个字符', - 'pages.searchTable.updateForm.ruleDesc.descRules': '请输入至少五个字符的规则描述!', - 'pages.searchTable.updateForm.ruleProps.title': '配置规则属性', - 'pages.searchTable.updateForm.object': '监控对象', - 'pages.searchTable.updateForm.ruleProps.templateLabel': '规则模板', - 'pages.searchTable.updateForm.ruleProps.typeLabel': '规则类型', - 'pages.searchTable.updateForm.schedulingPeriod.title': '设定调度周期', - 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': '开始时间', - 'pages.searchTable.updateForm.schedulingPeriod.timeRules': '请选择开始时间!', - 'pages.searchTable.titleDesc': '描述', - 'pages.searchTable.ruleName': '规则名称为必填项', - 'pages.searchTable.titleCallNo': '服务调用次数', - 'pages.searchTable.titleStatus': '状态', - 'pages.searchTable.nameStatus.default': '关闭', - 'pages.searchTable.nameStatus.running': '运行中', - 'pages.searchTable.nameStatus.online': '已上线', - 'pages.searchTable.nameStatus.abnormal': '异常', - 'pages.searchTable.titleUpdatedAt': '上次调度时间', - 'pages.searchTable.exception': '请输入异常原因!', - 'pages.searchTable.titleOption': '操作', - 'pages.searchTable.config': '配置', - 'pages.searchTable.subscribeAlert': '订阅警报', - 'pages.searchTable.title': '查询表格', - 'pages.searchTable.new': '新建', - 'pages.searchTable.chosen': '已选择', - 'pages.searchTable.item': '项', - 'pages.searchTable.totalServiceCalls': '服务调用次数总计', - 'pages.searchTable.tenThousand': '万', - 'pages.searchTable.batchDeletion': '批量删除', - 'pages.searchTable.batchApproval': '批量审批', -}; diff --git a/demo/src/locales/zh-CN/pwa.ts b/demo/src/locales/zh-CN/pwa.ts deleted file mode 100644 index e9504849..00000000 --- a/demo/src/locales/zh-CN/pwa.ts +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'app.pwa.offline': '当前处于离线状态', - 'app.pwa.serviceworker.updated': '有新内容', - 'app.pwa.serviceworker.updated.hint': '请点击“刷新”按钮或者手动刷新页面', - 'app.pwa.serviceworker.updated.ok': '刷新', -}; diff --git a/demo/src/locales/zh-CN/settingDrawer.ts b/demo/src/locales/zh-CN/settingDrawer.ts deleted file mode 100644 index 3f44958e..00000000 --- a/demo/src/locales/zh-CN/settingDrawer.ts +++ /dev/null @@ -1,31 +0,0 @@ -export default { - 'app.setting.pagestyle': '整体风格设置', - 'app.setting.pagestyle.dark': '暗色菜单风格', - 'app.setting.pagestyle.light': '亮色菜单风格', - 'app.setting.content-width': '内容区域宽度', - 'app.setting.content-width.fixed': '定宽', - 'app.setting.content-width.fluid': '流式', - 'app.setting.themecolor': '主题色', - 'app.setting.themecolor.dust': '薄暮', - 'app.setting.themecolor.volcano': '火山', - 'app.setting.themecolor.sunset': '日暮', - 'app.setting.themecolor.cyan': '明青', - 'app.setting.themecolor.green': '极光绿', - 'app.setting.themecolor.daybreak': '拂晓蓝(默认)', - 'app.setting.themecolor.geekblue': '极客蓝', - 'app.setting.themecolor.purple': '酱紫', - 'app.setting.navigationmode': '导航模式', - 'app.setting.sidemenu': '侧边菜单布局', - 'app.setting.topmenu': '顶部菜单布局', - 'app.setting.fixedheader': '固定 Header', - 'app.setting.fixedsidebar': '固定侧边菜单', - 'app.setting.fixedsidebar.hint': '侧边菜单布局时可配置', - 'app.setting.hideheader': '下滑时隐藏 Header', - 'app.setting.hideheader.hint': '固定 Header 时可配置', - 'app.setting.othersettings': '其他设置', - 'app.setting.weakmode': '色弱模式', - 'app.setting.copy': '拷贝设置', - 'app.setting.copyinfo': '拷贝成功,请到 config/defaultSettings.js 中替换默认配置', - 'app.setting.production.hint': - '配置栏只在开发环境用于预览,生产环境不会展现,请拷贝后手动修改配置文件', -}; diff --git a/demo/src/locales/zh-CN/settings.ts b/demo/src/locales/zh-CN/settings.ts deleted file mode 100644 index df8af434..00000000 --- a/demo/src/locales/zh-CN/settings.ts +++ /dev/null @@ -1,55 +0,0 @@ -export default { - 'app.settings.menuMap.basic': '基本设置', - 'app.settings.menuMap.security': '安全设置', - 'app.settings.menuMap.binding': '账号绑定', - 'app.settings.menuMap.notification': '新消息通知', - 'app.settings.basic.avatar': '头像', - 'app.settings.basic.change-avatar': '更换头像', - 'app.settings.basic.email': '邮箱', - 'app.settings.basic.email-message': '请输入您的邮箱!', - 'app.settings.basic.nickname': '昵称', - 'app.settings.basic.nickname-message': '请输入您的昵称!', - 'app.settings.basic.profile': '个人简介', - 'app.settings.basic.profile-message': '请输入个人简介!', - 'app.settings.basic.profile-placeholder': '个人简介', - 'app.settings.basic.country': '国家/地区', - 'app.settings.basic.country-message': '请输入您的国家或地区!', - 'app.settings.basic.geographic': '所在省市', - 'app.settings.basic.geographic-message': '请输入您的所在省市!', - 'app.settings.basic.address': '街道地址', - 'app.settings.basic.address-message': '请输入您的街道地址!', - 'app.settings.basic.phone': '联系电话', - 'app.settings.basic.phone-message': '请输入您的联系电话!', - 'app.settings.basic.update': '更新基本信息', - 'app.settings.security.strong': '强', - 'app.settings.security.medium': '中', - 'app.settings.security.weak': '弱', - 'app.settings.security.password': '账户密码', - 'app.settings.security.password-description': '当前密码强度', - 'app.settings.security.phone': '密保手机', - 'app.settings.security.phone-description': '已绑定手机', - 'app.settings.security.question': '密保问题', - 'app.settings.security.question-description': '未设置密保问题,密保问题可有效保护账户安全', - 'app.settings.security.email': '备用邮箱', - 'app.settings.security.email-description': '已绑定邮箱', - 'app.settings.security.mfa': 'MFA 设备', - 'app.settings.security.mfa-description': '未绑定 MFA 设备,绑定后,可以进行二次确认', - 'app.settings.security.modify': '修改', - 'app.settings.security.set': '设置', - 'app.settings.security.bind': '绑定', - 'app.settings.binding.taobao': '绑定淘宝', - 'app.settings.binding.taobao-description': '当前未绑定淘宝账号', - 'app.settings.binding.alipay': '绑定支付宝', - 'app.settings.binding.alipay-description': '当前未绑定支付宝账号', - 'app.settings.binding.dingding': '绑定钉钉', - 'app.settings.binding.dingding-description': '当前未绑定钉钉账号', - 'app.settings.binding.bind': '绑定', - 'app.settings.notification.password': '账户密码', - 'app.settings.notification.password-description': '其他用户的消息将以站内信的形式通知', - 'app.settings.notification.messages': '系统消息', - 'app.settings.notification.messages-description': '系统消息将以站内信的形式通知', - 'app.settings.notification.todo': '待办任务', - 'app.settings.notification.todo-description': '待办任务将以站内信的形式通知', - 'app.settings.open': '开', - 'app.settings.close': '关', -}; diff --git a/demo/src/locales/zh-TW.ts b/demo/src/locales/zh-TW.ts deleted file mode 100644 index 6ad5f931..00000000 --- a/demo/src/locales/zh-TW.ts +++ /dev/null @@ -1,20 +0,0 @@ -import component from './zh-TW/component'; -import globalHeader from './zh-TW/globalHeader'; -import menu from './zh-TW/menu'; -import pwa from './zh-TW/pwa'; -import settingDrawer from './zh-TW/settingDrawer'; -import settings from './zh-TW/settings'; - -export default { - 'navBar.lang': '語言', - 'layout.user.link.help': '幫助', - 'layout.user.link.privacy': '隱私', - 'layout.user.link.terms': '條款', - 'app.preview.down.block': '下載此頁面到本地項目', - ...globalHeader, - ...menu, - ...settingDrawer, - ...settings, - ...pwa, - ...component, -}; diff --git a/demo/src/locales/zh-TW/component.ts b/demo/src/locales/zh-TW/component.ts deleted file mode 100644 index ba48e299..00000000 --- a/demo/src/locales/zh-TW/component.ts +++ /dev/null @@ -1,5 +0,0 @@ -export default { - 'component.tagSelect.expand': '展開', - 'component.tagSelect.collapse': '收起', - 'component.tagSelect.all': '全部', -}; diff --git a/demo/src/locales/zh-TW/globalHeader.ts b/demo/src/locales/zh-TW/globalHeader.ts deleted file mode 100644 index ed584518..00000000 --- a/demo/src/locales/zh-TW/globalHeader.ts +++ /dev/null @@ -1,17 +0,0 @@ -export default { - 'component.globalHeader.search': '站內搜索', - 'component.globalHeader.search.example1': '搜索提示壹', - 'component.globalHeader.search.example2': '搜索提示二', - 'component.globalHeader.search.example3': '搜索提示三', - 'component.globalHeader.help': '使用手冊', - 'component.globalHeader.notification': '通知', - 'component.globalHeader.notification.empty': '妳已查看所有通知', - 'component.globalHeader.message': '消息', - 'component.globalHeader.message.empty': '您已讀完所有消息', - 'component.globalHeader.event': '待辦', - 'component.globalHeader.event.empty': '妳已完成所有待辦', - 'component.noticeIcon.clear': '清空', - 'component.noticeIcon.cleared': '清空了', - 'component.noticeIcon.empty': '暫無資料', - 'component.noticeIcon.view-more': '查看更多', -}; diff --git a/demo/src/locales/zh-TW/menu.ts b/demo/src/locales/zh-TW/menu.ts deleted file mode 100644 index 6969ccc6..00000000 --- a/demo/src/locales/zh-TW/menu.ts +++ /dev/null @@ -1,52 +0,0 @@ -export default { - 'menu.welcome': '歡迎', - 'menu.more-blocks': '更多區塊', - 'menu.home': '首頁', - 'menu.login': '登錄', - 'menu.admin': '权限', - 'menu.admin.sub-page': '二级管理页', - 'menu.exception.403': '403', - 'menu.exception.404': '404', - 'menu.exception.500': '500', - 'menu.register': '註冊', - 'menu.register-result': '註冊結果', - 'menu.dashboard': 'Dashboard', - 'menu.dashboard.analysis': '分析頁', - 'menu.dashboard.monitor': '監控頁', - 'menu.dashboard.workplace': '工作臺', - 'menu.form': '表單頁', - 'menu.form.basic-form': '基礎表單', - 'menu.form.step-form': '分步表單', - 'menu.form.step-form.info': '分步表單(填寫轉賬信息)', - 'menu.form.step-form.confirm': '分步表單(確認轉賬信息)', - 'menu.form.step-form.result': '分步表單(完成)', - 'menu.form.advanced-form': '高級表單', - 'menu.list': '列表頁', - 'menu.list.table-list': '查詢表格', - 'menu.list.basic-list': '標淮列表', - 'menu.list.card-list': '卡片列表', - 'menu.list.search-list': '搜索列表', - 'menu.list.search-list.articles': '搜索列表(文章)', - 'menu.list.search-list.projects': '搜索列表(項目)', - 'menu.list.search-list.applications': '搜索列表(應用)', - 'menu.profile': '詳情頁', - 'menu.profile.basic': '基礎詳情頁', - 'menu.profile.advanced': '高級詳情頁', - 'menu.result': '結果頁', - 'menu.result.success': '成功頁', - 'menu.result.fail': '失敗頁', - 'menu.account': '個人頁', - 'menu.account.center': '個人中心', - 'menu.account.settings': '個人設置', - 'menu.account.trigger': '觸發報錯', - 'menu.account.logout': '退出登錄', - 'menu.exception': '异常页', - 'menu.exception.not-permission': '403', - 'menu.exception.not-find': '404', - 'menu.exception.server-error': '500', - 'menu.exception.trigger': '触发错误', - 'menu.editor': '圖形編輯器', - 'menu.editor.flow': '流程編輯器', - 'menu.editor.mind': '腦圖編輯器', - 'menu.editor.koni': '拓撲編輯器', -}; diff --git a/demo/src/locales/zh-TW/pwa.ts b/demo/src/locales/zh-TW/pwa.ts deleted file mode 100644 index 108a6e48..00000000 --- a/demo/src/locales/zh-TW/pwa.ts +++ /dev/null @@ -1,6 +0,0 @@ -export default { - 'app.pwa.offline': '當前處於離線狀態', - 'app.pwa.serviceworker.updated': '有新內容', - 'app.pwa.serviceworker.updated.hint': '請點擊“刷新”按鈕或者手動刷新頁面', - 'app.pwa.serviceworker.updated.ok': '刷新', -}; diff --git a/demo/src/locales/zh-TW/settingDrawer.ts b/demo/src/locales/zh-TW/settingDrawer.ts deleted file mode 100644 index 454da285..00000000 --- a/demo/src/locales/zh-TW/settingDrawer.ts +++ /dev/null @@ -1,31 +0,0 @@ -export default { - 'app.setting.pagestyle': '整體風格設置', - 'app.setting.pagestyle.dark': '暗色菜單風格', - 'app.setting.pagestyle.light': '亮色菜單風格', - 'app.setting.content-width': '內容區域寬度', - 'app.setting.content-width.fixed': '定寬', - 'app.setting.content-width.fluid': '流式', - 'app.setting.themecolor': '主題色', - 'app.setting.themecolor.dust': '薄暮', - 'app.setting.themecolor.volcano': '火山', - 'app.setting.themecolor.sunset': '日暮', - 'app.setting.themecolor.cyan': '明青', - 'app.setting.themecolor.green': '極光綠', - 'app.setting.themecolor.daybreak': '拂曉藍(默認)', - 'app.setting.themecolor.geekblue': '極客藍', - 'app.setting.themecolor.purple': '醬紫', - 'app.setting.navigationmode': '導航模式', - 'app.setting.sidemenu': '側邊菜單布局', - 'app.setting.topmenu': '頂部菜單布局', - 'app.setting.fixedheader': '固定 Header', - 'app.setting.fixedsidebar': '固定側邊菜單', - 'app.setting.fixedsidebar.hint': '側邊菜單布局時可配置', - 'app.setting.hideheader': '下滑時隱藏 Header', - 'app.setting.hideheader.hint': '固定 Header 時可配置', - 'app.setting.othersettings': '其他設置', - 'app.setting.weakmode': '色弱模式', - 'app.setting.copy': '拷貝設置', - 'app.setting.copyinfo': '拷貝成功,請到 config/defaultSettings.js 中替換默認配置', - 'app.setting.production.hint': - '配置欄只在開發環境用於預覽,生產環境不會展現,請拷貝後手動修改配置文件', -}; diff --git a/demo/src/locales/zh-TW/settings.ts b/demo/src/locales/zh-TW/settings.ts deleted file mode 100644 index dd45151a..00000000 --- a/demo/src/locales/zh-TW/settings.ts +++ /dev/null @@ -1,55 +0,0 @@ -export default { - 'app.settings.menuMap.basic': '基本設置', - 'app.settings.menuMap.security': '安全設置', - 'app.settings.menuMap.binding': '賬號綁定', - 'app.settings.menuMap.notification': '新消息通知', - 'app.settings.basic.avatar': '頭像', - 'app.settings.basic.change-avatar': '更換頭像', - 'app.settings.basic.email': '郵箱', - 'app.settings.basic.email-message': '請輸入您的郵箱!', - 'app.settings.basic.nickname': '昵稱', - 'app.settings.basic.nickname-message': '請輸入您的昵稱!', - 'app.settings.basic.profile': '個人簡介', - 'app.settings.basic.profile-message': '請輸入個人簡介!', - 'app.settings.basic.profile-placeholder': '個人簡介', - 'app.settings.basic.country': '國家/地區', - 'app.settings.basic.country-message': '請輸入您的國家或地區!', - 'app.settings.basic.geographic': '所在省市', - 'app.settings.basic.geographic-message': '請輸入您的所在省市!', - 'app.settings.basic.address': '街道地址', - 'app.settings.basic.address-message': '請輸入您的街道地址!', - 'app.settings.basic.phone': '聯系電話', - 'app.settings.basic.phone-message': '請輸入您的聯系電話!', - 'app.settings.basic.update': '更新基本信息', - 'app.settings.security.strong': '強', - 'app.settings.security.medium': '中', - 'app.settings.security.weak': '弱', - 'app.settings.security.password': '賬戶密碼', - 'app.settings.security.password-description': '當前密碼強度', - 'app.settings.security.phone': '密保手機', - 'app.settings.security.phone-description': '已綁定手機', - 'app.settings.security.question': '密保問題', - 'app.settings.security.question-description': '未設置密保問題,密保問題可有效保護賬戶安全', - 'app.settings.security.email': '備用郵箱', - 'app.settings.security.email-description': '已綁定郵箱', - 'app.settings.security.mfa': 'MFA 設備', - 'app.settings.security.mfa-description': '未綁定 MFA 設備,綁定後,可以進行二次確認', - 'app.settings.security.modify': '修改', - 'app.settings.security.set': '設置', - 'app.settings.security.bind': '綁定', - 'app.settings.binding.taobao': '綁定淘寶', - 'app.settings.binding.taobao-description': '當前未綁定淘寶賬號', - 'app.settings.binding.alipay': '綁定支付寶', - 'app.settings.binding.alipay-description': '當前未綁定支付寶賬號', - 'app.settings.binding.dingding': '綁定釘釘', - 'app.settings.binding.dingding-description': '當前未綁定釘釘賬號', - 'app.settings.binding.bind': '綁定', - 'app.settings.notification.password': '賬戶密碼', - 'app.settings.notification.password-description': '其他用戶的消息將以站內信的形式通知', - 'app.settings.notification.messages': '系統消息', - 'app.settings.notification.messages-description': '系統消息將以站內信的形式通知', - 'app.settings.notification.todo': '待辦任務', - 'app.settings.notification.todo-description': '待辦任務將以站內信的形式通知', - 'app.settings.open': '開', - 'app.settings.close': '關', -}; diff --git a/demo/src/manifest.json b/demo/src/manifest.json deleted file mode 100644 index 839bc5b5..00000000 --- a/demo/src/manifest.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "Ant Design Pro", - "short_name": "Ant Design Pro", - "display": "standalone", - "start_url": "./?utm_source=homescreen", - "theme_color": "#002140", - "background_color": "#001529", - "icons": [ - { - "src": "icons/icon-192x192.png", - "sizes": "192x192" - }, - { - "src": "icons/icon-128x128.png", - "sizes": "128x128" - }, - { - "src": "icons/icon-512x512.png", - "sizes": "512x512" - } - ] -} diff --git a/demo/src/pages/404.tsx b/demo/src/pages/404.tsx deleted file mode 100644 index 301e1739..00000000 --- a/demo/src/pages/404.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Button, Result } from 'antd'; -import React from 'react'; -import { history } from 'umi'; - -const NoFoundPage: React.FC = () => ( - history.push('/')}> - Back Home - - } - /> -); - -export default NoFoundPage; diff --git a/demo/src/pages/Admin.tsx b/demo/src/pages/Admin.tsx deleted file mode 100644 index d8922fa2..00000000 --- a/demo/src/pages/Admin.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import React from 'react'; -import { HeartTwoTone, SmileTwoTone } from '@ant-design/icons'; -import { Card, Typography, Alert } from 'antd'; -import { PageHeaderWrapper } from '@ant-design/pro-layout'; -import { useIntl } from 'umi'; - -const Admin: React.FC = () => { - const intl = useIntl(); - return ( - - - - - Ant Design Pro You - - -

    - Want to add more pages? Please refer to{' '} - - use block - - 。 -

    -
    - ); -}; - -export default Admin; diff --git a/demo/src/pages/TableList/components/UpdateForm.tsx b/demo/src/pages/TableList/components/UpdateForm.tsx deleted file mode 100644 index 058a1dfe..00000000 --- a/demo/src/pages/TableList/components/UpdateForm.tsx +++ /dev/null @@ -1,209 +0,0 @@ -import React from 'react'; -import { Modal } from 'antd'; -import { - ProFormSelect, - ProFormText, - ProFormTextArea, - StepsForm, - ProFormRadio, - ProFormDateTimePicker, -} from '@ant-design/pro-form'; -import { useIntl, FormattedMessage } from 'umi'; - -export type FormValueType = { - target?: string; - template?: string; - type?: string; - time?: string; - frequency?: string; -} & Partial; - -export type UpdateFormProps = { - onCancel: (flag?: boolean, formVals?: FormValueType) => void; - onSubmit: (values: FormValueType) => Promise; - updateModalVisible: boolean; - values: Partial; -}; - -const UpdateForm: React.FC = (props) => { - const intl = useIntl(); - return ( - { - return ( - { - props.onCancel(); - }} - > - {dom} - - ); - }} - onFinish={props.onSubmit} - > - - - ), - }, - ]} - /> - - ), - min: 5, - }, - ]} - /> - - - - - - - - - ), - }, - ]} - /> - - - - ); -}; - -export default UpdateForm; diff --git a/demo/src/pages/TableList/index.tsx b/demo/src/pages/TableList/index.tsx deleted file mode 100644 index 7a5d0caa..00000000 --- a/demo/src/pages/TableList/index.tsx +++ /dev/null @@ -1,393 +0,0 @@ -import { PlusOutlined } from '@ant-design/icons'; -import { Button, message, Input, Drawer } from 'antd'; -import React, { useState, useRef } from 'react'; -import { useIntl, FormattedMessage } from 'umi'; -import { PageContainer, FooterToolbar } from '@ant-design/pro-layout'; -import type { ProColumns, ActionType } from '@ant-design/pro-table'; -import ProTable from '@ant-design/pro-table'; -import { ModalForm, ProFormText, ProFormTextArea } from '@ant-design/pro-form'; -import type { ProDescriptionsItemProps } from '@ant-design/pro-descriptions'; -import ProDescriptions from '@ant-design/pro-descriptions'; -import type { FormValueType } from './components/UpdateForm'; -import UpdateForm from './components/UpdateForm'; -import { rule, addRule, updateRule, removeRule } from '@/services/ant-design-pro/api'; - -/** - * @en-US Add node - * @zh-CN 添加节点 - * @param fields - */ -const handleAdd = async (fields: API.RuleListItem) => { - const hide = message.loading('正在添加'); - try { - await addRule({ ...fields }); - hide(); - message.success('Added successfully'); - return true; - } catch (error) { - hide(); - message.error('Adding failed, please try again!'); - return false; - } -}; - -/** - * @en-US Update node - * @zh-CN 更新节点 - * - * @param fields - */ -const handleUpdate = async (fields: FormValueType) => { - const hide = message.loading('Configuring'); - try { - await updateRule({ - name: fields.name, - desc: fields.desc, - key: fields.key, - }); - hide(); - - message.success('Configuration is successful'); - return true; - } catch (error) { - hide(); - message.error('Configuration failed, please try again!'); - return false; - } -}; - -/** - * Delete node - * @zh-CN 删除节点 - * - * @param selectedRows - */ -const handleRemove = async (selectedRows: API.RuleListItem[]) => { - const hide = message.loading('正在删除'); - if (!selectedRows) return true; - try { - await removeRule({ - key: selectedRows.map((row) => row.key), - }); - hide(); - message.success('Deleted successfully and will refresh soon'); - return true; - } catch (error) { - hide(); - message.error('Delete failed, please try again'); - return false; - } -}; - -const TableList: React.FC = () => { - /** - * @en-US Pop-up window of new window - * @zh-CN 新建窗口的弹窗 - * */ - const [createModalVisible, handleModalVisible] = useState(false); - /** - * @en-US The pop-up window of the distribution update window - * @zh-CN 分布更新窗口的弹窗 - * */ - const [updateModalVisible, handleUpdateModalVisible] = useState(false); - - const [showDetail, setShowDetail] = useState(false); - - const actionRef = useRef(); - const [currentRow, setCurrentRow] = useState(); - const [selectedRowsState, setSelectedRows] = useState([]); - - /** - * @en-US International configuration - * @zh-CN 国际化配置 - * */ - const intl = useIntl(); - - const columns: ProColumns[] = [ - { - title: ( - - ), - dataIndex: 'name', - tip: 'The rule name is the unique key', - render: (dom, entity) => { - return ( - { - setCurrentRow(entity); - setShowDetail(true); - }} - > - {dom} - - ); - }, - }, - { - title: , - dataIndex: 'desc', - valueType: 'textarea', - }, - { - title: ( - - ), - dataIndex: 'callNo', - sorter: true, - hideInForm: true, - renderText: (val: string) => - `${val}${intl.formatMessage({ - id: 'pages.searchTable.tenThousand', - defaultMessage: ' 万 ', - })}`, - }, - { - title: , - dataIndex: 'status', - hideInForm: true, - valueEnum: { - 0: { - text: ( - - ), - status: 'Default', - }, - 1: { - text: ( - - ), - status: 'Processing', - }, - 2: { - text: ( - - ), - status: 'Success', - }, - 3: { - text: ( - - ), - status: 'Error', - }, - }, - }, - { - title: ( - - ), - sorter: true, - dataIndex: 'updatedAt', - valueType: 'dateTime', - renderFormItem: (item, { defaultRender, ...rest }, form) => { - const status = form.getFieldValue('status'); - if (`${status}` === '0') { - return false; - } - if (`${status}` === '3') { - return ( - - ); - } - return defaultRender(item); - }, - }, - { - title: , - dataIndex: 'option', - valueType: 'option', - render: (_, record) => [ - { - handleUpdateModalVisible(true); - setCurrentRow(record); - }} - > - - , - - - , - ], - }, - ]; - - return ( - - - headerTitle={intl.formatMessage({ - id: 'pages.searchTable.title', - defaultMessage: 'Enquiry form', - })} - actionRef={actionRef} - rowKey="key" - search={{ - labelWidth: 120, - }} - toolBarRender={() => [ - , - ]} - request={rule} - columns={columns} - rowSelection={{ - onChange: (_, selectedRows) => { - setSelectedRows(selectedRows); - }, - }} - /> - {selectedRowsState?.length > 0 && ( - - {' '} - {selectedRowsState.length}{' '} - -    - - {' '} - {selectedRowsState.reduce((pre, item) => pre + item.callNo!, 0)}{' '} - - - - } - > - - - - )} - { - const success = await handleAdd(value as API.RuleListItem); - if (success) { - handleModalVisible(false); - if (actionRef.current) { - actionRef.current.reload(); - } - } - }} - > - - ), - }, - ]} - width="md" - name="name" - /> - - - { - const success = await handleUpdate(value); - if (success) { - handleUpdateModalVisible(false); - setCurrentRow(undefined); - if (actionRef.current) { - actionRef.current.reload(); - } - } - }} - onCancel={() => { - handleUpdateModalVisible(false); - if (!showDetail) { - setCurrentRow(undefined); - } - }} - updateModalVisible={updateModalVisible} - values={currentRow || {}} - /> - - { - setCurrentRow(undefined); - setShowDetail(false); - }} - closable={false} - > - {currentRow?.name && ( - - column={2} - title={currentRow?.name} - request={async () => ({ - data: currentRow || {}, - })} - params={{ - id: currentRow?.name, - }} - columns={columns as ProDescriptionsItemProps[]} - /> - )} - - - ); -}; - -export default TableList; diff --git a/demo/src/pages/Welcome.less b/demo/src/pages/Welcome.less deleted file mode 100644 index 224a7932..00000000 --- a/demo/src/pages/Welcome.less +++ /dev/null @@ -1,8 +0,0 @@ -@import (reference) '~antd/es/style/themes/index'; - -.pre { - margin: 12px 0; - padding: 12px 20px; - background: @input-bg; - box-shadow: @card-shadow; -} diff --git a/demo/src/pages/Welcome.tsx b/demo/src/pages/Welcome.tsx deleted file mode 100644 index 9041b181..00000000 --- a/demo/src/pages/Welcome.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import React from 'react'; -import { PageContainer } from '@ant-design/pro-layout'; -import { Card, Alert, Typography } from 'antd'; -import { useIntl, FormattedMessage } from 'umi'; -import styles from './Welcome.less'; - -const CodePreview: React.FC = ({ children }) => ( -
    -    
    -      {children}
    -    
    -  
    -); - -const Welcome: React.FC = () => { - const intl = useIntl(); - - return ( - - - - - {' '} - - - - - yarn add @ant-design/pro-table - - {' '} - - - - - yarn add @ant-design/pro-layout - - - ); -}; - -export default Welcome; diff --git a/demo/src/pages/account/center/Center.less b/demo/src/pages/account/center/Center.less deleted file mode 100644 index f547b406..00000000 --- a/demo/src/pages/account/center/Center.less +++ /dev/null @@ -1,86 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.avatarHolder { - margin-bottom: 24px; - text-align: center; - - & > img { - width: 104px; - height: 104px; - margin-bottom: 20px; - } - - .name { - margin-bottom: 4px; - color: @heading-color; - font-weight: 500; - font-size: 20px; - line-height: 28px; - } -} - -.detail { - p { - position: relative; - margin-bottom: 8px; - padding-left: 26px; - - &:last-child { - margin-bottom: 0; - } - } - - i { - position: absolute; - top: 4px; - left: 0; - width: 14px; - height: 14px; - } -} - -.tagsTitle, -.teamTitle { - margin-bottom: 12px; - color: @heading-color; - font-weight: 500; -} - -.tags { - :global { - .ant-tag { - margin-bottom: 8px; - } - } -} - -.team { - :global { - .ant-avatar { - margin-right: 12px; - } - } - - a { - display: block; - margin-bottom: 24px; - overflow: hidden; - color: @text-color; - white-space: nowrap; - text-overflow: ellipsis; - word-break: break-all; - transition: color 0.3s; - - &:hover { - color: @primary-color; - } - } -} - -.tabsCard { - :global { - .ant-card-head { - padding: 0 16px; - } - } -} diff --git a/demo/src/pages/account/center/_mock.ts b/demo/src/pages/account/center/_mock.ts deleted file mode 100644 index 67acab0f..00000000 --- a/demo/src/pages/account/center/_mock.ts +++ /dev/null @@ -1,243 +0,0 @@ -// eslint-disable-next-line import/no-extraneous-dependencies -import type { Request, Response } from 'express'; -import type { ListItemDataType } from './data.d'; - -const titles = [ - 'Alipay', - 'Angular', - 'Ant Design', - 'Ant Design Pro', - 'Bootstrap', - 'React', - 'Vue', - 'Webpack', -]; -const avatars = [ - 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', // Alipay - 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', // Angular - 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', // Ant Design - 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', // Ant Design Pro - 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', // Bootstrap - 'https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png', // React - 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', // Vue - 'https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png', // Webpack -]; - -const covers = [ - 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png', - 'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png', - 'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png', - 'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png', -]; -const desc = [ - '那是一种内在的东西, 他们到达不了,也无法触及的', - '希望是一个好东西,也许是最好的,好东西是不会消亡的', - '生命就像一盒巧克力,结果往往出人意料', - '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆', - '那时候我只会想自己想要什么,从不想自己拥有什么', -]; - -const user = [ - '付小小', - '曲丽丽', - '林东东', - '周星星', - '吴加好', - '朱偏右', - '鱼酱', - '乐哥', - '谭小仪', - '仲尼', -]; - -// 当前用户信息 -const currentUseDetail = { - name: 'Serati Ma', - avatar: 'https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png', - userid: '00000001', - email: 'antdesign@alipay.com', - signature: '海纳百川,有容乃大', - title: '交互专家', - group: '蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED', - tags: [ - { - key: '0', - label: '很有想法的', - }, - { - key: '1', - label: '专注设计', - }, - { - key: '2', - label: '辣~', - }, - { - key: '3', - label: '大长腿', - }, - { - key: '4', - label: '川妹子', - }, - { - key: '5', - label: '海纳百川', - }, - ], - notice: [ - { - id: 'xxx1', - title: titles[0], - logo: avatars[0], - description: '那是一种内在的东西,他们到达不了,也无法触及的', - updatedAt: new Date(), - member: '科学搬砖组', - href: '', - memberLink: '', - }, - { - id: 'xxx2', - title: titles[1], - logo: avatars[1], - description: '希望是一个好东西,也许是最好的,好东西是不会消亡的', - updatedAt: new Date('2017-07-24'), - member: '全组都是吴彦祖', - href: '', - memberLink: '', - }, - { - id: 'xxx3', - title: titles[2], - logo: avatars[2], - description: '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆', - updatedAt: new Date(), - member: '中二少女团', - href: '', - memberLink: '', - }, - { - id: 'xxx4', - title: titles[3], - logo: avatars[3], - description: '那时候我只会想自己想要什么,从不想自己拥有什么', - updatedAt: new Date('2017-07-23'), - member: '程序员日常', - href: '', - memberLink: '', - }, - { - id: 'xxx5', - title: titles[4], - logo: avatars[4], - description: '凛冬将至', - updatedAt: new Date('2017-07-23'), - member: '高逼格设计天团', - href: '', - memberLink: '', - }, - { - id: 'xxx6', - title: titles[5], - logo: avatars[5], - description: '生命就像一盒巧克力,结果往往出人意料', - updatedAt: new Date('2017-07-23'), - member: '骗你来学计算机', - href: '', - memberLink: '', - }, - ], - notifyCount: 12, - unreadCount: 11, - country: 'China', - geographic: { - province: { - label: '浙江省', - key: '330000', - }, - city: { - label: '杭州市', - key: '330100', - }, - }, - address: '西湖区工专路 77 号', - phone: '0752-268888888', -}; - -function fakeList(count: number): ListItemDataType[] { - const list = []; - for (let i = 0; i < count; i += 1) { - list.push({ - id: `fake-list-${i}`, - owner: user[i % 10], - title: titles[i % 8], - avatar: avatars[i % 8], - cover: parseInt(`${i / 4}`, 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)], - status: ['active', 'exception', 'normal'][i % 3] as - | 'normal' - | 'exception' - | 'active' - | 'success', - percent: Math.ceil(Math.random() * 50) + 50, - logo: avatars[i % 8], - href: 'https://ant.design', - updatedAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), - createdAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), - subDescription: desc[i % 5], - description: - '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。', - activeUser: Math.ceil(Math.random() * 100000) + 100000, - newUser: Math.ceil(Math.random() * 1000) + 1000, - star: Math.ceil(Math.random() * 100) + 100, - like: Math.ceil(Math.random() * 100) + 100, - message: Math.ceil(Math.random() * 10) + 10, - content: - '段落示意:蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。', - members: [ - { - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png', - name: '曲丽丽', - id: 'member1', - }, - { - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png', - name: '王昭君', - id: 'member2', - }, - { - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png', - name: '董娜娜', - id: 'member3', - }, - ], - }); - } - - return list; -} - -function getFakeList(req: Request, res: Response) { - const params = req.query as any; - - const count = Number(params.count) * 1 || 5; - - const result = fakeList(count); - return res.json({ - data: { - list: result, - }, - }); -} - -// 获取用户信息 -function getCurrentUser(req: Request, res: Response) { - return res.json({ - data: currentUseDetail, - }); -} - -export default { - 'GET /api/fake_list_Detail': getFakeList, - // 支持值为 Object 和 Array - 'GET /api/currentUserDetail': getCurrentUser, -}; diff --git a/demo/src/pages/account/center/components/Applications/index.less b/demo/src/pages/account/center/components/Applications/index.less deleted file mode 100644 index c550b333..00000000 --- a/demo/src/pages/account/center/components/Applications/index.less +++ /dev/null @@ -1,51 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.filterCardList { - margin-bottom: -24px; - :global { - .ant-card-meta-content { - margin-top: 0; - } - // disabled white space - .ant-card-meta-avatar { - font-size: 0; - } - - .ant-list .ant-list-item-content-single { - max-width: 100%; - } - } - .cardInfo { - margin-top: 16px; - margin-left: 40px; - zoom: 1; - &::before, - &::after { - display: table; - content: ' '; - } - &::after { - clear: both; - height: 0; - font-size: 0; - visibility: hidden; - } - & > div { - position: relative; - float: left; - width: 50%; - text-align: left; - p { - margin: 0; - font-size: 24px; - line-height: 32px; - } - p:first-child { - margin-bottom: 4px; - color: @text-color-secondary; - font-size: 12px; - line-height: 20px; - } - } - } -} diff --git a/demo/src/pages/account/center/components/Applications/index.tsx b/demo/src/pages/account/center/components/Applications/index.tsx deleted file mode 100644 index c7bd3a9f..00000000 --- a/demo/src/pages/account/center/components/Applications/index.tsx +++ /dev/null @@ -1,123 +0,0 @@ -import { - DownloadOutlined, - EditOutlined, - EllipsisOutlined, - ShareAltOutlined, -} from '@ant-design/icons'; -import { useRequest } from 'umi'; -import { Avatar, Card, Dropdown, List, Menu, Tooltip } from 'antd'; -import React from 'react'; -import numeral from 'numeral'; -import type { ListItemDataType } from '../../data.d'; -import { queryFakeList } from '../../service'; -import stylesApplications from './index.less'; - -export function formatWan(val: number) { - const v = val * 1; - if (!v || Number.isNaN(v)) return ''; - - let result: React.ReactNode = val; - if (val > 10000) { - result = ( - - {Math.floor(val / 10000)} - - 万 - - - ); - } - return result; -} - -const Applications: React.FC = () => { - // 获取tab列表数据 - const { data: listData } = useRequest(() => { - return queryFakeList({ - count: 30, - }); - }); - - const itemMenu = ( - - - - 1st menu item - - - - - 2nd menu item - - - - - 3d menu item - - - - ); - const CardInfo: React.FC<{ - activeUser: React.ReactNode; - newUser: React.ReactNode; - }> = ({ activeUser, newUser }) => ( -
    -
    -

    活跃用户

    -

    {activeUser}

    -
    -
    -

    新增用户

    -

    {newUser}

    -
    -
    - ); - return ( - - rowKey="id" - className={stylesApplications.filterCardList} - grid={{ gutter: 24, xxl: 3, xl: 2, lg: 2, md: 2, sm: 2, xs: 1 }} - dataSource={listData?.list || []} - renderItem={(item) => ( - - - - , - - - , - - - , - - - , - ]} - > - } title={item.title} /> -
    - -
    -
    -
    - )} - /> - ); -}; - -export default Applications; diff --git a/demo/src/pages/account/center/components/ArticleListContent/index.less b/demo/src/pages/account/center/components/ArticleListContent/index.less deleted file mode 100644 index eca0811c..00000000 --- a/demo/src/pages/account/center/components/ArticleListContent/index.less +++ /dev/null @@ -1,38 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.listContent { - .description { - max-width: 720px; - line-height: 22px; - } - .extra { - margin-top: 16px; - color: @text-color-secondary; - line-height: 22px; - & > :global(.ant-avatar) { - position: relative; - top: 1px; - width: 20px; - height: 20px; - margin-right: 8px; - vertical-align: top; - } - & > em { - margin-left: 16px; - color: @disabled-color; - font-style: normal; - } - } -} - -@media screen and (max-width: @screen-xs) { - .listContent { - .extra { - & > em { - display: block; - margin-top: 8px; - margin-left: 0; - } - } - } -} diff --git a/demo/src/pages/account/center/components/ArticleListContent/index.tsx b/demo/src/pages/account/center/components/ArticleListContent/index.tsx deleted file mode 100644 index 183c38e8..00000000 --- a/demo/src/pages/account/center/components/ArticleListContent/index.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import { Avatar } from 'antd'; -import React from 'react'; -import moment from 'moment'; -import styles from './index.less'; - -export type ApplicationsProps = { - data: { - content?: string; - updatedAt?: any; - avatar?: string; - owner?: string; - href?: string; - }; -}; -const ArticleListContent: React.FC = ({ - data: { content, updatedAt, avatar, owner, href }, -}) => ( -
    -
    {content}
    -
    - - {owner} 发布在 {href} - {moment(updatedAt).format('YYYY-MM-DD HH:mm')} -
    -
    -); - -export default ArticleListContent; diff --git a/demo/src/pages/account/center/components/Articles/index.less b/demo/src/pages/account/center/components/Articles/index.less deleted file mode 100644 index e78c412c..00000000 --- a/demo/src/pages/account/center/components/Articles/index.less +++ /dev/null @@ -1,12 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.articleList { - :global { - .ant-list-item:first-child { - padding-top: 0; - } - } -} -a.listItemMetaTitle { - color: @heading-color; -} diff --git a/demo/src/pages/account/center/components/Articles/index.tsx b/demo/src/pages/account/center/components/Articles/index.tsx deleted file mode 100644 index 94adefee..00000000 --- a/demo/src/pages/account/center/components/Articles/index.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import React from 'react'; -import { StarTwoTone, LikeOutlined, MessageFilled } from '@ant-design/icons'; -import { useRequest } from 'umi'; -import { List, Tag } from 'antd'; -import ArticleListContent from '../ArticleListContent'; -import type { ListItemDataType } from '../../data.d'; -import { queryFakeList } from '../../service'; -import styles from './index.less'; - -const Articles: React.FC = () => { - const IconText: React.FC<{ - icon: React.ReactNode; - text: React.ReactNode; - }> = ({ icon, text }) => ( - - {icon} {text} - - ); - - // 获取tab列表数据 - const { data: listData } = useRequest(() => { - return queryFakeList({ - count: 30, - }); - }); - return ( - - size="large" - className={styles.articleList} - rowKey="id" - itemLayout="vertical" - dataSource={listData?.list || []} - renderItem={(item) => ( - } text={item.star} />, - } text={item.like} />, - } text={item.message} />, - ]} - > - - {item.title} - - } - description={ - - Ant Design - 设计语言 - 蚂蚁金服 - - } - /> - - - )} - /> - ); -}; - -export default Articles; diff --git a/demo/src/pages/account/center/components/AvatarList/index.less b/demo/src/pages/account/center/components/AvatarList/index.less deleted file mode 100644 index a7a3d441..00000000 --- a/demo/src/pages/account/center/components/AvatarList/index.less +++ /dev/null @@ -1,50 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.avatarList { - display: inline-block; - ul { - display: inline-block; - margin-left: 8px; - font-size: 0; - } -} - -.avatarItem { - display: inline-block; - width: @avatar-size-base; - height: @avatar-size-base; - margin-left: -8px; - font-size: @font-size-base; - :global { - .ant-avatar { - border: 1px solid @border-color-base; - } - } -} - -.avatarItemLarge { - width: @avatar-size-lg; - height: @avatar-size-lg; -} - -.avatarItemSmall { - width: @avatar-size-sm; - height: @avatar-size-sm; -} - -.avatarItemMini { - width: 20px; - height: 20px; - :global { - .ant-avatar { - width: 20px; - height: 20px; - line-height: 20px; - - .ant-avatar-string { - font-size: 12px; - line-height: 18px; - } - } - } -} diff --git a/demo/src/pages/account/center/components/AvatarList/index.tsx b/demo/src/pages/account/center/components/AvatarList/index.tsx deleted file mode 100644 index 4d57501a..00000000 --- a/demo/src/pages/account/center/components/AvatarList/index.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import { Avatar, Tooltip } from 'antd'; - -import React from 'react'; -import classNames from 'classnames'; -import styles from './index.less'; - -export declare type SizeType = number | 'small' | 'default' | 'large'; - -export type AvatarItemProps = { - tips: React.ReactNode; - src: string; - size?: SizeType; - style?: React.CSSProperties; - onClick?: () => void; -}; - -export type AvatarListProps = { - Item?: React.ReactElement; - size?: SizeType; - maxLength?: number; - excessItemsStyle?: React.CSSProperties; - style?: React.CSSProperties; - children: React.ReactElement | React.ReactElement[]; -}; - -const avatarSizeToClassName = (size?: SizeType | 'mini') => - classNames(styles.avatarItem, { - [styles.avatarItemLarge]: size === 'large', - [styles.avatarItemSmall]: size === 'small', - [styles.avatarItemMini]: size === 'mini', - }); - -const Item: React.FC = ({ src, size, tips, onClick = () => {} }) => { - const cls = avatarSizeToClassName(size); - - return ( -
  • - {tips ? ( - - - - ) : ( - - )} -
  • - ); -}; - -const AvatarList: React.FC & { Item: typeof Item } = ({ - children, - size, - maxLength = 5, - excessItemsStyle, - ...other -}) => { - const numOfChildren = React.Children.count(children); - const numToShow = maxLength >= numOfChildren ? numOfChildren : maxLength; - const childrenArray = React.Children.toArray(children) as React.ReactElement[]; - const childrenWithProps = childrenArray.slice(0, numToShow).map((child) => - React.cloneElement(child, { - size, - }), - ); - - if (numToShow < numOfChildren) { - const cls = avatarSizeToClassName(size); - - childrenWithProps.push( -
  • - {`+${numOfChildren - maxLength}`} -
  • , - ); - } - - return ( -
    -
      {childrenWithProps}
    -
    - ); -}; - -AvatarList.Item = Item; - -export default AvatarList; diff --git a/demo/src/pages/account/center/components/Projects/index.less b/demo/src/pages/account/center/components/Projects/index.less deleted file mode 100644 index bfa61475..00000000 --- a/demo/src/pages/account/center/components/Projects/index.less +++ /dev/null @@ -1,54 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.coverCardList { - .card { - :global { - .ant-card-meta-title { - margin-bottom: 4px; - & > a { - display: inline-block; - max-width: 100%; - color: @heading-color; - } - } - .ant-card-meta-description { - height: 44px; - overflow: hidden; - line-height: 22px; - } - } - - &:hover { - :global { - .ant-card-meta-title > a { - color: @primary-color; - } - } - } - } - - .cardItemContent { - display: flex; - height: 20px; - margin-top: 16px; - margin-bottom: -4px; - line-height: 20px; - & > span { - flex: 1; - color: @text-color-secondary; - font-size: 12px; - } - .avatarList { - flex: 0 1 auto; - } - } - .cardList { - margin-top: 24px; - } - - :global { - .ant-list .ant-list-item-content-single { - max-width: 100%; - } - } -} diff --git a/demo/src/pages/account/center/components/Projects/index.tsx b/demo/src/pages/account/center/components/Projects/index.tsx deleted file mode 100644 index a03c383d..00000000 --- a/demo/src/pages/account/center/components/Projects/index.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { Card, List } from 'antd'; -import { useRequest } from 'umi'; -import React from 'react'; -import moment from 'moment'; -import { queryFakeList } from '../../service'; -import AvatarList from '../AvatarList'; -import type { ListItemDataType } from '../../data.d'; -import styles from './index.less'; - -const Projects: React.FC = () => { - // 获取tab列表数据 - const { data: listData } = useRequest(() => { - return queryFakeList({ - count: 30, - }); - }); - - return ( - - className={styles.coverCardList} - rowKey="id" - grid={{ gutter: 24, xxl: 3, xl: 2, lg: 2, md: 2, sm: 2, xs: 1 }} - dataSource={listData?.list || []} - renderItem={(item) => ( - - }> - {item.title}} description={item.subDescription} /> -
    - {moment(item.updatedAt).fromNow()} -
    - - {item.members.map((member) => ( - - ))} - -
    -
    -
    -
    - )} - /> - ); -}; - -export default Projects; diff --git a/demo/src/pages/account/center/data.d.ts b/demo/src/pages/account/center/data.d.ts deleted file mode 100644 index 6085c1e5..00000000 --- a/demo/src/pages/account/center/data.d.ts +++ /dev/null @@ -1,75 +0,0 @@ -export type tabKeyType = 'articles' | 'applications' | 'projects'; -export interface TagType { - key: string; - label: string; -} - -export type GeographicType = { - province: { - label: string; - key: string; - }; - city: { - label: string; - key: string; - }; -}; - -export type NoticeType = { - id: string; - title: string; - logo: string; - description: string; - updatedAt: string; - member: string; - href: string; - memberLink: string; -}; - -export type CurrentUser = { - name: string; - avatar: string; - userid: string; - notice: NoticeType[]; - email: string; - signature: string; - title: string; - group: string; - tags: TagType[]; - notifyCount: number; - unreadCount: number; - country: string; - geographic: GeographicType; - address: string; - phone: string; -}; - -export type Member = { - avatar: string; - name: string; - id: string; -}; - -export type ListItemDataType = { - id: string; - owner: string; - title: string; - avatar: string; - cover: string; - status: 'normal' | 'exception' | 'active' | 'success'; - percent: number; - logo: string; - href: string; - body?: any; - updatedAt: number; - createdAt: number; - subDescription: string; - description: string; - activeUser: number; - newUser: number; - star: number; - like: number; - message: number; - content: string; - members: Member[]; -}; diff --git a/demo/src/pages/account/center/index.tsx b/demo/src/pages/account/center/index.tsx deleted file mode 100644 index 2410ff48..00000000 --- a/demo/src/pages/account/center/index.tsx +++ /dev/null @@ -1,210 +0,0 @@ -import { PlusOutlined, HomeOutlined, ContactsOutlined, ClusterOutlined } from '@ant-design/icons'; -import { Avatar, Card, Col, Divider, Input, Row, Tag } from 'antd'; -import React, { useState, useRef } from 'react'; -import { GridContent } from '@ant-design/pro-layout'; -import { Link, useRequest } from 'umi'; -import type { RouteChildrenProps } from 'react-router'; -import Projects from './components/Projects'; -import Articles from './components/Articles'; -import Applications from './components/Applications'; -import type { CurrentUser, TagType, tabKeyType } from './data.d'; -import { queryCurrent } from './service'; -import styles from './Center.less'; - -const operationTabList = [ - { - key: 'articles', - tab: ( - - 文章 (8) - - ), - }, - { - key: 'applications', - tab: ( - - 应用 (8) - - ), - }, - { - key: 'projects', - tab: ( - - 项目 (8) - - ), - }, -]; - -const TagList: React.FC<{ tags: CurrentUser['tags'] }> = ({ tags }) => { - const ref = useRef(null); - const [newTags, setNewTags] = useState([]); - const [inputVisible, setInputVisible] = useState(false); - const [inputValue, setInputValue] = useState(''); - - const showInput = () => { - setInputVisible(true); - if (ref.current) { - // eslint-disable-next-line no-unused-expressions - ref.current?.focus(); - } - }; - - const handleInputChange = (e: React.ChangeEvent) => { - setInputValue(e.target.value); - }; - - const handleInputConfirm = () => { - let tempsTags = [...newTags]; - if (inputValue && tempsTags.filter((tag) => tag.label === inputValue).length === 0) { - tempsTags = [...tempsTags, { key: `new-${tempsTags.length}`, label: inputValue }]; - } - setNewTags(tempsTags); - setInputVisible(false); - setInputValue(''); - }; - - return ( -
    -
    标签
    - {(tags || []).concat(newTags).map((item) => ( - {item.label} - ))} - {inputVisible && ( - - )} - {!inputVisible && ( - - - - )} -
    - ); -}; - -const Center: React.FC = () => { - const [tabKey, setTabKey] = useState('articles'); - - // 获取用户信息 - const { data: currentUser, loading } = useRequest(() => { - return queryCurrent(); - }); - - // 渲染用户信息 - const renderUserInfo = ({ title, group, geographic }: Partial) => { - return ( -
    -

    - - {title} -

    -

    - - {group} -

    -

    - - {(geographic || { province: { label: '' } }).province.label} - { - ( - geographic || { - city: { - label: '', - }, - } - ).city.label - } -

    -
    - ); - }; - - // 渲染tab切换 - const renderChildrenByTabKey = (tabValue: tabKeyType) => { - if (tabValue === 'projects') { - return ; - } - if (tabValue === 'applications') { - return ; - } - if (tabValue === 'articles') { - return ; - } - return null; - }; - - return ( - - -
    - - {!loading && currentUser && ( -
    -
    - -
    {currentUser.name}
    -
    {currentUser?.signature}
    -
    - {renderUserInfo(currentUser)} - - - -
    -
    团队
    - - {currentUser.notice && - currentUser.notice.map((item) => ( -
    - - - {item.member} - - - ))} - - - - )} - - - - { - setTabKey(_tabKey as tabKeyType); - }} - > - {renderChildrenByTabKey(tabKey)} - - - - - ); -}; -export default Center; diff --git a/demo/src/pages/account/center/service.ts b/demo/src/pages/account/center/service.ts deleted file mode 100644 index b6bfad71..00000000 --- a/demo/src/pages/account/center/service.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { request } from 'umi'; -import type { CurrentUser, ListItemDataType } from './data.d'; - -export async function queryCurrent(): Promise<{ data: CurrentUser }> { - return request('/api/currentUserDetail'); -} - -export async function queryFakeList(params: { - count: number; -}): Promise<{ data: { list: ListItemDataType[] } }> { - return request('/api/fake_list_Detail', { - params, - }); -} diff --git a/demo/src/pages/account/settings/_mock.ts b/demo/src/pages/account/settings/_mock.ts deleted file mode 100644 index 8e4ee132..00000000 --- a/demo/src/pages/account/settings/_mock.ts +++ /dev/null @@ -1,79 +0,0 @@ -// eslint-disable-next-line import/no-extraneous-dependencies -import type { Request, Response } from 'express'; - -const city = require('./geographic/city.json'); -const province = require('./geographic/province.json'); - -function getProvince(_: Request, res: Response) { - return res.json({ - data: province, - }); -} - -function getCity(req: Request, res: Response) { - return res.json({ - data: city[req.params.province], - }); -} - -function getCurrentUse(req: Request, res: Response) { - return res.json({ - data: { - name: 'Serati Ma', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png', - userid: '00000001', - email: 'antdesign@alipay.com', - signature: '海纳百川,有容乃大', - title: '交互专家', - group: '蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED', - tags: [ - { - key: '0', - label: '很有想法的', - }, - { - key: '1', - label: '专注设计', - }, - { - key: '2', - label: '辣~', - }, - { - key: '3', - label: '大长腿', - }, - { - key: '4', - label: '川妹子', - }, - { - key: '5', - label: '海纳百川', - }, - ], - notifyCount: 12, - unreadCount: 11, - country: 'China', - geographic: { - province: { - label: '浙江省', - key: '330000', - }, - city: { - label: '杭州市', - key: '330100', - }, - }, - address: '西湖区工专路 77 号', - phone: '0752-268888888', - }, - }); -} -// 代码中会兼容本地 service mock 以及部署站点的静态数据 -export default { - // 支持值为 Object 和 Array - 'GET /api/accountSettingCurrentUser': getCurrentUse, - 'GET /api/geographic/province': getProvince, - 'GET /api/geographic/city/:province': getCity, -}; diff --git a/demo/src/pages/account/settings/components/BaseView.less b/demo/src/pages/account/settings/components/BaseView.less deleted file mode 100644 index ca328b47..00000000 --- a/demo/src/pages/account/settings/components/BaseView.less +++ /dev/null @@ -1,65 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.baseView { - display: flex; - padding-top: 12px; - - :global { - .ant-legacy-form-item .ant-legacy-form-item-control-wrapper { - width: 100%; - } - } - - .left { - min-width: 224px; - max-width: 448px; - } - .right { - flex: 1; - padding-left: 104px; - .avatar_title { - height: 22px; - margin-bottom: 8px; - color: @heading-color; - font-size: @font-size-base; - line-height: 22px; - } - .avatar { - width: 144px; - height: 144px; - margin-bottom: 12px; - overflow: hidden; - img { - width: 100%; - } - } - .button_view { - width: 144px; - text-align: center; - } - } -} - -.area_code { - width: 72px; -} -.phone_number { - width: 214px; -} - -@media screen and (max-width: @screen-xl) { - .baseView { - flex-direction: column-reverse; - - .right { - display: flex; - flex-direction: column; - align-items: center; - max-width: 448px; - padding: 20px; - .avatar_title { - display: none; - } - } - } -} diff --git a/demo/src/pages/account/settings/components/PhoneView.tsx b/demo/src/pages/account/settings/components/PhoneView.tsx deleted file mode 100644 index 43894f34..00000000 --- a/demo/src/pages/account/settings/components/PhoneView.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import React from 'react'; - -import { Input } from 'antd'; -import styles from './PhoneView.less'; - -type PhoneViewProps = { - value?: string; - onChange?: (value: string) => void; -}; - -const PhoneView: React.FC = (props) => { - const { value, onChange } = props; - let values = ['', '']; - if (value) { - values = value.split('-'); - } - - return ( - <> - { - if (onChange) { - onChange(`${e.target.value}-${values[1]}`); - } - }} - /> - { - if (onChange) { - onChange(`${values[0]}-${e.target.value}`); - } - }} - value={values[1]} - /> - - ); -}; - -export default PhoneView; diff --git a/demo/src/pages/account/settings/components/base.tsx b/demo/src/pages/account/settings/components/base.tsx deleted file mode 100644 index e13ee787..00000000 --- a/demo/src/pages/account/settings/components/base.tsx +++ /dev/null @@ -1,230 +0,0 @@ -import React from 'react'; -import { UploadOutlined } from '@ant-design/icons'; -import { Button, Input, Upload, message } from 'antd'; -import ProForm, { - ProFormDependency, - ProFormFieldSet, - ProFormSelect, - ProFormText, - ProFormTextArea, -} from '@ant-design/pro-form'; -import { useRequest } from 'umi'; -import { queryCurrent } from '../service'; -import { queryProvince, queryCity } from '../service'; - -import styles from './BaseView.less'; - -const validatorPhone = (rule: any, value: string[], callback: (message?: string) => void) => { - if (!value[0]) { - callback('Please input your area code!'); - } - if (!value[1]) { - callback('Please input your phone number!'); - } - callback(); -}; -// 头像组件 方便以后独立,增加裁剪之类的功能 -const AvatarView = ({ avatar }: { avatar: string }) => ( - <> -
    头像
    -
    - avatar -
    - -
    - -
    -
    - -); - -const BaseView: React.FC = () => { - const { data: currentUser, loading } = useRequest(() => { - return queryCurrent(); - }); - - const getAvatarURL = () => { - if (currentUser) { - if (currentUser.avatar) { - return currentUser.avatar; - } - const url = 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png'; - return url; - } - return ''; - }; - - const handleFinish = async () => { - message.success('更新基本信息成功'); - }; - return ( -
    - {loading ? null : ( - <> -
    - dom[1], - }} - initialValues={{ - ...currentUser, - phone: currentUser?.phone.split('-'), - }} - hideRequiredMark - > - - - - - - - { - return queryProvince().then(({ data }) => { - return data.map((item) => { - return { - label: item.name, - value: item.id, - }; - }); - }); - }} - /> - - {({ province }) => { - return ( - { - if (!province?.key) { - return []; - } - return queryCity(province.key || '').then(({ data }) => { - return data.map((item) => { - return { - label: item.name, - value: item.id, - }; - }); - }); - }} - /> - ); - }} - - - - - - - - -
    -
    - -
    - - )} -
    - ); -}; - -export default BaseView; diff --git a/demo/src/pages/account/settings/components/binding.tsx b/demo/src/pages/account/settings/components/binding.tsx deleted file mode 100644 index 002c4596..00000000 --- a/demo/src/pages/account/settings/components/binding.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import { AlipayOutlined, DingdingOutlined, TaobaoOutlined } from '@ant-design/icons'; -import { List } from 'antd'; -import React, { Fragment } from 'react'; - -const BindingView: React.FC = () => { - const getData = () => [ - { - title: '绑定淘宝', - description: '当前未绑定淘宝账号', - actions: [绑定], - avatar: , - }, - { - title: '绑定支付宝', - description: '当前未绑定支付宝账号', - actions: [绑定], - avatar: , - }, - { - title: '绑定钉钉', - description: '当前未绑定钉钉账号', - actions: [绑定], - avatar: , - }, - ]; - - return ( - - ( - - - - )} - /> - - ); -}; - -export default BindingView; diff --git a/demo/src/pages/account/settings/components/notification.tsx b/demo/src/pages/account/settings/components/notification.tsx deleted file mode 100644 index 177c38ce..00000000 --- a/demo/src/pages/account/settings/components/notification.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import { List, Switch } from 'antd'; -import React, { Fragment } from 'react'; - -type Unpacked = T extends (infer U)[] ? U : T; - -const NotificationView: React.FC = () => { - const getData = () => { - const Action = ; - return [ - { - title: '账户密码', - description: '其他用户的消息将以站内信的形式通知', - actions: [Action], - }, - { - title: '系统消息', - description: '系统消息将以站内信的形式通知', - actions: [Action], - }, - { - title: '待办任务', - description: '待办任务将以站内信的形式通知', - actions: [Action], - }, - ]; - }; - - const data = getData(); - return ( - - > - itemLayout="horizontal" - dataSource={data} - renderItem={(item) => ( - - - - )} - /> - - ); -}; - -export default NotificationView; diff --git a/demo/src/pages/account/settings/components/security.tsx b/demo/src/pages/account/settings/components/security.tsx deleted file mode 100644 index c0c40200..00000000 --- a/demo/src/pages/account/settings/components/security.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import React from 'react'; -import { List } from 'antd'; - -type Unpacked = T extends (infer U)[] ? U : T; - -const passwordStrength = { - strong: , - medium: , - weak: 弱 Weak, -}; - -const SecurityView: React.FC = () => { - const getData = () => [ - { - title: '账户密码', - description: ( - <> - 当前密码强度: - {passwordStrength.strong} - - ), - actions: [修改], - }, - { - title: '密保手机', - description: `已绑定手机:138****8293`, - actions: [修改], - }, - { - title: '密保问题', - description: '未设置密保问题,密保问题可有效保护账户安全', - actions: [设置], - }, - { - title: '备用邮箱', - description: `已绑定邮箱:ant***sign.com`, - actions: [修改], - }, - { - title: 'MFA 设备', - description: '未绑定 MFA 设备,绑定后,可以进行二次确认', - actions: [绑定], - }, - ]; - - const data = getData(); - return ( - <> - > - itemLayout="horizontal" - dataSource={data} - renderItem={(item) => ( - - - - )} - /> - - ); -}; - -export default SecurityView; diff --git a/demo/src/pages/account/settings/data.d.ts b/demo/src/pages/account/settings/data.d.ts deleted file mode 100644 index f4a88f30..00000000 --- a/demo/src/pages/account/settings/data.d.ts +++ /dev/null @@ -1,43 +0,0 @@ -export type TagType = { - key: string; - label: string; -}; - -export type GeographicItemType = { - name: string; - id: string; -}; - -export type GeographicType = { - province: GeographicItemType; - city: GeographicItemType; -}; - -export type NoticeType = { - id: string; - title: string; - logo: string; - description: string; - updatedAt: string; - member: string; - href: string; - memberLink: string; -}; - -export type CurrentUser = { - name: string; - avatar: string; - userid: string; - notice: NoticeType[]; - email: string; - signature: string; - title: string; - group: string; - tags: TagType[]; - notifyCount: number; - unreadCount: number; - country: string; - geographic: GeographicType; - address: string; - phone: string; -}; diff --git a/demo/src/pages/account/settings/geographic/city.json b/demo/src/pages/account/settings/geographic/city.json deleted file mode 100644 index 29783747..00000000 --- a/demo/src/pages/account/settings/geographic/city.json +++ /dev/null @@ -1,1784 +0,0 @@ -{ - "110000": [ - { - "province": "北京市", - "name": "市辖区", - "id": "110100" - } - ], - "120000": [ - { - "province": "天津市", - "name": "市辖区", - "id": "120100" - } - ], - "130000": [ - { - "province": "河北省", - "name": "石家庄市", - "id": "130100" - }, - { - "province": "河北省", - "name": "唐山市", - "id": "130200" - }, - { - "province": "河北省", - "name": "秦皇岛市", - "id": "130300" - }, - { - "province": "河北省", - "name": "邯郸市", - "id": "130400" - }, - { - "province": "河北省", - "name": "邢台市", - "id": "130500" - }, - { - "province": "河北省", - "name": "保定市", - "id": "130600" - }, - { - "province": "河北省", - "name": "张家口市", - "id": "130700" - }, - { - "province": "河北省", - "name": "承德市", - "id": "130800" - }, - { - "province": "河北省", - "name": "沧州市", - "id": "130900" - }, - { - "province": "河北省", - "name": "廊坊市", - "id": "131000" - }, - { - "province": "河北省", - "name": "衡水市", - "id": "131100" - }, - { - "province": "河北省", - "name": "省直辖县级行政区划", - "id": "139000" - } - ], - "140000": [ - { - "province": "山西省", - "name": "太原市", - "id": "140100" - }, - { - "province": "山西省", - "name": "大同市", - "id": "140200" - }, - { - "province": "山西省", - "name": "阳泉市", - "id": "140300" - }, - { - "province": "山西省", - "name": "长治市", - "id": "140400" - }, - { - "province": "山西省", - "name": "晋城市", - "id": "140500" - }, - { - "province": "山西省", - "name": "朔州市", - "id": "140600" - }, - { - "province": "山西省", - "name": "晋中市", - "id": "140700" - }, - { - "province": "山西省", - "name": "运城市", - "id": "140800" - }, - { - "province": "山西省", - "name": "忻州市", - "id": "140900" - }, - { - "province": "山西省", - "name": "临汾市", - "id": "141000" - }, - { - "province": "山西省", - "name": "吕梁市", - "id": "141100" - } - ], - "150000": [ - { - "province": "内蒙古自治区", - "name": "呼和浩特市", - "id": "150100" - }, - { - "province": "内蒙古自治区", - "name": "包头市", - "id": "150200" - }, - { - "province": "内蒙古自治区", - "name": "乌海市", - "id": "150300" - }, - { - "province": "内蒙古自治区", - "name": "赤峰市", - "id": "150400" - }, - { - "province": "内蒙古自治区", - "name": "通辽市", - "id": "150500" - }, - { - "province": "内蒙古自治区", - "name": "鄂尔多斯市", - "id": "150600" - }, - { - "province": "内蒙古自治区", - "name": "呼伦贝尔市", - "id": "150700" - }, - { - "province": "内蒙古自治区", - "name": "巴彦淖尔市", - "id": "150800" - }, - { - "province": "内蒙古自治区", - "name": "乌兰察布市", - "id": "150900" - }, - { - "province": "内蒙古自治区", - "name": "兴安盟", - "id": "152200" - }, - { - "province": "内蒙古自治区", - "name": "锡林郭勒盟", - "id": "152500" - }, - { - "province": "内蒙古自治区", - "name": "阿拉善盟", - "id": "152900" - } - ], - "210000": [ - { - "province": "辽宁省", - "name": "沈阳市", - "id": "210100" - }, - { - "province": "辽宁省", - "name": "大连市", - "id": "210200" - }, - { - "province": "辽宁省", - "name": "鞍山市", - "id": "210300" - }, - { - "province": "辽宁省", - "name": "抚顺市", - "id": "210400" - }, - { - "province": "辽宁省", - "name": "本溪市", - "id": "210500" - }, - { - "province": "辽宁省", - "name": "丹东市", - "id": "210600" - }, - { - "province": "辽宁省", - "name": "锦州市", - "id": "210700" - }, - { - "province": "辽宁省", - "name": "营口市", - "id": "210800" - }, - { - "province": "辽宁省", - "name": "阜新市", - "id": "210900" - }, - { - "province": "辽宁省", - "name": "辽阳市", - "id": "211000" - }, - { - "province": "辽宁省", - "name": "盘锦市", - "id": "211100" - }, - { - "province": "辽宁省", - "name": "铁岭市", - "id": "211200" - }, - { - "province": "辽宁省", - "name": "朝阳市", - "id": "211300" - }, - { - "province": "辽宁省", - "name": "葫芦岛市", - "id": "211400" - } - ], - "220000": [ - { - "province": "吉林省", - "name": "长春市", - "id": "220100" - }, - { - "province": "吉林省", - "name": "吉林市", - "id": "220200" - }, - { - "province": "吉林省", - "name": "四平市", - "id": "220300" - }, - { - "province": "吉林省", - "name": "辽源市", - "id": "220400" - }, - { - "province": "吉林省", - "name": "通化市", - "id": "220500" - }, - { - "province": "吉林省", - "name": "白山市", - "id": "220600" - }, - { - "province": "吉林省", - "name": "松原市", - "id": "220700" - }, - { - "province": "吉林省", - "name": "白城市", - "id": "220800" - }, - { - "province": "吉林省", - "name": "延边朝鲜族自治州", - "id": "222400" - } - ], - "230000": [ - { - "province": "黑龙江省", - "name": "哈尔滨市", - "id": "230100" - }, - { - "province": "黑龙江省", - "name": "齐齐哈尔市", - "id": "230200" - }, - { - "province": "黑龙江省", - "name": "鸡西市", - "id": "230300" - }, - { - "province": "黑龙江省", - "name": "鹤岗市", - "id": "230400" - }, - { - "province": "黑龙江省", - "name": "双鸭山市", - "id": "230500" - }, - { - "province": "黑龙江省", - "name": "大庆市", - "id": "230600" - }, - { - "province": "黑龙江省", - "name": "伊春市", - "id": "230700" - }, - { - "province": "黑龙江省", - "name": "佳木斯市", - "id": "230800" - }, - { - "province": "黑龙江省", - "name": "七台河市", - "id": "230900" - }, - { - "province": "黑龙江省", - "name": "牡丹江市", - "id": "231000" - }, - { - "province": "黑龙江省", - "name": "黑河市", - "id": "231100" - }, - { - "province": "黑龙江省", - "name": "绥化市", - "id": "231200" - }, - { - "province": "黑龙江省", - "name": "大兴安岭地区", - "id": "232700" - } - ], - "310000": [ - { - "province": "上海市", - "name": "市辖区", - "id": "310100" - } - ], - "320000": [ - { - "province": "江苏省", - "name": "南京市", - "id": "320100" - }, - { - "province": "江苏省", - "name": "无锡市", - "id": "320200" - }, - { - "province": "江苏省", - "name": "徐州市", - "id": "320300" - }, - { - "province": "江苏省", - "name": "常州市", - "id": "320400" - }, - { - "province": "江苏省", - "name": "苏州市", - "id": "320500" - }, - { - "province": "江苏省", - "name": "南通市", - "id": "320600" - }, - { - "province": "江苏省", - "name": "连云港市", - "id": "320700" - }, - { - "province": "江苏省", - "name": "淮安市", - "id": "320800" - }, - { - "province": "江苏省", - "name": "盐城市", - "id": "320900" - }, - { - "province": "江苏省", - "name": "扬州市", - "id": "321000" - }, - { - "province": "江苏省", - "name": "镇江市", - "id": "321100" - }, - { - "province": "江苏省", - "name": "泰州市", - "id": "321200" - }, - { - "province": "江苏省", - "name": "宿迁市", - "id": "321300" - } - ], - "330000": [ - { - "province": "浙江省", - "name": "杭州市", - "id": "330100" - }, - { - "province": "浙江省", - "name": "宁波市", - "id": "330200" - }, - { - "province": "浙江省", - "name": "温州市", - "id": "330300" - }, - { - "province": "浙江省", - "name": "嘉兴市", - "id": "330400" - }, - { - "province": "浙江省", - "name": "湖州市", - "id": "330500" - }, - { - "province": "浙江省", - "name": "绍兴市", - "id": "330600" - }, - { - "province": "浙江省", - "name": "金华市", - "id": "330700" - }, - { - "province": "浙江省", - "name": "衢州市", - "id": "330800" - }, - { - "province": "浙江省", - "name": "舟山市", - "id": "330900" - }, - { - "province": "浙江省", - "name": "台州市", - "id": "331000" - }, - { - "province": "浙江省", - "name": "丽水市", - "id": "331100" - } - ], - "340000": [ - { - "province": "安徽省", - "name": "合肥市", - "id": "340100" - }, - { - "province": "安徽省", - "name": "芜湖市", - "id": "340200" - }, - { - "province": "安徽省", - "name": "蚌埠市", - "id": "340300" - }, - { - "province": "安徽省", - "name": "淮南市", - "id": "340400" - }, - { - "province": "安徽省", - "name": "马鞍山市", - "id": "340500" - }, - { - "province": "安徽省", - "name": "淮北市", - "id": "340600" - }, - { - "province": "安徽省", - "name": "铜陵市", - "id": "340700" - }, - { - "province": "安徽省", - "name": "安庆市", - "id": "340800" - }, - { - "province": "安徽省", - "name": "黄山市", - "id": "341000" - }, - { - "province": "安徽省", - "name": "滁州市", - "id": "341100" - }, - { - "province": "安徽省", - "name": "阜阳市", - "id": "341200" - }, - { - "province": "安徽省", - "name": "宿州市", - "id": "341300" - }, - { - "province": "安徽省", - "name": "六安市", - "id": "341500" - }, - { - "province": "安徽省", - "name": "亳州市", - "id": "341600" - }, - { - "province": "安徽省", - "name": "池州市", - "id": "341700" - }, - { - "province": "安徽省", - "name": "宣城市", - "id": "341800" - } - ], - "350000": [ - { - "province": "福建省", - "name": "福州市", - "id": "350100" - }, - { - "province": "福建省", - "name": "厦门市", - "id": "350200" - }, - { - "province": "福建省", - "name": "莆田市", - "id": "350300" - }, - { - "province": "福建省", - "name": "三明市", - "id": "350400" - }, - { - "province": "福建省", - "name": "泉州市", - "id": "350500" - }, - { - "province": "福建省", - "name": "漳州市", - "id": "350600" - }, - { - "province": "福建省", - "name": "南平市", - "id": "350700" - }, - { - "province": "福建省", - "name": "龙岩市", - "id": "350800" - }, - { - "province": "福建省", - "name": "宁德市", - "id": "350900" - } - ], - "360000": [ - { - "province": "江西省", - "name": "南昌市", - "id": "360100" - }, - { - "province": "江西省", - "name": "景德镇市", - "id": "360200" - }, - { - "province": "江西省", - "name": "萍乡市", - "id": "360300" - }, - { - "province": "江西省", - "name": "九江市", - "id": "360400" - }, - { - "province": "江西省", - "name": "新余市", - "id": "360500" - }, - { - "province": "江西省", - "name": "鹰潭市", - "id": "360600" - }, - { - "province": "江西省", - "name": "赣州市", - "id": "360700" - }, - { - "province": "江西省", - "name": "吉安市", - "id": "360800" - }, - { - "province": "江西省", - "name": "宜春市", - "id": "360900" - }, - { - "province": "江西省", - "name": "抚州市", - "id": "361000" - }, - { - "province": "江西省", - "name": "上饶市", - "id": "361100" - } - ], - "370000": [ - { - "province": "山东省", - "name": "济南市", - "id": "370100" - }, - { - "province": "山东省", - "name": "青岛市", - "id": "370200" - }, - { - "province": "山东省", - "name": "淄博市", - "id": "370300" - }, - { - "province": "山东省", - "name": "枣庄市", - "id": "370400" - }, - { - "province": "山东省", - "name": "东营市", - "id": "370500" - }, - { - "province": "山东省", - "name": "烟台市", - "id": "370600" - }, - { - "province": "山东省", - "name": "潍坊市", - "id": "370700" - }, - { - "province": "山东省", - "name": "济宁市", - "id": "370800" - }, - { - "province": "山东省", - "name": "泰安市", - "id": "370900" - }, - { - "province": "山东省", - "name": "威海市", - "id": "371000" - }, - { - "province": "山东省", - "name": "日照市", - "id": "371100" - }, - { - "province": "山东省", - "name": "莱芜市", - "id": "371200" - }, - { - "province": "山东省", - "name": "临沂市", - "id": "371300" - }, - { - "province": "山东省", - "name": "德州市", - "id": "371400" - }, - { - "province": "山东省", - "name": "聊城市", - "id": "371500" - }, - { - "province": "山东省", - "name": "滨州市", - "id": "371600" - }, - { - "province": "山东省", - "name": "菏泽市", - "id": "371700" - } - ], - "410000": [ - { - "province": "河南省", - "name": "郑州市", - "id": "410100" - }, - { - "province": "河南省", - "name": "开封市", - "id": "410200" - }, - { - "province": "河南省", - "name": "洛阳市", - "id": "410300" - }, - { - "province": "河南省", - "name": "平顶山市", - "id": "410400" - }, - { - "province": "河南省", - "name": "安阳市", - "id": "410500" - }, - { - "province": "河南省", - "name": "鹤壁市", - "id": "410600" - }, - { - "province": "河南省", - "name": "新乡市", - "id": "410700" - }, - { - "province": "河南省", - "name": "焦作市", - "id": "410800" - }, - { - "province": "河南省", - "name": "濮阳市", - "id": "410900" - }, - { - "province": "河南省", - "name": "许昌市", - "id": "411000" - }, - { - "province": "河南省", - "name": "漯河市", - "id": "411100" - }, - { - "province": "河南省", - "name": "三门峡市", - "id": "411200" - }, - { - "province": "河南省", - "name": "南阳市", - "id": "411300" - }, - { - "province": "河南省", - "name": "商丘市", - "id": "411400" - }, - { - "province": "河南省", - "name": "信阳市", - "id": "411500" - }, - { - "province": "河南省", - "name": "周口市", - "id": "411600" - }, - { - "province": "河南省", - "name": "驻马店市", - "id": "411700" - }, - { - "province": "河南省", - "name": "省直辖县级行政区划", - "id": "419000" - } - ], - "420000": [ - { - "province": "湖北省", - "name": "武汉市", - "id": "420100" - }, - { - "province": "湖北省", - "name": "黄石市", - "id": "420200" - }, - { - "province": "湖北省", - "name": "十堰市", - "id": "420300" - }, - { - "province": "湖北省", - "name": "宜昌市", - "id": "420500" - }, - { - "province": "湖北省", - "name": "襄阳市", - "id": "420600" - }, - { - "province": "湖北省", - "name": "鄂州市", - "id": "420700" - }, - { - "province": "湖北省", - "name": "荆门市", - "id": "420800" - }, - { - "province": "湖北省", - "name": "孝感市", - "id": "420900" - }, - { - "province": "湖北省", - "name": "荆州市", - "id": "421000" - }, - { - "province": "湖北省", - "name": "黄冈市", - "id": "421100" - }, - { - "province": "湖北省", - "name": "咸宁市", - "id": "421200" - }, - { - "province": "湖北省", - "name": "随州市", - "id": "421300" - }, - { - "province": "湖北省", - "name": "恩施土家族苗族自治州", - "id": "422800" - }, - { - "province": "湖北省", - "name": "省直辖县级行政区划", - "id": "429000" - } - ], - "430000": [ - { - "province": "湖南省", - "name": "长沙市", - "id": "430100" - }, - { - "province": "湖南省", - "name": "株洲市", - "id": "430200" - }, - { - "province": "湖南省", - "name": "湘潭市", - "id": "430300" - }, - { - "province": "湖南省", - "name": "衡阳市", - "id": "430400" - }, - { - "province": "湖南省", - "name": "邵阳市", - "id": "430500" - }, - { - "province": "湖南省", - "name": "岳阳市", - "id": "430600" - }, - { - "province": "湖南省", - "name": "常德市", - "id": "430700" - }, - { - "province": "湖南省", - "name": "张家界市", - "id": "430800" - }, - { - "province": "湖南省", - "name": "益阳市", - "id": "430900" - }, - { - "province": "湖南省", - "name": "郴州市", - "id": "431000" - }, - { - "province": "湖南省", - "name": "永州市", - "id": "431100" - }, - { - "province": "湖南省", - "name": "怀化市", - "id": "431200" - }, - { - "province": "湖南省", - "name": "娄底市", - "id": "431300" - }, - { - "province": "湖南省", - "name": "湘西土家族苗族自治州", - "id": "433100" - } - ], - "440000": [ - { - "province": "广东省", - "name": "广州市", - "id": "440100" - }, - { - "province": "广东省", - "name": "韶关市", - "id": "440200" - }, - { - "province": "广东省", - "name": "深圳市", - "id": "440300" - }, - { - "province": "广东省", - "name": "珠海市", - "id": "440400" - }, - { - "province": "广东省", - "name": "汕头市", - "id": "440500" - }, - { - "province": "广东省", - "name": "佛山市", - "id": "440600" - }, - { - "province": "广东省", - "name": "江门市", - "id": "440700" - }, - { - "province": "广东省", - "name": "湛江市", - "id": "440800" - }, - { - "province": "广东省", - "name": "茂名市", - "id": "440900" - }, - { - "province": "广东省", - "name": "肇庆市", - "id": "441200" - }, - { - "province": "广东省", - "name": "惠州市", - "id": "441300" - }, - { - "province": "广东省", - "name": "梅州市", - "id": "441400" - }, - { - "province": "广东省", - "name": "汕尾市", - "id": "441500" - }, - { - "province": "广东省", - "name": "河源市", - "id": "441600" - }, - { - "province": "广东省", - "name": "阳江市", - "id": "441700" - }, - { - "province": "广东省", - "name": "清远市", - "id": "441800" - }, - { - "province": "广东省", - "name": "东莞市", - "id": "441900" - }, - { - "province": "广东省", - "name": "中山市", - "id": "442000" - }, - { - "province": "广东省", - "name": "潮州市", - "id": "445100" - }, - { - "province": "广东省", - "name": "揭阳市", - "id": "445200" - }, - { - "province": "广东省", - "name": "云浮市", - "id": "445300" - } - ], - "450000": [ - { - "province": "广西壮族自治区", - "name": "南宁市", - "id": "450100" - }, - { - "province": "广西壮族自治区", - "name": "柳州市", - "id": "450200" - }, - { - "province": "广西壮族自治区", - "name": "桂林市", - "id": "450300" - }, - { - "province": "广西壮族自治区", - "name": "梧州市", - "id": "450400" - }, - { - "province": "广西壮族自治区", - "name": "北海市", - "id": "450500" - }, - { - "province": "广西壮族自治区", - "name": "防城港市", - "id": "450600" - }, - { - "province": "广西壮族自治区", - "name": "钦州市", - "id": "450700" - }, - { - "province": "广西壮族自治区", - "name": "贵港市", - "id": "450800" - }, - { - "province": "广西壮族自治区", - "name": "玉林市", - "id": "450900" - }, - { - "province": "广西壮族自治区", - "name": "百色市", - "id": "451000" - }, - { - "province": "广西壮族自治区", - "name": "贺州市", - "id": "451100" - }, - { - "province": "广西壮族自治区", - "name": "河池市", - "id": "451200" - }, - { - "province": "广西壮族自治区", - "name": "来宾市", - "id": "451300" - }, - { - "province": "广西壮族自治区", - "name": "崇左市", - "id": "451400" - } - ], - "460000": [ - { - "province": "海南省", - "name": "海口市", - "id": "460100" - }, - { - "province": "海南省", - "name": "三亚市", - "id": "460200" - }, - { - "province": "海南省", - "name": "三沙市", - "id": "460300" - }, - { - "province": "海南省", - "name": "儋州市", - "id": "460400" - }, - { - "province": "海南省", - "name": "省直辖县级行政区划", - "id": "469000" - } - ], - "500000": [ - { - "province": "重庆市", - "name": "市辖区", - "id": "500100" - }, - { - "province": "重庆市", - "name": "县", - "id": "500200" - } - ], - "510000": [ - { - "province": "四川省", - "name": "成都市", - "id": "510100" - }, - { - "province": "四川省", - "name": "自贡市", - "id": "510300" - }, - { - "province": "四川省", - "name": "攀枝花市", - "id": "510400" - }, - { - "province": "四川省", - "name": "泸州市", - "id": "510500" - }, - { - "province": "四川省", - "name": "德阳市", - "id": "510600" - }, - { - "province": "四川省", - "name": "绵阳市", - "id": "510700" - }, - { - "province": "四川省", - "name": "广元市", - "id": "510800" - }, - { - "province": "四川省", - "name": "遂宁市", - "id": "510900" - }, - { - "province": "四川省", - "name": "内江市", - "id": "511000" - }, - { - "province": "四川省", - "name": "乐山市", - "id": "511100" - }, - { - "province": "四川省", - "name": "南充市", - "id": "511300" - }, - { - "province": "四川省", - "name": "眉山市", - "id": "511400" - }, - { - "province": "四川省", - "name": "宜宾市", - "id": "511500" - }, - { - "province": "四川省", - "name": "广安市", - "id": "511600" - }, - { - "province": "四川省", - "name": "达州市", - "id": "511700" - }, - { - "province": "四川省", - "name": "雅安市", - "id": "511800" - }, - { - "province": "四川省", - "name": "巴中市", - "id": "511900" - }, - { - "province": "四川省", - "name": "资阳市", - "id": "512000" - }, - { - "province": "四川省", - "name": "阿坝藏族羌族自治州", - "id": "513200" - }, - { - "province": "四川省", - "name": "甘孜藏族自治州", - "id": "513300" - }, - { - "province": "四川省", - "name": "凉山彝族自治州", - "id": "513400" - } - ], - "520000": [ - { - "province": "贵州省", - "name": "贵阳市", - "id": "520100" - }, - { - "province": "贵州省", - "name": "六盘水市", - "id": "520200" - }, - { - "province": "贵州省", - "name": "遵义市", - "id": "520300" - }, - { - "province": "贵州省", - "name": "安顺市", - "id": "520400" - }, - { - "province": "贵州省", - "name": "毕节市", - "id": "520500" - }, - { - "province": "贵州省", - "name": "铜仁市", - "id": "520600" - }, - { - "province": "贵州省", - "name": "黔西南布依族苗族自治州", - "id": "522300" - }, - { - "province": "贵州省", - "name": "黔东南苗族侗族自治州", - "id": "522600" - }, - { - "province": "贵州省", - "name": "黔南布依族苗族自治州", - "id": "522700" - } - ], - "530000": [ - { - "province": "云南省", - "name": "昆明市", - "id": "530100" - }, - { - "province": "云南省", - "name": "曲靖市", - "id": "530300" - }, - { - "province": "云南省", - "name": "玉溪市", - "id": "530400" - }, - { - "province": "云南省", - "name": "保山市", - "id": "530500" - }, - { - "province": "云南省", - "name": "昭通市", - "id": "530600" - }, - { - "province": "云南省", - "name": "丽江市", - "id": "530700" - }, - { - "province": "云南省", - "name": "普洱市", - "id": "530800" - }, - { - "province": "云南省", - "name": "临沧市", - "id": "530900" - }, - { - "province": "云南省", - "name": "楚雄彝族自治州", - "id": "532300" - }, - { - "province": "云南省", - "name": "红河哈尼族彝族自治州", - "id": "532500" - }, - { - "province": "云南省", - "name": "文山壮族苗族自治州", - "id": "532600" - }, - { - "province": "云南省", - "name": "西双版纳傣族自治州", - "id": "532800" - }, - { - "province": "云南省", - "name": "大理白族自治州", - "id": "532900" - }, - { - "province": "云南省", - "name": "德宏傣族景颇族自治州", - "id": "533100" - }, - { - "province": "云南省", - "name": "怒江傈僳族自治州", - "id": "533300" - }, - { - "province": "云南省", - "name": "迪庆藏族自治州", - "id": "533400" - } - ], - "540000": [ - { - "province": "西藏自治区", - "name": "拉萨市", - "id": "540100" - }, - { - "province": "西藏自治区", - "name": "日喀则市", - "id": "540200" - }, - { - "province": "西藏自治区", - "name": "昌都市", - "id": "540300" - }, - { - "province": "西藏自治区", - "name": "林芝市", - "id": "540400" - }, - { - "province": "西藏自治区", - "name": "山南市", - "id": "540500" - }, - { - "province": "西藏自治区", - "name": "那曲地区", - "id": "542400" - }, - { - "province": "西藏自治区", - "name": "阿里地区", - "id": "542500" - } - ], - "610000": [ - { - "province": "陕西省", - "name": "西安市", - "id": "610100" - }, - { - "province": "陕西省", - "name": "铜川市", - "id": "610200" - }, - { - "province": "陕西省", - "name": "宝鸡市", - "id": "610300" - }, - { - "province": "陕西省", - "name": "咸阳市", - "id": "610400" - }, - { - "province": "陕西省", - "name": "渭南市", - "id": "610500" - }, - { - "province": "陕西省", - "name": "延安市", - "id": "610600" - }, - { - "province": "陕西省", - "name": "汉中市", - "id": "610700" - }, - { - "province": "陕西省", - "name": "榆林市", - "id": "610800" - }, - { - "province": "陕西省", - "name": "安康市", - "id": "610900" - }, - { - "province": "陕西省", - "name": "商洛市", - "id": "611000" - } - ], - "620000": [ - { - "province": "甘肃省", - "name": "兰州市", - "id": "620100" - }, - { - "province": "甘肃省", - "name": "嘉峪关市", - "id": "620200" - }, - { - "province": "甘肃省", - "name": "金昌市", - "id": "620300" - }, - { - "province": "甘肃省", - "name": "白银市", - "id": "620400" - }, - { - "province": "甘肃省", - "name": "天水市", - "id": "620500" - }, - { - "province": "甘肃省", - "name": "武威市", - "id": "620600" - }, - { - "province": "甘肃省", - "name": "张掖市", - "id": "620700" - }, - { - "province": "甘肃省", - "name": "平凉市", - "id": "620800" - }, - { - "province": "甘肃省", - "name": "酒泉市", - "id": "620900" - }, - { - "province": "甘肃省", - "name": "庆阳市", - "id": "621000" - }, - { - "province": "甘肃省", - "name": "定西市", - "id": "621100" - }, - { - "province": "甘肃省", - "name": "陇南市", - "id": "621200" - }, - { - "province": "甘肃省", - "name": "临夏回族自治州", - "id": "622900" - }, - { - "province": "甘肃省", - "name": "甘南藏族自治州", - "id": "623000" - } - ], - "630000": [ - { - "province": "青海省", - "name": "西宁市", - "id": "630100" - }, - { - "province": "青海省", - "name": "海东市", - "id": "630200" - }, - { - "province": "青海省", - "name": "海北藏族自治州", - "id": "632200" - }, - { - "province": "青海省", - "name": "黄南藏族自治州", - "id": "632300" - }, - { - "province": "青海省", - "name": "海南藏族自治州", - "id": "632500" - }, - { - "province": "青海省", - "name": "果洛藏族自治州", - "id": "632600" - }, - { - "province": "青海省", - "name": "玉树藏族自治州", - "id": "632700" - }, - { - "province": "青海省", - "name": "海西蒙古族藏族自治州", - "id": "632800" - } - ], - "640000": [ - { - "province": "宁夏回族自治区", - "name": "银川市", - "id": "640100" - }, - { - "province": "宁夏回族自治区", - "name": "石嘴山市", - "id": "640200" - }, - { - "province": "宁夏回族自治区", - "name": "吴忠市", - "id": "640300" - }, - { - "province": "宁夏回族自治区", - "name": "固原市", - "id": "640400" - }, - { - "province": "宁夏回族自治区", - "name": "中卫市", - "id": "640500" - } - ], - "650000": [ - { - "province": "新疆维吾尔自治区", - "name": "乌鲁木齐市", - "id": "650100" - }, - { - "province": "新疆维吾尔自治区", - "name": "克拉玛依市", - "id": "650200" - }, - { - "province": "新疆维吾尔自治区", - "name": "吐鲁番市", - "id": "650400" - }, - { - "province": "新疆维吾尔自治区", - "name": "哈密市", - "id": "650500" - }, - { - "province": "新疆维吾尔自治区", - "name": "昌吉回族自治州", - "id": "652300" - }, - { - "province": "新疆维吾尔自治区", - "name": "博尔塔拉蒙古自治州", - "id": "652700" - }, - { - "province": "新疆维吾尔自治区", - "name": "巴音郭楞蒙古自治州", - "id": "652800" - }, - { - "province": "新疆维吾尔自治区", - "name": "阿克苏地区", - "id": "652900" - }, - { - "province": "新疆维吾尔自治区", - "name": "克孜勒苏柯尔克孜自治州", - "id": "653000" - }, - { - "province": "新疆维吾尔自治区", - "name": "喀什地区", - "id": "653100" - }, - { - "province": "新疆维吾尔自治区", - "name": "和田地区", - "id": "653200" - }, - { - "province": "新疆维吾尔自治区", - "name": "伊犁哈萨克自治州", - "id": "654000" - }, - { - "province": "新疆维吾尔自治区", - "name": "塔城地区", - "id": "654200" - }, - { - "province": "新疆维吾尔自治区", - "name": "阿勒泰地区", - "id": "654300" - }, - { - "province": "新疆维吾尔自治区", - "name": "自治区直辖县级行政区划", - "id": "659000" - } - ] -} diff --git a/demo/src/pages/account/settings/geographic/province.json b/demo/src/pages/account/settings/geographic/province.json deleted file mode 100644 index 910c83f0..00000000 --- a/demo/src/pages/account/settings/geographic/province.json +++ /dev/null @@ -1,138 +0,0 @@ -[ - { - "name": "北京市", - "id": "110000" - }, - { - "name": "天津市", - "id": "120000" - }, - { - "name": "河北省", - "id": "130000" - }, - { - "name": "山西省", - "id": "140000" - }, - { - "name": "内蒙古自治区", - "id": "150000" - }, - { - "name": "辽宁省", - "id": "210000" - }, - { - "name": "吉林省", - "id": "220000" - }, - { - "name": "黑龙江省", - "id": "230000" - }, - { - "name": "上海市", - "id": "310000" - }, - { - "name": "江苏省", - "id": "320000" - }, - { - "name": "浙江省", - "id": "330000" - }, - { - "name": "安徽省", - "id": "340000" - }, - { - "name": "福建省", - "id": "350000" - }, - { - "name": "江西省", - "id": "360000" - }, - { - "name": "山东省", - "id": "370000" - }, - { - "name": "河南省", - "id": "410000" - }, - { - "name": "湖北省", - "id": "420000" - }, - { - "name": "湖南省", - "id": "430000" - }, - { - "name": "广东省", - "id": "440000" - }, - { - "name": "广西壮族自治区", - "id": "450000" - }, - { - "name": "海南省", - "id": "460000" - }, - { - "name": "重庆市", - "id": "500000" - }, - { - "name": "四川省", - "id": "510000" - }, - { - "name": "贵州省", - "id": "520000" - }, - { - "name": "云南省", - "id": "530000" - }, - { - "name": "西藏自治区", - "id": "540000" - }, - { - "name": "陕西省", - "id": "610000" - }, - { - "name": "甘肃省", - "id": "620000" - }, - { - "name": "青海省", - "id": "630000" - }, - { - "name": "宁夏回族自治区", - "id": "640000" - }, - { - "name": "新疆维吾尔自治区", - "id": "650000" - }, - { - "name": "台湾省", - "id": "710000" - }, - { - "name": "香港特别行政区", - "id": "810000" - }, - { - "name": "澳门特别行政区", - "id": "820000" - } -] diff --git a/demo/src/pages/account/settings/index.tsx b/demo/src/pages/account/settings/index.tsx deleted file mode 100644 index d5131ec5..00000000 --- a/demo/src/pages/account/settings/index.tsx +++ /dev/null @@ -1,111 +0,0 @@ -import React, { useState, useRef, useLayoutEffect } from 'react'; -import { GridContent } from '@ant-design/pro-layout'; -import { Menu } from 'antd'; -import BaseView from './components/base'; -import BindingView from './components/binding'; -import NotificationView from './components/notification'; -import SecurityView from './components/security'; -import styles from './style.less'; - -const { Item } = Menu; - -type SettingsStateKeys = 'base' | 'security' | 'binding' | 'notification'; -type SettingsState = { - mode: 'inline' | 'horizontal'; - selectKey: SettingsStateKeys; -}; - -const Settings: React.FC = () => { - const menuMap: Record = { - base: '基本设置', - security: '安全设置', - binding: '账号绑定', - notification: '新消息通知', - }; - - const [initConfig, setInitConfig] = useState({ - mode: 'inline', - selectKey: 'base', - }); - const dom = useRef(); - - const resize = () => { - requestAnimationFrame(() => { - if (!dom.current) { - return; - } - let mode: 'inline' | 'horizontal' = 'inline'; - const { offsetWidth } = dom.current; - if (dom.current.offsetWidth < 641 && offsetWidth > 400) { - mode = 'horizontal'; - } - if (window.innerWidth < 768 && offsetWidth > 400) { - mode = 'horizontal'; - } - setInitConfig({ ...initConfig, mode: mode as SettingsState['mode'] }); - }); - }; - - useLayoutEffect(() => { - if (dom.current) { - window.addEventListener('resize', resize); - resize(); - } - return () => { - window.removeEventListener('resize', resize); - }; - }, [dom.current]); - - const getMenu = () => { - return Object.keys(menuMap).map((item) => {menuMap[item]}); - }; - - const renderChildren = () => { - const { selectKey } = initConfig; - switch (selectKey) { - case 'base': - return ; - case 'security': - return ; - case 'binding': - return ; - case 'notification': - return ; - default: - return null; - } - }; - - return ( - -
    { - if (ref) { - dom.current = ref; - } - }} - > -
    - { - setInitConfig({ - ...initConfig, - selectKey: key as SettingsStateKeys, - }); - }} - > - {getMenu()} - -
    -
    -
    {menuMap[initConfig.selectKey]}
    - {renderChildren()} -
    -
    -
    - ); -}; -export default Settings; diff --git a/demo/src/pages/account/settings/service.ts b/demo/src/pages/account/settings/service.ts deleted file mode 100644 index e2a6031a..00000000 --- a/demo/src/pages/account/settings/service.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { request } from 'umi'; -import type { CurrentUser, GeographicItemType } from './data'; - -export async function queryCurrent(): Promise<{ data: CurrentUser }> { - return request('/api/accountSettingCurrentUser'); -} - -export async function queryProvince(): Promise<{ data: GeographicItemType[] }> { - return request('/api/geographic/province'); -} - -export async function queryCity(province: string): Promise<{ data: GeographicItemType[] }> { - return request(`/api/geographic/city/${province}`); -} - -export async function query() { - return request('/api/users'); -} diff --git a/demo/src/pages/account/settings/style.less b/demo/src/pages/account/settings/style.less deleted file mode 100644 index fee54c2d..00000000 --- a/demo/src/pages/account/settings/style.less +++ /dev/null @@ -1,93 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.main { - display: flex; - width: 100%; - height: 100%; - padding-top: 16px; - padding-bottom: 16px; - background-color: @menu-bg; - .leftMenu { - width: 224px; - border-right: @border-width-base @border-style-base @border-color-split; - :global { - .ant-menu-inline { - border: none; - } - .ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected { - font-weight: bold; - } - } - } - .right { - flex: 1; - padding: 8px 40px; - .title { - margin-bottom: 12px; - color: @heading-color; - font-weight: 500; - font-size: 20px; - line-height: 28px; - } - } - :global { - .ant-list-split .ant-list-item:last-child { - border-bottom: 1px solid @border-color-split; - } - .ant-list-item { - padding-top: 14px; - padding-bottom: 14px; - } - } -} -:global { - .ant-list-item-meta { - // 账号绑定图标 - .taobao { - display: block; - color: #ff4000; - font-size: 48px; - line-height: 48px; - border-radius: @border-radius-base; - } - .dingding { - margin: 2px; - padding: 6px; - color: #fff; - font-size: 32px; - line-height: 32px; - background-color: #2eabff; - border-radius: @border-radius-base; - } - .alipay { - color: #2eabff; - font-size: 48px; - line-height: 48px; - border-radius: @border-radius-base; - } - } - - // 密码强度 - font.strong { - color: @success-color; - } - font.medium { - color: @warning-color; - } - font.weak { - color: @error-color; - } -} - -@media screen and (max-width: @screen-md) { - .main { - flex-direction: column; - .leftMenu { - width: 100%; - border: none; - } - .right { - padding: 40px; - } - } -} diff --git a/demo/src/pages/dashboard/analysis/_mock.ts b/demo/src/pages/dashboard/analysis/_mock.ts deleted file mode 100644 index e811c588..00000000 --- a/demo/src/pages/dashboard/analysis/_mock.ts +++ /dev/null @@ -1,210 +0,0 @@ -import moment from 'moment'; -import type { Request, Response } from 'express'; -import type { AnalysisData, RadarData, DataItem } from './data.d'; - -// mock data -const visitData: DataItem[] = []; -const beginDay = new Date().getTime(); - -const fakeY = [7, 5, 4, 2, 4, 7, 5, 6, 5, 9, 6, 3, 1, 5, 3, 6, 5]; -for (let i = 0; i < fakeY.length; i += 1) { - visitData.push({ - x: moment(new Date(beginDay + 1000 * 60 * 60 * 24 * i)).format('YYYY-MM-DD'), - y: fakeY[i], - }); -} - -const visitData2 = []; -const fakeY2 = [1, 6, 4, 8, 3, 7, 2]; -for (let i = 0; i < fakeY2.length; i += 1) { - visitData2.push({ - x: moment(new Date(beginDay + 1000 * 60 * 60 * 24 * i)).format('YYYY-MM-DD'), - y: fakeY2[i], - }); -} - -const salesData = []; -for (let i = 0; i < 12; i += 1) { - salesData.push({ - x: `${i + 1}月`, - y: Math.floor(Math.random() * 1000) + 200, - }); -} -const searchData = []; -for (let i = 0; i < 50; i += 1) { - searchData.push({ - index: i + 1, - keyword: `搜索关键词-${i}`, - count: Math.floor(Math.random() * 1000), - range: Math.floor(Math.random() * 100), - status: Math.floor((Math.random() * 10) % 2), - }); -} -const salesTypeData = [ - { - x: '家用电器', - y: 4544, - }, - { - x: '食用酒水', - y: 3321, - }, - { - x: '个护健康', - y: 3113, - }, - { - x: '服饰箱包', - y: 2341, - }, - { - x: '母婴产品', - y: 1231, - }, - { - x: '其他', - y: 1231, - }, -]; - -const salesTypeDataOnline = [ - { - x: '家用电器', - y: 244, - }, - { - x: '食用酒水', - y: 321, - }, - { - x: '个护健康', - y: 311, - }, - { - x: '服饰箱包', - y: 41, - }, - { - x: '母婴产品', - y: 121, - }, - { - x: '其他', - y: 111, - }, -]; - -const salesTypeDataOffline = [ - { - x: '家用电器', - y: 99, - }, - { - x: '食用酒水', - y: 188, - }, - { - x: '个护健康', - y: 344, - }, - { - x: '服饰箱包', - y: 255, - }, - { - x: '其他', - y: 65, - }, -]; - -const offlineData = []; -for (let i = 0; i < 10; i += 1) { - offlineData.push({ - name: `Stores ${i}`, - cvr: Math.ceil(Math.random() * 9) / 10, - }); -} -const offlineChartData = []; -for (let i = 0; i < 20; i += 1) { - const date = moment(new Date().getTime() + 1000 * 60 * 30 * i).format('HH:mm'); - offlineChartData.push({ - date, - type: '客流量', - value: Math.floor(Math.random() * 100) + 10, - }); - offlineChartData.push({ - date, - type: '支付笔数', - value: Math.floor(Math.random() * 100) + 10, - }); -} - -const radarOriginData = [ - { - name: '个人', - ref: 10, - koubei: 8, - output: 4, - contribute: 5, - hot: 7, - }, - { - name: '团队', - ref: 3, - koubei: 9, - output: 6, - contribute: 3, - hot: 1, - }, - { - name: '部门', - ref: 4, - koubei: 1, - output: 6, - contribute: 5, - hot: 7, - }, -]; - -const radarData: RadarData[] = []; -const radarTitleMap = { - ref: '引用', - koubei: '口碑', - output: '产量', - contribute: '贡献', - hot: '热度', -}; -radarOriginData.forEach((item) => { - Object.keys(item).forEach((key) => { - if (key !== 'name') { - radarData.push({ - name: item.name, - label: radarTitleMap[key], - value: item[key], - }); - } - }); -}); - -const getFakeChartData: AnalysisData = { - visitData, - visitData2, - salesData, - searchData, - offlineData, - offlineChartData, - salesTypeData, - salesTypeDataOnline, - salesTypeDataOffline, - radarData, -}; - -const fakeChartData = (_: Request, res: Response) => { - return res.json({ - data: getFakeChartData, - }); -}; - -export default { - 'GET /api/fake_analysis_chart_data': fakeChartData, -}; diff --git a/demo/src/pages/dashboard/analysis/components/Charts/Bar/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/Bar/index.tsx deleted file mode 100644 index c2650fff..00000000 --- a/demo/src/pages/dashboard/analysis/components/Charts/Bar/index.tsx +++ /dev/null @@ -1,133 +0,0 @@ -import { Axis, Chart, Geom, Tooltip } from 'bizcharts'; -import React, { Component } from 'react'; - -import Debounce from 'lodash.debounce'; -import autoHeight from '../autoHeight'; -import styles from '../index.less'; - -export type BarProps = { - title: React.ReactNode; - color?: string; - padding?: [number, number, number, number]; - height?: number; - data: { - x: string; - y: number; - }[]; - forceFit?: boolean; - autoLabel?: boolean; - style?: React.CSSProperties; -}; - -class Bar extends Component< - BarProps, - { - autoHideXLabels: boolean; - } -> { - state = { - autoHideXLabels: false, - }; - - root: HTMLDivElement | undefined = undefined; - - node: HTMLDivElement | undefined = undefined; - - resize = Debounce(() => { - if (!this.node || !this.node.parentNode) { - return; - } - const canvasWidth = (this.node.parentNode as HTMLDivElement).clientWidth; - const { data = [], autoLabel = true } = this.props; - if (!autoLabel) { - return; - } - const minWidth = data.length * 30; - const { autoHideXLabels } = this.state; - - if (canvasWidth <= minWidth) { - if (!autoHideXLabels) { - this.setState({ - autoHideXLabels: true, - }); - } - } else if (autoHideXLabels) { - this.setState({ - autoHideXLabels: false, - }); - } - }, 500); - - componentDidMount() { - window.addEventListener('resize', this.resize, { passive: true }); - } - - componentWillUnmount() { - window.removeEventListener('resize', this.resize); - } - - handleRoot = (n: HTMLDivElement) => { - this.root = n; - }; - - handleRef = (n: HTMLDivElement) => { - this.node = n; - }; - - render() { - const { - height = 1, - title, - forceFit = true, - data, - color = 'rgba(24, 144, 255, 0.85)', - padding, - } = this.props; - - const { autoHideXLabels } = this.state; - - const scale = { - x: { - type: 'cat', - }, - y: { - min: 0, - }, - }; - - const tooltip: [string, (...args: any[]) => { name?: string; value: string }] = [ - 'x*y', - (x: string, y: string) => ({ - name: x, - value: y, - }), - ]; - - return ( -
    -
    - {title &&

    {title}

    } - - - - - - -
    -
    - ); - } -} - -export default autoHeight()(Bar); diff --git a/demo/src/pages/dashboard/analysis/components/Charts/ChartCard/index.less b/demo/src/pages/dashboard/analysis/components/Charts/ChartCard/index.less deleted file mode 100644 index d7bf6dda..00000000 --- a/demo/src/pages/dashboard/analysis/components/Charts/ChartCard/index.less +++ /dev/null @@ -1,75 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.chartCard { - position: relative; - .chartTop { - position: relative; - width: 100%; - overflow: hidden; - } - .chartTopMargin { - margin-bottom: 12px; - } - .chartTopHasMargin { - margin-bottom: 20px; - } - .metaWrap { - float: left; - } - .avatar { - position: relative; - top: 4px; - float: left; - margin-right: 20px; - img { - border-radius: 100%; - } - } - .meta { - height: 22px; - color: @text-color-secondary; - font-size: @font-size-base; - line-height: 22px; - } - .action { - position: absolute; - top: 4px; - right: 0; - line-height: 1; - cursor: pointer; - } - .total { - height: 38px; - margin-top: 4px; - margin-bottom: 0; - overflow: hidden; - color: @heading-color; - font-size: 30px; - line-height: 38px; - white-space: nowrap; - text-overflow: ellipsis; - word-break: break-all; - } - .content { - position: relative; - width: 100%; - margin-bottom: 12px; - } - .contentFixed { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - } - .footer { - margin-top: 8px; - padding-top: 9px; - border-top: 1px solid @border-color-split; - & > * { - position: relative; - } - } - .footerMargin { - margin-top: 20px; - } -} diff --git a/demo/src/pages/dashboard/analysis/components/Charts/ChartCard/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/ChartCard/index.tsx deleted file mode 100644 index e860582d..00000000 --- a/demo/src/pages/dashboard/analysis/components/Charts/ChartCard/index.tsx +++ /dev/null @@ -1,97 +0,0 @@ -import { Card } from 'antd'; -import type { CardProps } from 'antd/es/card'; -import React from 'react'; -import classNames from 'classnames'; -import styles from './index.less'; - -type totalType = () => React.ReactNode; - -const renderTotal = (total?: number | totalType | React.ReactNode) => { - if (!total && total !== 0) { - return null; - } - let totalDom; - switch (typeof total) { - case 'undefined': - totalDom = null; - break; - case 'function': - totalDom =
    {total()}
    ; - break; - default: - totalDom =
    {total}
    ; - } - return totalDom; -}; - -export type ChartCardProps = { - title: React.ReactNode; - action?: React.ReactNode; - total?: React.ReactNode | number | (() => React.ReactNode | number); - footer?: React.ReactNode; - contentHeight?: number; - avatar?: React.ReactNode; - style?: React.CSSProperties; -} & CardProps; - -class ChartCard extends React.Component { - renderContent = () => { - const { contentHeight, title, avatar, action, total, footer, children, loading } = this.props; - if (loading) { - return false; - } - return ( -
    -
    -
    {avatar}
    -
    -
    - {title} - {action} -
    - {renderTotal(total)} -
    -
    - {children && ( -
    -
    {children}
    -
    - )} - {footer && ( -
    - {footer} -
    - )} -
    - ); - }; - - render() { - const { - loading = false, - contentHeight, - title, - avatar, - action, - total, - footer, - children, - ...rest - } = this.props; - return ( - - {this.renderContent()} - - ); - } -} - -export default ChartCard; diff --git a/demo/src/pages/dashboard/analysis/components/Charts/Field/index.less b/demo/src/pages/dashboard/analysis/components/Charts/Field/index.less deleted file mode 100644 index 4fe0d1f6..00000000 --- a/demo/src/pages/dashboard/analysis/components/Charts/Field/index.less +++ /dev/null @@ -1,17 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.field { - margin: 0; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - .label, - .number { - font-size: @font-size-base; - line-height: 22px; - } - .number { - margin-left: 8px; - color: @heading-color; - } -} diff --git a/demo/src/pages/dashboard/analysis/components/Charts/Field/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/Field/index.tsx deleted file mode 100644 index a6fb64a9..00000000 --- a/demo/src/pages/dashboard/analysis/components/Charts/Field/index.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; -import styles from './index.less'; - -export type FieldProps = { - label: React.ReactNode; - value: React.ReactNode; - style?: React.CSSProperties; -}; - -const Field: React.FC = ({ label, value, ...rest }) => ( -
    - {label} - {value} -
    -); - -export default Field; diff --git a/demo/src/pages/dashboard/analysis/components/Charts/Gauge/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/Gauge/index.tsx deleted file mode 100644 index b3e5047a..00000000 --- a/demo/src/pages/dashboard/analysis/components/Charts/Gauge/index.tsx +++ /dev/null @@ -1,179 +0,0 @@ -import { Axis, Chart, Coord, Geom, Guide, Shape } from 'bizcharts'; - -import React from 'react'; -import autoHeight from '../autoHeight'; - -const { Arc, Html, Line } = Guide; - -export type GaugeProps = { - title: React.ReactNode; - color?: string; - height?: number; - bgColor?: number; - percent: number; - forceFit?: boolean; - style?: React.CSSProperties; - formatter: (value: string) => string; -}; - -const defaultFormatter = (val: string): string => { - switch (val) { - case '2': - return '差'; - case '4': - return '中'; - case '6': - return '良'; - case '8': - return '优'; - default: - return ''; - } -}; - -if (Shape.registerShape) { - Shape.registerShape('point', 'pointer', { - drawShape(cfg: any, group: any) { - let point = cfg.points[0]; - point = (this as any).parsePoint(point); - const center = (this as any).parsePoint({ - x: 0, - y: 0, - }); - group.addShape('line', { - attrs: { - x1: center.x, - y1: center.y, - x2: point.x, - y2: point.y, - stroke: cfg.color, - lineWidth: 2, - lineCap: 'round', - }, - }); - return group.addShape('circle', { - attrs: { - x: center.x, - y: center.y, - r: 6, - stroke: cfg.color, - lineWidth: 3, - fill: '#fff', - }, - }); - }, - }); -} - -const Gauge: React.FC = (props) => { - const { - title, - height = 1, - percent, - forceFit = true, - formatter = defaultFormatter, - color = '#2F9CFF', - bgColor = '#F0F2F5', - } = props; - const cols = { - value: { - type: 'linear', - min: 0, - max: 10, - tickCount: 6, - nice: true, - }, - }; - const data = [{ value: percent / 10 }]; - const renderHtml = () => ` -
    -
    ${title}
    -
    - ${(data[0].value * 10).toFixed(2)}% -
    -
    `; - const textStyle: { - fontSize: number; - fill: string; - textAlign: 'center'; - } = { - fontSize: 12, - fill: 'rgba(0, 0, 0, 0.65)', - textAlign: 'center', - }; - - return ( - - - - - - - - - - - - - - - ); -}; - -export default autoHeight()(Gauge); diff --git a/demo/src/pages/dashboard/analysis/components/Charts/MiniArea/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/MiniArea/index.tsx deleted file mode 100644 index 5b20ae85..00000000 --- a/demo/src/pages/dashboard/analysis/components/Charts/MiniArea/index.tsx +++ /dev/null @@ -1,131 +0,0 @@ -import type { AxisProps } from 'bizcharts'; -import { Axis, Chart, Geom, Tooltip } from 'bizcharts'; - -import React from 'react'; -import autoHeight from '../autoHeight'; -import styles from '../index.less'; - -export type MiniAreaProps = { - color?: string; - height?: number; - borderColor?: string; - line?: boolean; - animate?: boolean; - xAxis?: AxisProps; - forceFit?: boolean; - scale?: { - x?: { - tickCount: number; - }; - y?: { - tickCount: number; - }; - }; - yAxis?: Partial; - borderWidth?: number; - data: { - x: number | string; - y: number; - }[]; -}; - -const MiniArea: React.FC = (props) => { - const { - height = 1, - data = [], - forceFit = true, - color = 'rgba(24, 144, 255, 0.2)', - borderColor = '#1089ff', - scale = { x: {}, y: {} }, - borderWidth = 2, - line, - xAxis, - yAxis, - animate = true, - } = props; - - const padding: [number, number, number, number] = [36, 5, 30, 5]; - - const scaleProps = { - x: { - type: 'cat', - range: [0, 1], - ...scale.x, - }, - y: { - min: 0, - ...scale.y, - }, - }; - - const tooltip: [string, (...args: any[]) => { name?: string; value: string }] = [ - 'x*y', - (x: string, y: string) => ({ - name: x, - value: y, - }), - ]; - - const chartHeight = height + 54; - - return ( -
    -
    - {height > 0 && ( - - - - - - {line ? ( - - ) : ( - - )} - - )} -
    -
    - ); -}; - -export default autoHeight()(MiniArea); diff --git a/demo/src/pages/dashboard/analysis/components/Charts/MiniBar/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/MiniBar/index.tsx deleted file mode 100644 index 46be2760..00000000 --- a/demo/src/pages/dashboard/analysis/components/Charts/MiniBar/index.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import { Chart, Geom, Tooltip } from 'bizcharts'; - -import React from 'react'; -import autoHeight from '../autoHeight'; -import styles from '../index.less'; - -export type MiniBarProps = { - color?: string; - height?: number; - data: { - x: number | string; - y: number; - }[]; - forceFit?: boolean; - style?: React.CSSProperties; -}; - -const MiniBar: React.FC = (props) => { - const { height = 0, forceFit = true, color = '#1890FF', data = [] } = props; - - const scale = { - x: { - type: 'cat', - }, - y: { - min: 0, - }, - }; - - const padding: [number, number, number, number] = [36, 5, 30, 5]; - - const tooltip: [string, (...args: any[]) => { name?: string; value: string }] = [ - 'x*y', - (x: string, y: string) => ({ - name: x, - value: y, - }), - ]; - - // for tooltip not to be hide - const chartHeight = height + 54; - - return ( -
    -
    - - - - -
    -
    - ); -}; -export default autoHeight()(MiniBar); diff --git a/demo/src/pages/dashboard/analysis/components/Charts/MiniProgress/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/MiniProgress/index.tsx deleted file mode 100644 index ad0a2d2e..00000000 --- a/demo/src/pages/dashboard/analysis/components/Charts/MiniProgress/index.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import React from 'react'; -import { Tooltip } from 'antd'; -import styles from './index.less'; - -export type MiniProgressProps = { - target: number; - targetLabel?: string; - color?: string; - strokeWidth?: number; - percent?: number; - style?: React.CSSProperties; -}; - -const MiniProgress: React.FC = ({ - targetLabel, - target, - color = 'rgb(19, 194, 194)', - strokeWidth, - percent, -}) => ( -
    - -
    - - -
    -
    -
    -
    -
    -
    -); - -export default MiniProgress; diff --git a/demo/src/pages/dashboard/analysis/components/Charts/Pie/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/Pie/index.tsx deleted file mode 100644 index e996c1e3..00000000 --- a/demo/src/pages/dashboard/analysis/components/Charts/Pie/index.tsx +++ /dev/null @@ -1,309 +0,0 @@ -import { Chart, Coord, Geom, Tooltip } from 'bizcharts'; -import React, { Component } from 'react'; - -import { DataView } from '@antv/data-set'; -import Debounce from 'lodash.debounce'; -import { Divider } from 'antd'; -import ReactFitText from 'react-fittext'; -import classNames from 'classnames'; -import autoHeight from '../autoHeight'; -import styles from './index.less'; - -export type PieProps = { - animate?: boolean; - color?: string; - colors?: string[]; - selected?: boolean; - height?: number; - margin?: [number, number, number, number]; - hasLegend?: boolean; - padding?: [number, number, number, number]; - percent?: number; - data?: { - x: string | string; - y: number; - }[]; - inner?: number; - lineWidth?: number; - forceFit?: boolean; - style?: React.CSSProperties; - className?: string; - total?: React.ReactNode | number | (() => React.ReactNode | number); - title?: React.ReactNode; - tooltip?: boolean; - valueFormat?: (value: string) => string | React.ReactNode; - subTitle?: React.ReactNode; -}; -type PieState = { - legendData: { checked: boolean; x: string; color: string; percent: number; y: string }[]; - legendBlock: boolean; -}; -class Pie extends Component { - state: PieState = { - legendData: [], - legendBlock: false, - }; - - requestRef: number | undefined = undefined; - - root: HTMLDivElement | undefined = undefined; - - chart: G2.Chart | undefined = undefined; - - // for window resize auto responsive legend - resize = Debounce(() => { - const { hasLegend } = this.props; - const { legendBlock } = this.state; - if (!hasLegend || !this.root) { - window.removeEventListener('resize', this.resize); - return; - } - if ( - this.root && - this.root.parentNode && - (this.root.parentNode as HTMLElement).clientWidth <= 380 - ) { - if (!legendBlock) { - this.setState({ - legendBlock: true, - }); - } - } else if (legendBlock) { - this.setState({ - legendBlock: false, - }); - } - }, 400); - - componentDidMount() { - window.addEventListener( - 'resize', - () => { - this.requestRef = requestAnimationFrame(() => this.resize()); - }, - { passive: true }, - ); - } - - componentDidUpdate(preProps: PieProps) { - const { data } = this.props; - if (data !== preProps.data) { - // because of charts data create when rendered - // so there is a trick for get rendered time - this.getLegendData(); - } - } - - componentWillUnmount() { - if (this.requestRef) { - window.cancelAnimationFrame(this.requestRef); - } - window.removeEventListener('resize', this.resize); - if (this.resize) { - (this.resize as any).cancel(); - } - } - - getG2Instance = (chart: G2.Chart) => { - this.chart = chart; - requestAnimationFrame(() => { - this.getLegendData(); - this.resize(); - }); - }; - - // for custom lengend view - getLegendData = () => { - if (!this.chart) return; - const geom = this.chart.getAllGeoms()[0]; // 获取所有的图形 - if (!geom) return; - const items = (geom as any).get('dataArray') || []; // 获取图形对应的 - - const legendData = items.map((item: { color: any; _origin: any }[]) => { - /* eslint no-underscore-dangle:0 */ - const origin = item[0]._origin; - origin.color = item[0].color; - origin.checked = true; - return origin; - }); - - this.setState({ - legendData, - }); - }; - - handleRoot = (n: HTMLDivElement) => { - this.root = n; - }; - - handleLegendClick = (item: any, i: string | number) => { - const newItem = item; - newItem.checked = !newItem.checked; - - const { legendData } = this.state; - legendData[i] = newItem; - - const filteredLegendData = legendData.filter((l) => l.checked).map((l) => l.x); - - if (this.chart) { - this.chart.filter('x', (val) => filteredLegendData.indexOf(`${val}`) > -1); - } - - this.setState({ - legendData, - }); - }; - - render() { - const { - valueFormat, - subTitle, - total, - hasLegend = false, - className, - style, - height = 0, - forceFit = true, - percent, - color, - inner = 0.75, - animate = true, - colors, - lineWidth = 1, - } = this.props; - - const { legendData, legendBlock } = this.state; - const pieClassName = classNames(styles.pie, className, { - [styles.hasLegend]: !!hasLegend, - [styles.legendBlock]: legendBlock, - }); - - const { - data: propsData, - selected: propsSelected = true, - tooltip: propsTooltip = true, - } = this.props; - - let data = propsData || []; - let selected = propsSelected; - let tooltip = propsTooltip; - - const defaultColors = colors; - data = data || []; - selected = selected || true; - tooltip = tooltip || true; - let formatColor; - - const scale = { - x: { - type: 'cat', - range: [0, 1], - }, - y: { - min: 0, - }, - }; - - if (percent || percent === 0) { - selected = false; - tooltip = false; - formatColor = (value: string) => { - if (value === '占比') { - return color || 'rgba(24, 144, 255, 0.85)'; - } - return '#F0F2F5'; - }; - - data = [ - { - x: '占比', - y: parseFloat(`${percent}`), - }, - { - x: '反比', - y: 100 - parseFloat(`${percent}`), - }, - ]; - } - - const tooltipFormat: [string, (...args: any[]) => { name?: string; value: string }] = [ - 'x*percent', - (x: string, p: number) => ({ - name: x, - value: `${(p * 100).toFixed(2)}%`, - }), - ]; - - const padding = [12, 0, 12, 0] as [number, number, number, number]; - - const dv = new DataView(); - dv.source(data).transform({ - type: 'percent', - field: 'y', - dimension: 'x', - as: 'percent', - }); - - return ( -
    - -
    - - {!!tooltip && } - - - - - {(subTitle || total) && ( -
    - {subTitle &&

    {subTitle}

    } - {/* eslint-disable-next-line */} - {total && ( -
    {typeof total === 'function' ? total() : total}
    - )} -
    - )} -
    -
    - - {hasLegend && ( -
      - {legendData.map((item, i) => ( -
    • this.handleLegendClick(item, i)}> - - {item.x} - - - {`${(Number.isNaN(item.percent) ? 0 : item.percent * 100).toFixed(2)}%`} - - {valueFormat ? valueFormat(item.y) : item.y} -
    • - ))} -
    - )} -
    - ); - } -} - -export default autoHeight()(Pie); diff --git a/demo/src/pages/dashboard/analysis/components/Charts/TagCloud/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/TagCloud/index.tsx deleted file mode 100644 index 56e8df47..00000000 --- a/demo/src/pages/dashboard/analysis/components/Charts/TagCloud/index.tsx +++ /dev/null @@ -1,212 +0,0 @@ -import { Chart, Coord, Geom, Shape, Tooltip } from 'bizcharts'; -import React, { Component } from 'react'; - -import DataSet from '@antv/data-set'; -import Debounce from 'lodash.debounce'; -import classNames from 'classnames'; -import autoHeight from '../autoHeight'; -import styles from './index.less'; - -/* eslint no-underscore-dangle: 0 */ -/* eslint no-param-reassign: 0 */ - -const imgUrl = 'https://gw.alipayobjects.com/zos/rmsportal/gWyeGLCdFFRavBGIDzWk.png'; - -export type TagCloudProps = { - data: { - name: string; - value: number; - }[]; - height?: number; - className?: string; - style?: React.CSSProperties; -}; - -type TagCloudState = { - dv: any; - height?: number; - width: number; -}; - -class TagCloud extends Component { - state = { - dv: null, - height: 0, - width: 0, - }; - - isUnmount: boolean = false; - - requestRef: number = 0; - - root: HTMLDivElement | undefined = undefined; - - imageMask: HTMLImageElement | undefined = undefined; - - componentDidMount() { - requestAnimationFrame(() => { - this.initTagCloud(); - this.renderChart(this.props); - }); - window.addEventListener('resize', this.resize, { passive: true }); - } - - componentDidUpdate(preProps?: TagCloudProps) { - const { data } = this.props; - if (preProps && JSON.stringify(preProps.data) !== JSON.stringify(data)) { - this.renderChart(this.props); - } - } - - componentWillUnmount() { - this.isUnmount = true; - window.cancelAnimationFrame(this.requestRef); - window.removeEventListener('resize', this.resize); - } - - resize = () => { - this.requestRef = requestAnimationFrame(() => { - this.renderChart(this.props); - }); - }; - - saveRootRef = (node: HTMLDivElement) => { - this.root = node; - }; - - initTagCloud = () => { - function getTextAttrs(cfg: { - x?: any; - y?: any; - style?: any; - opacity?: any; - origin?: any; - color?: any; - }) { - return { - ...cfg.style, - fillOpacity: cfg.opacity, - fontSize: cfg.origin._origin.size, - rotate: cfg.origin._origin.rotate, - text: cfg.origin._origin.text, - textAlign: 'center', - fontFamily: cfg.origin._origin.font, - fill: cfg.color, - textBaseline: 'Alphabetic', - }; - } - - (Shape as any).registerShape('point', 'cloud', { - drawShape( - cfg: { x: any; y: any }, - container: { addShape: (arg0: string, arg1: { attrs: any }) => void }, - ) { - const attrs = getTextAttrs(cfg); - return container.addShape('text', { - attrs: { - ...attrs, - x: cfg.x, - y: cfg.y, - }, - }); - }, - }); - }; - - renderChart = Debounce((nextProps: TagCloudProps) => { - // const colors = ['#1890FF', '#41D9C7', '#2FC25B', '#FACC14', '#9AE65C']; - const { data, height } = nextProps || this.props; - - if (data.length < 1 || !this.root) { - return; - } - - const h = height; - const w = this.root.offsetWidth; - - const onload = () => { - const dv = new DataSet.View().source(data); - const range = dv.range('value'); - const [min, max] = range; - dv.transform({ - type: 'tag-cloud', - fields: ['name', 'value'], - imageMask: this.imageMask, - font: 'Verdana', - size: [w, h], // 宽高设置最好根据 imageMask 做调整 - padding: 0, - timeInterval: 5000, // max execute time - rotate() { - return 0; - }, - fontSize(d: { value: number }) { - const size = ((d.value - min) / (max - min)) ** 2; - return size * (17.5 - 5) + 5; - }, - }); - - if (this.isUnmount) { - return; - } - - this.setState({ - dv, - width: w, - height: h, - }); - }; - - if (!this.imageMask) { - this.imageMask = new Image(); - this.imageMask.crossOrigin = ''; - this.imageMask.src = imgUrl; - - this.imageMask.onload = onload; - } else { - onload(); - } - }, 500); - - render() { - const { className, height } = this.props; - const { dv, width, height: stateHeight } = this.state; - - return ( -
    - {dv && ( - - - - - - )} -
    - ); - } -} - -export default autoHeight()(TagCloud); diff --git a/demo/src/pages/dashboard/analysis/components/Charts/TimelineChart/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/TimelineChart/index.tsx deleted file mode 100644 index fa17bfa7..00000000 --- a/demo/src/pages/dashboard/analysis/components/Charts/TimelineChart/index.tsx +++ /dev/null @@ -1,132 +0,0 @@ -import { Axis, Chart, Geom, Legend, Tooltip } from 'bizcharts'; - -import DataSet from '@antv/data-set'; -import React from 'react'; -import Slider from 'bizcharts-plugin-slider'; -import autoHeight from '../autoHeight'; -import styles from './index.less'; - -export type TimelineChartProps = { - data: { - x: number; - y1: number; - y2: number; - }[]; - title?: string; - titleMap: { y1: string; y2: string }; - padding?: [number, number, number, number]; - height?: number; - style?: React.CSSProperties; - borderWidth?: number; -}; - -const TimelineChart: React.FC = (props) => { - const { - title, - height = 400, - padding = [60, 20, 40, 40] as [number, number, number, number], - titleMap = { - y1: 'y1', - y2: 'y2', - }, - borderWidth = 2, - data: sourceData, - } = props; - - const data = Array.isArray(sourceData) ? sourceData : [{ x: 0, y1: 0, y2: 0 }]; - - data.sort((a, b) => a.x - b.x); - - let max; - if (data[0] && data[0].y1 && data[0].y2) { - max = Math.max( - [...data].sort((a, b) => b.y1 - a.y1)[0].y1, - [...data].sort((a, b) => b.y2 - a.y2)[0].y2, - ); - } - - const ds = new DataSet({ - state: { - start: data[0].x, - end: data[data.length - 1].x, - }, - }); - - const dv = ds.createView(); - dv.source(data) - .transform({ - type: 'filter', - callback: (obj: { x: string }) => { - const date = obj.x; - return date <= ds.state.end && date >= ds.state.start; - }, - }) - .transform({ - type: 'map', - callback(row: { y1: string; y2: string }) { - const newRow = { ...row }; - newRow[titleMap.y1] = row.y1; - newRow[titleMap.y2] = row.y2; - return newRow; - }, - }) - .transform({ - type: 'fold', - fields: [titleMap.y1, titleMap.y2], // 展开字段集 - key: 'key', // key字段 - value: 'value', // value字段 - }); - - const timeScale = { - type: 'time', - tickInterval: 60 * 60 * 1000, - mask: 'HH:mm', - range: [0, 1], - }; - - const cols = { - x: timeScale, - value: { - max, - min: 0, - }, - }; - - const SliderGen = () => ( - { - ds.setState('start', startValue); - ds.setState('end', endValue); - }} - /> - ); - - return ( -
    -
    - {title &&

    {title}

    } - - - - - - -
    - -
    -
    -
    - ); -}; - -export default autoHeight()(TimelineChart); diff --git a/demo/src/pages/dashboard/analysis/components/Charts/WaterWave/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/WaterWave/index.tsx deleted file mode 100644 index a9b64110..00000000 --- a/demo/src/pages/dashboard/analysis/components/Charts/WaterWave/index.tsx +++ /dev/null @@ -1,235 +0,0 @@ -import React, { Component } from 'react'; - -import autoHeight from '../autoHeight'; -import styles from './index.less'; - -/* eslint no-return-assign: 0 */ -/* eslint no-mixed-operators: 0 */ -// riddle: https://riddle.alibaba-inc.com/riddles/2d9a4b90 - -export type WaterWaveProps = { - title: React.ReactNode; - color?: string; - height?: number; - percent: number; - style?: React.CSSProperties; -}; - -class WaterWave extends Component { - state = { - radio: 1, - }; - - timer: number = 0; - - root: HTMLDivElement | undefined | null = null; - - node: HTMLCanvasElement | undefined | null = null; - - componentDidMount() { - this.renderChart(); - this.resize(); - window.addEventListener( - 'resize', - () => { - requestAnimationFrame(() => this.resize()); - }, - { passive: true }, - ); - } - - componentDidUpdate(props: WaterWaveProps) { - const { percent } = this.props; - if (props.percent !== percent) { - // 不加这个会造成绘制缓慢 - this.renderChart('update'); - } - } - - componentWillUnmount() { - cancelAnimationFrame(this.timer); - if (this.node) { - this.node.innerHTML = ''; - } - window.removeEventListener('resize', this.resize); - } - - resize = () => { - if (this.root) { - const { height = 1 } = this.props; - const { offsetWidth } = this.root.parentNode as HTMLElement; - this.setState({ - radio: offsetWidth < height ? offsetWidth / height : 1, - }); - } - }; - - renderChart(type?: string) { - const { percent, color = '#1890FF' } = this.props; - const data = percent / 100; - cancelAnimationFrame(this.timer); - - if (!this.node || (data !== 0 && !data)) { - return; - } - - const canvas = this.node; - const ctx = canvas.getContext('2d'); - if (!ctx) { - return; - } - const canvasWidth = canvas.width; - const canvasHeight = canvas.height; - const radius = canvasWidth / 2; - const lineWidth = 2; - const cR = radius - lineWidth; - - ctx.beginPath(); - ctx.lineWidth = lineWidth * 2; - - const axisLength = canvasWidth - lineWidth; - const unit = axisLength / 8; - const range = 0.2; // 振幅 - let currRange = range; - const xOffset = lineWidth; - let sp = 0; // 周期偏移量 - let currData = 0; - const waveupsp = 0.005; // 水波上涨速度 - - let arcStack: number[][] = []; - const bR = radius - lineWidth; - const circleOffset = -(Math.PI / 2); - let circleLock = true; - - for (let i = circleOffset; i < circleOffset + 2 * Math.PI; i += 1 / (8 * Math.PI)) { - arcStack.push([radius + bR * Math.cos(i), radius + bR * Math.sin(i)]); - } - - const cStartPoint = arcStack.shift() as number[]; - ctx.strokeStyle = color; - ctx.moveTo(cStartPoint[0], cStartPoint[1]); - - const drawSin = () => { - if (!ctx) { - return; - } - ctx.beginPath(); - ctx.save(); - - const sinStack = []; - for (let i = xOffset; i <= xOffset + axisLength; i += 20 / axisLength) { - const x = sp + (xOffset + i) / unit; - const y = Math.sin(x) * currRange; - const dx = i; - const dy = 2 * cR * (1 - currData) + (radius - cR) - unit * y; - - ctx.lineTo(dx, dy); - sinStack.push([dx, dy]); - } - - const startPoint = sinStack.shift() as number[]; - - ctx.lineTo(xOffset + axisLength, canvasHeight); - ctx.lineTo(xOffset, canvasHeight); - ctx.lineTo(startPoint[0], startPoint[1]); - - const gradient = ctx.createLinearGradient(0, 0, 0, canvasHeight); - gradient.addColorStop(0, '#ffffff'); - gradient.addColorStop(1, color); - ctx.fillStyle = gradient; - ctx.fill(); - ctx.restore(); - }; - - const render = () => { - if (!ctx) { - return; - } - ctx.clearRect(0, 0, canvasWidth, canvasHeight); - if (circleLock && type !== 'update') { - if (arcStack.length) { - const temp = arcStack.shift() as number[]; - ctx.lineTo(temp[0], temp[1]); - ctx.stroke(); - } else { - circleLock = false; - ctx.lineTo(cStartPoint[0], cStartPoint[1]); - ctx.stroke(); - arcStack = []; - - ctx.globalCompositeOperation = 'destination-over'; - ctx.beginPath(); - ctx.lineWidth = lineWidth; - ctx.arc(radius, radius, bR, 0, 2 * Math.PI, true); - - ctx.beginPath(); - ctx.save(); - ctx.arc(radius, radius, radius - 3 * lineWidth, 0, 2 * Math.PI, true); - - ctx.restore(); - ctx.clip(); - ctx.fillStyle = color; - } - } else { - if (data >= 0.85) { - if (currRange > range / 4) { - const t = range * 0.01; - currRange -= t; - } - } else if (data <= 0.1) { - if (currRange < range * 1.5) { - const t = range * 0.01; - currRange += t; - } - } else { - if (currRange <= range) { - const t = range * 0.01; - currRange += t; - } - if (currRange >= range) { - const t = range * 0.01; - currRange -= t; - } - } - if (data - currData > 0) { - currData += waveupsp; - } - if (data - currData < 0) { - currData -= waveupsp; - } - - sp += 0.07; - drawSin(); - } - this.timer = requestAnimationFrame(render); - }; - render(); - } - - render() { - const { radio } = this.state; - const { percent, title, height = 1 } = this.props; - return ( -
    (this.root = n)} - style={{ transform: `scale(${radio})` }} - > -
    - (this.node = n)} - width={height * 2} - height={height * 2} - /> -
    -
    - {title && {title}} -

    {percent}%

    -
    -
    - ); - } -} - -export default autoHeight()(WaterWave); diff --git a/demo/src/pages/dashboard/analysis/components/Charts/autoHeight.tsx b/demo/src/pages/dashboard/analysis/components/Charts/autoHeight.tsx deleted file mode 100644 index 5ec7bf39..00000000 --- a/demo/src/pages/dashboard/analysis/components/Charts/autoHeight.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import React from 'react'; - -export type IReactComponent

    = - | React.StatelessComponent

    - | React.ComponentClass

    - | React.ClassicComponentClass

    ; - -function computeHeight(node: HTMLDivElement) { - const { style } = node; - style.height = '100%'; - const totalHeight = parseInt(`${getComputedStyle(node).height}`, 10); - const padding = - parseInt(`${getComputedStyle(node).paddingTop}`, 10) + - parseInt(`${getComputedStyle(node).paddingBottom}`, 10); - return totalHeight - padding; -} - -function getAutoHeight(n: HTMLDivElement | undefined) { - if (!n) { - return 0; - } - - const node = n; - - let height = computeHeight(node); - const parentNode = node.parentNode as HTMLDivElement; - if (parentNode) { - height = computeHeight(parentNode); - } - - return height; -} - -type AutoHeightProps = { - height?: number; -}; - -function autoHeight() { - return

    ( - WrappedComponent: React.ComponentClass

    | React.FC

    , - ): React.ComponentClass

    => { - class AutoHeightComponent extends React.Component

    { - state = { - computedHeight: 0, - }; - - root: HTMLDivElement | undefined = undefined; - - componentDidMount() { - const { height } = this.props; - if (!height) { - let h = getAutoHeight(this.root); - this.setState({ computedHeight: h }); - if (h < 1) { - h = getAutoHeight(this.root); - this.setState({ computedHeight: h }); - } - } - } - - handleRoot = (node: HTMLDivElement) => { - this.root = node; - }; - - render() { - const { height } = this.props; - const { computedHeight } = this.state; - const h = height || computedHeight; - return ( -

    - {h > 0 && } -
    - ); - } - } - return AutoHeightComponent; - }; -} -export default autoHeight; diff --git a/demo/src/pages/dashboard/analysis/components/Charts/index.less b/demo/src/pages/dashboard/analysis/components/Charts/index.less deleted file mode 100644 index 190428bc..00000000 --- a/demo/src/pages/dashboard/analysis/components/Charts/index.less +++ /dev/null @@ -1,19 +0,0 @@ -.miniChart { - position: relative; - width: 100%; - .chartContent { - position: absolute; - bottom: -28px; - width: 100%; - > div { - margin: 0 -5px; - overflow: hidden; - } - } - .chartLoading { - position: absolute; - top: 16px; - left: 50%; - margin-left: -7px; - } -} diff --git a/demo/src/pages/dashboard/analysis/components/Charts/index.tsx b/demo/src/pages/dashboard/analysis/components/Charts/index.tsx deleted file mode 100644 index 7ad687f0..00000000 --- a/demo/src/pages/dashboard/analysis/components/Charts/index.tsx +++ /dev/null @@ -1,13 +0,0 @@ -import numeral from 'numeral'; -import ChartCard from './ChartCard'; -import Field from './Field'; - -const yuan = (val: number | string) => `¥ ${numeral(val).format('0,0')}`; - -const Charts = { - yuan, - ChartCard, - Field, -}; - -export { Charts as default, yuan, ChartCard, Field }; diff --git a/demo/src/pages/dashboard/analysis/components/IntroduceRow.tsx b/demo/src/pages/dashboard/analysis/components/IntroduceRow.tsx deleted file mode 100644 index cf0f3fd0..00000000 --- a/demo/src/pages/dashboard/analysis/components/IntroduceRow.tsx +++ /dev/null @@ -1,135 +0,0 @@ -import { InfoCircleOutlined } from '@ant-design/icons'; -import { TinyArea, TinyColumn, Progress } from '@ant-design/charts'; -import { Col, Row, Tooltip } from 'antd'; - -import numeral from 'numeral'; -import { ChartCard, Field } from './Charts'; -import type { DataItem } from '../data.d'; -import Trend from './Trend'; -import Yuan from '../utils/Yuan'; -import styles from '../style.less'; - -const topColResponsiveProps = { - xs: 24, - sm: 12, - md: 12, - lg: 12, - xl: 6, - style: { marginBottom: 24 }, -}; - -const IntroduceRow = ({ loading, visitData }: { loading: boolean; visitData: DataItem[] }) => ( - -
    - - - - } - loading={loading} - total={() => 126560} - footer={} - contentHeight={46} - > - - 周同比 - 12% - - - 日同比 - 11% - - - - - - - - - } - total={numeral(8846).format('0,0')} - footer={} - contentHeight={46} - > - - - - - - - - } - total={numeral(6560).format('0,0')} - footer={} - contentHeight={46} - > - - - - - - - - } - total="78%" - footer={ -
    - - 周同比 - 12% - - - 日同比 - 11% - -
    - } - contentHeight={46} - > - -
    - - -); - -export default IntroduceRow; diff --git a/demo/src/pages/dashboard/analysis/components/NumberInfo/index.less b/demo/src/pages/dashboard/analysis/components/NumberInfo/index.less deleted file mode 100644 index 847d25ee..00000000 --- a/demo/src/pages/dashboard/analysis/components/NumberInfo/index.less +++ /dev/null @@ -1,68 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.numberInfo { - .suffix { - margin-left: 4px; - color: @text-color; - font-size: 16px; - font-style: normal; - } - .numberInfoTitle { - margin-bottom: 16px; - color: @text-color; - font-size: @font-size-lg; - transition: all 0.3s; - } - .numberInfoSubTitle { - height: 22px; - overflow: hidden; - color: @text-color-secondary; - font-size: @font-size-base; - line-height: 22px; - white-space: nowrap; - text-overflow: ellipsis; - word-break: break-all; - } - .numberInfoValue { - margin-top: 4px; - overflow: hidden; - font-size: 0; - white-space: nowrap; - text-overflow: ellipsis; - word-break: break-all; - & > span { - display: inline-block; - height: 32px; - margin-right: 32px; - color: @heading-color; - font-size: 24px; - line-height: 32px; - } - .subTotal { - margin-right: 0; - color: @text-color-secondary; - font-size: @font-size-lg; - vertical-align: top; - .anticon { - margin-left: 4px; - font-size: 12px; - transform: scale(0.82); - } - :global { - .anticon-caret-up { - color: @red-6; - } - .anticon-caret-down { - color: @green-6; - } - } - } - } -} -.numberInfolight { - .numberInfoValue { - & > span { - color: @text-color; - } - } -} diff --git a/demo/src/pages/dashboard/analysis/components/NumberInfo/index.tsx b/demo/src/pages/dashboard/analysis/components/NumberInfo/index.tsx deleted file mode 100644 index 60b4e946..00000000 --- a/demo/src/pages/dashboard/analysis/components/NumberInfo/index.tsx +++ /dev/null @@ -1,62 +0,0 @@ -import { CaretUpOutlined, CaretDownOutlined } from '@ant-design/icons'; -import React from 'react'; -import classNames from 'classnames'; -import styles from './index.less'; - -export type NumberInfoProps = { - title?: React.ReactNode | string; - subTitle?: React.ReactNode | string; - total?: React.ReactNode | string; - status?: 'up' | 'down'; - theme?: string; - gap?: number; - subTotal?: number; - suffix?: string; - style?: React.CSSProperties; -}; -const NumberInfo: React.FC = ({ - theme, - title, - subTitle, - total, - subTotal, - status, - suffix, - gap, - ...rest -}) => ( -
    - {title && ( -
    - {title} -
    - )} - {subTitle && ( -
    - {subTitle} -
    - )} -
    - - {total} - {suffix && {suffix}} - - {(status || subTotal) && ( - - {subTotal} - {status && status === 'up' ? : } - - )} -
    -
    -); - -export default NumberInfo; diff --git a/demo/src/pages/dashboard/analysis/components/OfflineData.tsx b/demo/src/pages/dashboard/analysis/components/OfflineData.tsx deleted file mode 100644 index eca987bd..00000000 --- a/demo/src/pages/dashboard/analysis/components/OfflineData.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import { Card, Col, Row, Tabs } from 'antd'; -import { RingProgress, Line } from '@ant-design/charts'; -import type { OfflineDataType, DataItem } from '../data.d'; - -import NumberInfo from './NumberInfo'; -import styles from '../style.less'; - -const CustomTab = ({ - data, - currentTabKey: currentKey, -}: { - data: OfflineDataType; - currentTabKey: string; -}) => ( - -
    - - - - - - -); - -const { TabPane } = Tabs; - -const OfflineData = ({ - activeKey, - loading, - offlineData, - offlineChartData, - handleTabChange, -}: { - activeKey: string; - loading: boolean; - offlineData: OfflineDataType[]; - offlineChartData: DataItem[]; - handleTabChange: (activeKey: string) => void; -}) => ( - - - {offlineData.map((shop) => ( - } key={shop.name}> -
    - -
    -
    - ))} -
    -
    -); - -export default OfflineData; diff --git a/demo/src/pages/dashboard/analysis/components/PageLoading/index.tsx b/demo/src/pages/dashboard/analysis/components/PageLoading/index.tsx deleted file mode 100644 index dd96277b..00000000 --- a/demo/src/pages/dashboard/analysis/components/PageLoading/index.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { Spin } from 'antd'; - -// loading components from code split -// https://umijs.org/plugin/umi-plugin-react.html#dynamicimport -export default () => ( -
    - -
    -); diff --git a/demo/src/pages/dashboard/analysis/components/ProportionSales.tsx b/demo/src/pages/dashboard/analysis/components/ProportionSales.tsx deleted file mode 100644 index f96d0ea1..00000000 --- a/demo/src/pages/dashboard/analysis/components/ProportionSales.tsx +++ /dev/null @@ -1,76 +0,0 @@ -import { Card, Radio, Typography } from 'antd'; -import numeral from 'numeral'; -import type { RadioChangeEvent } from 'antd/es/radio'; -import { Donut } from '@ant-design/charts'; -import type { DonutConfig } from '@ant-design/charts/es/donut'; -import React from 'react'; -import type { DataItem } from '../data.d'; -import styles from '../style.less'; - -const { Text } = Typography; - -const ProportionSales = ({ - dropdownGroup, - salesType, - loading, - salesPieData, - handleChangeSalesType, -}: { - loading: boolean; - dropdownGroup: React.ReactNode; - salesType: 'all' | 'online' | 'stores'; - salesPieData: DataItem[]; - handleChangeSalesType?: (e: RadioChangeEvent) => void; -}) => ( - - {dropdownGroup} -
    - - 全部渠道 - 线上 - 门店 - -
    - - } - > -
    - 销售额 - { - // eslint-disable-next-line no-underscore-dangle - return `${item._origin.x}: ${numeral(item._origin.y).format('0,0')}`; - }, - }} - statistic={ - { - totalLabel: '销售额', - } as DonutConfig['statistic'] - } - /> -
    -
    -); - -export default ProportionSales; diff --git a/demo/src/pages/dashboard/analysis/components/SalesCard.tsx b/demo/src/pages/dashboard/analysis/components/SalesCard.tsx deleted file mode 100644 index 152d9cef..00000000 --- a/demo/src/pages/dashboard/analysis/components/SalesCard.tsx +++ /dev/null @@ -1,189 +0,0 @@ -import { Card, Col, DatePicker, Row, Tabs } from 'antd'; -import type { RangePickerProps } from 'antd/es/date-picker/generatePicker'; -import type moment from 'moment'; -import { Column } from '@ant-design/charts'; - -import numeral from 'numeral'; -import type { DataItem } from '../data.d'; -import styles from '../style.less'; - -type RangePickerValue = RangePickerProps['value']; -export type TimeType = 'today' | 'week' | 'month' | 'year'; - -const { RangePicker } = DatePicker; -const { TabPane } = Tabs; - -const rankingListData: { title: string; total: number }[] = []; -for (let i = 0; i < 7; i += 1) { - rankingListData.push({ - title: `工专路 ${i} 号店`, - total: 323234, - }); -} - -const SalesCard = ({ - rangePickerValue, - salesData, - isActive, - handleRangePickerChange, - loading, - selectDate, -}: { - rangePickerValue: RangePickerValue; - isActive: (key: TimeType) => string; - salesData: DataItem[]; - loading: boolean; - handleRangePickerChange: (dates: RangePickerValue, dateStrings: [string, string]) => void; - selectDate: (key: TimeType) => void; -}) => ( - - - } - size="large" - tabBarStyle={{ marginBottom: 24 }} - > - - -
    -
    - -
    - - -
    -

    门店销售额排名

    -
      - {rankingListData.map((item, i) => ( -
    • - - {i + 1} - - - {item.title} - - - {numeral(item.total).format('0,0')} - -
    • - ))} -
    -
    - - - - - - -
    - -
    - - -
    -

    门店访问量排名

    -
      - {rankingListData.map((item, i) => ( -
    • - - {i + 1} - - - {item.title} - - {numeral(item.total).format('0,0')} -
    • - ))} -
    -
    - - - - - - -); - -export default SalesCard; diff --git a/demo/src/pages/dashboard/analysis/components/TopSearch.tsx b/demo/src/pages/dashboard/analysis/components/TopSearch.tsx deleted file mode 100644 index 48bfe03a..00000000 --- a/demo/src/pages/dashboard/analysis/components/TopSearch.tsx +++ /dev/null @@ -1,113 +0,0 @@ -import { InfoCircleOutlined } from '@ant-design/icons'; -import { Card, Col, Row, Table, Tooltip } from 'antd'; -import { TinyArea } from '@ant-design/charts'; -import React from 'react'; -import numeral from 'numeral'; -import type { DataItem } from '../data.d'; - -import NumberInfo from './NumberInfo'; -import Trend from './Trend'; -import styles from '../style.less'; - -const columns = [ - { - title: '排名', - dataIndex: 'index', - key: 'index', - }, - { - title: '搜索关键词', - dataIndex: 'keyword', - key: 'keyword', - render: (text: React.ReactNode) => {text}, - }, - { - title: '用户数', - dataIndex: 'count', - key: 'count', - sorter: (a: { count: number }, b: { count: number }) => a.count - b.count, - className: styles.alignRight, - }, - { - title: '周涨幅', - dataIndex: 'range', - key: 'range', - sorter: (a: { range: number }, b: { range: number }) => a.range - b.range, - render: (text: React.ReactNode, record: { status: number }) => ( - - {text}% - - ), - }, -]; - -const TopSearch = ({ - loading, - visitData2, - searchData, - dropdownGroup, -}: { - loading: boolean; - visitData2: DataItem[]; - dropdownGroup: React.ReactNode; - searchData: DataItem[]; -}) => ( - - - - - 搜索用户数 - - - - - } - gap={8} - total={numeral(12321).format('0,0')} - status="up" - subTotal={17.1} - /> - - - - - 人均搜索次数 - - - - - } - total={2.7} - status="down" - subTotal={26.2} - gap={8} - /> - - - - - rowKey={(record) => record.index} - size="small" - columns={columns} - dataSource={searchData} - pagination={{ - style: { marginBottom: 0 }, - pageSize: 5, - }} - /> - -); - -export default TopSearch; diff --git a/demo/src/pages/dashboard/analysis/components/Trend/index.less b/demo/src/pages/dashboard/analysis/components/Trend/index.less deleted file mode 100644 index 3d7fdf99..00000000 --- a/demo/src/pages/dashboard/analysis/components/Trend/index.less +++ /dev/null @@ -1,37 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.trendItem { - display: inline-block; - font-size: @font-size-base; - line-height: 22px; - - .up, - .down { - position: relative; - top: 1px; - margin-left: 4px; - span { - font-size: 12px; - transform: scale(0.83); - } - } - .up { - color: @red-6; - } - .down { - top: -1px; - color: @green-6; - } - - &.trendItemGrey .up, - &.trendItemGrey .down { - color: @text-color; - } - - &.reverseColor .up { - color: @green-6; - } - &.reverseColor .down { - color: @red-6; - } -} diff --git a/demo/src/pages/dashboard/analysis/components/Trend/index.tsx b/demo/src/pages/dashboard/analysis/components/Trend/index.tsx deleted file mode 100644 index 58f7196a..00000000 --- a/demo/src/pages/dashboard/analysis/components/Trend/index.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { CaretUpOutlined, CaretDownOutlined } from '@ant-design/icons'; -import React from 'react'; -import classNames from 'classnames'; -import styles from './index.less'; - -export type TrendProps = { - colorful?: boolean; - flag: 'up' | 'down'; - style?: React.CSSProperties; - reverseColor?: boolean; - className?: string; -}; - -const Trend: React.FC = ({ - colorful = true, - reverseColor = false, - flag, - children, - className, - ...rest -}) => { - const classString = classNames( - styles.trendItem, - { - [styles.trendItemGrey]: !colorful, - [styles.reverseColor]: reverseColor && colorful, - }, - className, - ); - return ( -
    - {children} - {flag && ( - - {flag === 'up' ? : } - - )} -
    - ); -}; - -export default Trend; diff --git a/demo/src/pages/dashboard/analysis/data.d.ts b/demo/src/pages/dashboard/analysis/data.d.ts deleted file mode 100644 index 7604d10d..00000000 --- a/demo/src/pages/dashboard/analysis/data.d.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { DataItem } from '@antv/g2plot/esm/interface/config'; - -export { DataItem }; - -export interface VisitDataType { - x: string; - y: number; -} - -export type SearchDataType = { - index: number; - keyword: string; - count: number; - range: number; - status: number; -}; - -export type OfflineDataType = { - name: string; - cvr: number; -}; - -export interface OfflineChartData { - date: number; - type: number; - value: number; -} - -export type RadarData = { - name: string; - label: string; - value: number; -}; - -export interface AnalysisData { - visitData: DataItem[]; - visitData2: DataItem[]; - salesData: DataItem[]; - searchData: DataItem[]; - offlineData: OfflineDataType[]; - offlineChartData: DataItem[]; - salesTypeData: DataItem[]; - salesTypeDataOnline: DataItem[]; - salesTypeDataOffline: DataItem[]; - radarData: RadarData[]; -} diff --git a/demo/src/pages/dashboard/analysis/index.tsx b/demo/src/pages/dashboard/analysis/index.tsx deleted file mode 100644 index 331d7e6a..00000000 --- a/demo/src/pages/dashboard/analysis/index.tsx +++ /dev/null @@ -1,162 +0,0 @@ -import type { FC } from 'react'; -import { Suspense, useState } from 'react'; -import { EllipsisOutlined } from '@ant-design/icons'; -import { Col, Dropdown, Menu, Row } from 'antd'; -import { GridContent } from '@ant-design/pro-layout'; -import type { RadioChangeEvent } from 'antd/es/radio'; -import type { RangePickerProps } from 'antd/es/date-picker/generatePicker'; -import type moment from 'moment'; -import IntroduceRow from './components/IntroduceRow'; -import SalesCard from './components/SalesCard'; -import TopSearch from './components/TopSearch'; -import ProportionSales from './components/ProportionSales'; -import OfflineData from './components/OfflineData'; -import { useRequest } from 'umi'; - -import { fakeChartData } from './service'; -import PageLoading from './components/PageLoading'; -import type { TimeType } from './components/SalesCard'; -import { getTimeDistance } from './utils/utils'; -import type { AnalysisData } from './data.d'; -import styles from './style.less'; - -type RangePickerValue = RangePickerProps['value']; - -type AnalysisProps = { - dashboardAndanalysis: AnalysisData; - loading: boolean; -}; - -type SalesType = 'all' | 'online' | 'stores'; - -const Analysis: FC = () => { - const [salesType, setSalesType] = useState('all'); - const [currentTabKey, setCurrentTabKey] = useState(''); - const [rangePickerValue, setRangePickerValue] = useState( - getTimeDistance('year'), - ); - - const { loading, data } = useRequest(fakeChartData); - - const selectDate = (type: TimeType) => { - setRangePickerValue(getTimeDistance(type)); - }; - - const handleRangePickerChange = (value: RangePickerValue) => { - setRangePickerValue(value); - }; - - const isActive = (type: TimeType) => { - if (!rangePickerValue) { - return ''; - } - const value = getTimeDistance(type); - if (!value) { - return ''; - } - if (!rangePickerValue[0] || !rangePickerValue[1]) { - return ''; - } - if ( - rangePickerValue[0].isSame(value[0] as moment.Moment, 'day') && - rangePickerValue[1].isSame(value[1] as moment.Moment, 'day') - ) { - return styles.currentDate; - } - return ''; - }; - - let salesPieData; - if (salesType === 'all') { - salesPieData = data?.salesTypeData; - } else { - salesPieData = salesType === 'online' ? data?.salesTypeDataOnline : data?.salesTypeDataOffline; - } - - const menu = ( - - 操作一 - 操作二 - - ); - - const dropdownGroup = ( - - - - - - ); - - const handleChangeSalesType = (e: RadioChangeEvent) => { - setSalesType(e.target.value); - }; - - const handleTabChange = (key: string) => { - setCurrentTabKey(key); - }; - - const activeKey = currentTabKey || (data?.offlineData[0] && data?.offlineData[0].name) || ''; - - return ( - - <> - }> - - - - - - - - -
    - - - - - - - - - - - - - - - - - ); -}; - -export default Analysis; diff --git a/demo/src/pages/dashboard/analysis/service.ts b/demo/src/pages/dashboard/analysis/service.ts deleted file mode 100644 index c8a6b08a..00000000 --- a/demo/src/pages/dashboard/analysis/service.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { request } from 'umi'; -import type { AnalysisData } from './data'; - -export async function fakeChartData(): Promise<{ data: AnalysisData }> { - return request('/api/fake_analysis_chart_data'); -} diff --git a/demo/src/pages/dashboard/analysis/style.less b/demo/src/pages/dashboard/analysis/style.less deleted file mode 100644 index 38a790b6..00000000 --- a/demo/src/pages/dashboard/analysis/style.less +++ /dev/null @@ -1,189 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.iconGroup { - span.anticon { - margin-left: 16px; - color: @text-color-secondary; - cursor: pointer; - transition: color 0.32s; - &:hover { - color: @text-color; - } - } -} - -.rankingList { - margin: 25px 0 0; - padding: 0; - list-style: none; - li { - display: flex; - align-items: center; - margin-top: 16px; - zoom: 1; - &::before, - &::after { - display: table; - content: ' '; - } - &::after { - clear: both; - height: 0; - font-size: 0; - visibility: hidden; - } - span { - color: @text-color; - font-size: 14px; - line-height: 22px; - } - .rankingItemNumber { - display: inline-block; - width: 20px; - height: 20px; - margin-top: 1.5px; - margin-right: 16px; - font-weight: 600; - font-size: 12px; - line-height: 20px; - text-align: center; - background-color: @tag-default-bg; - border-radius: 20px; - &.active { - color: #fff; - background-color: #314659; - } - } - .rankingItemTitle { - flex: 1; - margin-right: 8px; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - } - } -} - -.salesExtra { - display: inline-block; - margin-right: 24px; - a { - margin-left: 24px; - color: @text-color; - &:hover { - color: @primary-color; - } - &.currentDate { - color: @primary-color; - } - } -} - -.salesCard { - .salesBar { - padding: 0 0 32px 32px; - } - .salesRank { - padding: 0 32px 32px 72px; - } - :global { - .ant-tabs-bar, - .ant-tabs-nav-wrap { - padding-left: 16px; - .ant-tabs-nav .ant-tabs-tab { - padding-top: 16px; - padding-bottom: 14px; - line-height: 24px; - } - } - .ant-tabs-extra-content { - padding-right: 24px; - line-height: 55px; - } - .ant-card-head { - position: relative; - } - .ant-card-head-title { - align-items: normal; - } - } -} - -.salesCardExtra { - height: inherit; -} - -.salesTypeRadio { - position: absolute; - right: 54px; - bottom: 12px; -} - -.offlineCard { - :global { - .ant-tabs-ink-bar { - bottom: auto; - } - .ant-tabs-bar { - border-bottom: none; - } - .ant-tabs-nav-container-scrolling { - padding-right: 40px; - padding-left: 40px; - } - .ant-tabs-tab-prev-icon::before { - position: relative; - left: 6px; - } - .ant-tabs-tab-next-icon::before { - position: relative; - right: 6px; - } - .ant-tabs-tab-active h4 { - color: @primary-color; - } - } -} - -.trendText { - margin-left: 8px; - color: @heading-color; -} - -@media screen and (max-width: @screen-lg) { - .salesExtra { - display: none; - } - - .rankingList { - li { - span:first-child { - margin-right: 8px; - } - } - } -} - -@media screen and (max-width: @screen-md) { - .rankingTitle { - margin-top: 16px; - } - - .salesCard .salesBar { - padding: 16px; - } -} - -@media screen and (max-width: @screen-sm) { - .salesExtraWrap { - display: none; - } - - .salesCard { - :global { - .ant-tabs-content { - padding-top: 30px; - } - } - } -} diff --git a/demo/src/pages/dashboard/analysis/utils/Yuan.tsx b/demo/src/pages/dashboard/analysis/utils/Yuan.tsx deleted file mode 100644 index 7027d3c3..00000000 --- a/demo/src/pages/dashboard/analysis/utils/Yuan.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react'; -import { yuan } from '../components/Charts'; -/** 减少使用 dangerouslySetInnerHTML */ -export default class Yuan extends React.Component<{ - children: React.ReactText; -}> { - main: HTMLSpanElement | undefined | null = null; - - componentDidMount() { - this.renderToHtml(); - } - - componentDidUpdate() { - this.renderToHtml(); - } - - renderToHtml = () => { - const { children } = this.props; - if (this.main) { - this.main.innerHTML = yuan(children); - } - }; - - render() { - return ( - { - this.main = ref; - }} - /> - ); - } -} diff --git a/demo/src/pages/dashboard/analysis/utils/utils.less b/demo/src/pages/dashboard/analysis/utils/utils.less deleted file mode 100644 index de1aa642..00000000 --- a/demo/src/pages/dashboard/analysis/utils/utils.less +++ /dev/null @@ -1,50 +0,0 @@ -.textOverflow() { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - word-break: break-all; -} - -.textOverflowMulti(@line: 3, @bg: #fff) { - position: relative; - max-height: @line * 1.5em; - margin-right: -1em; - padding-right: 1em; - overflow: hidden; - line-height: 1.5em; - text-align: justify; - &::before { - position: absolute; - right: 14px; - bottom: 0; - padding: 0 1px; - background: @bg; - content: '...'; - } - &::after { - position: absolute; - right: 14px; - width: 1em; - height: 1em; - margin-top: 0.2em; - background: white; - content: ''; - } -} - -// mixins for clearfix -// ------------------------ -.clearfix() { - zoom: 1; - &::before, - &::after { - display: table; - content: ' '; - } - &::after { - clear: both; - height: 0; - font-size: 0; - visibility: hidden; - } -} diff --git a/demo/src/pages/dashboard/analysis/utils/utils.ts b/demo/src/pages/dashboard/analysis/utils/utils.ts deleted file mode 100644 index 6a0da9a2..00000000 --- a/demo/src/pages/dashboard/analysis/utils/utils.ts +++ /dev/null @@ -1,52 +0,0 @@ -import moment from 'moment'; -import type { RangePickerProps } from 'antd/es/date-picker/generatePicker'; - -type RangePickerValue = RangePickerProps['value']; - -export function fixedZero(val: number) { - return val * 1 < 10 ? `0${val}` : val; -} - -export function getTimeDistance(type: 'today' | 'week' | 'month' | 'year'): RangePickerValue { - const now = new Date(); - const oneDay = 1000 * 60 * 60 * 24; - - if (type === 'today') { - now.setHours(0); - now.setMinutes(0); - now.setSeconds(0); - return [moment(now), moment(now.getTime() + (oneDay - 1000))]; - } - - if (type === 'week') { - let day = now.getDay(); - now.setHours(0); - now.setMinutes(0); - now.setSeconds(0); - - if (day === 0) { - day = 6; - } else { - day -= 1; - } - - const beginTime = now.getTime() - day * oneDay; - - return [moment(beginTime), moment(beginTime + (7 * oneDay - 1000))]; - } - const year = now.getFullYear(); - - if (type === 'month') { - const month = now.getMonth(); - const nextDate = moment(now).add(1, 'months'); - const nextYear = nextDate.year(); - const nextMonth = nextDate.month(); - - return [ - moment(`${year}-${fixedZero(month + 1)}-01 00:00:00`), - moment(moment(`${nextYear}-${fixedZero(nextMonth + 1)}-01 00:00:00`).valueOf() - 1000), - ]; - } - - return [moment(`${year}-01-01 00:00:00`), moment(`${year}-12-31 23:59:59`)]; -} diff --git a/demo/src/pages/dashboard/monitor/_mock.ts b/demo/src/pages/dashboard/monitor/_mock.ts deleted file mode 100644 index 7ab870eb..00000000 --- a/demo/src/pages/dashboard/monitor/_mock.ts +++ /dev/null @@ -1,14 +0,0 @@ -import mockjs from 'mockjs'; -import type { Request, Response } from 'express'; - -const getTags = (_: Request, res: Response) => { - return res.json({ - data: mockjs.mock({ - 'list|100': [{ name: '@city', 'value|1-100': 150, 'type|0-2': 1 }], - }), - }); -}; - -export default { - 'GET /api/tags': getTags, -}; diff --git a/demo/src/pages/dashboard/monitor/components/ActiveChart/index.less b/demo/src/pages/dashboard/monitor/components/ActiveChart/index.less deleted file mode 100644 index 2f5d15f2..00000000 --- a/demo/src/pages/dashboard/monitor/components/ActiveChart/index.less +++ /dev/null @@ -1,51 +0,0 @@ -.activeChart { - position: relative; -} -.activeChartGrid { - p { - position: absolute; - top: 80px; - } - p:last-child { - top: 115px; - } -} -.activeChartLegend { - position: relative; - height: 20px; - margin-top: 8px; - font-size: 0; - line-height: 20px; - span { - display: inline-block; - width: 33.33%; - font-size: 12px; - text-align: center; - } - span:first-child { - text-align: left; - } - span:last-child { - text-align: right; - } -} -.dashedLine { - position: relative; - top: -70px; - left: -3px; - height: 1px; - - .line { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-image: linear-gradient(to right, transparent 50%, #e9e9e9 50%); - background-size: 6px; - } -} - -.dashedLine:last-child { - top: -36px; -} diff --git a/demo/src/pages/dashboard/monitor/components/ActiveChart/index.tsx b/demo/src/pages/dashboard/monitor/components/ActiveChart/index.tsx deleted file mode 100644 index 9f0df840..00000000 --- a/demo/src/pages/dashboard/monitor/components/ActiveChart/index.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import { Component } from 'react'; -import { TinyArea } from '@ant-design/charts'; - -import { Statistic } from 'antd'; -import styles from './index.less'; - -function fixedZero(val: number) { - return val * 1 < 10 ? `0${val}` : val; -} - -function getActiveData() { - const activeData = []; - for (let i = 0; i < 24; i += 1) { - activeData.push({ - x: `${fixedZero(i)}:00`, - y: Math.floor(Math.random() * 200) + i * 50, - }); - } - return activeData; -} - -export default class ActiveChart extends Component { - state = { - activeData: getActiveData(), - }; - - timer: number | undefined = undefined; - - requestRef: number | undefined = undefined; - - componentDidMount() { - this.loopData(); - } - - componentWillUnmount() { - clearTimeout(this.timer); - if (this.requestRef) { - cancelAnimationFrame(this.requestRef); - } - } - - loopData = () => { - this.requestRef = requestAnimationFrame(() => { - this.timer = window.setTimeout(() => { - this.setState( - { - activeData: getActiveData(), - }, - () => { - this.loopData(); - }, - ); - }, 1000); - }); - }; - - render() { - const { activeData = [] } = this.state; - - return ( -
    - -
    - -
    - {activeData && ( -
    -
    -

    {[...activeData].sort()[activeData.length - 1].y + 200} 亿元

    -

    {[...activeData].sort()[Math.floor(activeData.length / 2)].y} 亿元

    -
    -
    -
    -
    -
    -
    -
    -
    - )} - {activeData && ( -
    - 00:00 - {activeData[Math.floor(activeData.length / 2)].x} - {activeData[activeData.length - 1].x} -
    - )} -
    - ); - } -} diff --git a/demo/src/pages/dashboard/monitor/components/Charts/Gauge/index.tsx b/demo/src/pages/dashboard/monitor/components/Charts/Gauge/index.tsx deleted file mode 100644 index a4975fa6..00000000 --- a/demo/src/pages/dashboard/monitor/components/Charts/Gauge/index.tsx +++ /dev/null @@ -1,180 +0,0 @@ -import { Axis, Chart, Coord, Geom, Guide, Shape } from 'bizcharts'; - -import React from 'react'; -import autoHeight from '../autoHeight'; - -const { Arc, Html, Line } = Guide; - -export type GaugeProps = { - title: React.ReactNode; - color?: string; - height?: number; - bgColor?: number; - percent: number; - forceFit?: boolean; - style?: React.CSSProperties; - formatter?: (value: string) => string; -}; - -const defaultFormatter = (val: string): string => { - switch (val) { - case '2': - return '差'; - case '4': - return '中'; - case '6': - return '良'; - case '8': - return '优'; - default: - return ''; - } -}; - -if (Shape.registerShape) { - Shape.registerShape('point', 'pointer', { - drawShape(cfg: any, group: any) { - let point = cfg.points[0]; - point = (this as any).parsePoint(point); - const center = (this as any).parsePoint({ - x: 0, - y: 0, - }); - group.addShape('line', { - attrs: { - x1: center.x, - y1: center.y, - x2: point.x, - y2: point.y, - stroke: cfg.color, - lineWidth: 2, - lineCap: 'round', - }, - }); - return group.addShape('circle', { - attrs: { - x: center.x, - y: center.y, - r: 6, - stroke: cfg.color, - lineWidth: 3, - fill: '#fff', - }, - }); - }, - }); -} - -const Gauge: React.FC = (props) => { - const { - title, - height = 1, - percent, - forceFit = true, - formatter = defaultFormatter, - color = '#2F9CFF', - bgColor = '#F0F2F5', - } = props; - const cols = { - value: { - type: 'linear', - min: 0, - max: 10, - tickCount: 6, - nice: true, - }, - }; - const data = [{ value: percent / 10 }]; - - const renderHtml = () => ` -
    -
    ${title}
    -
    - ${(data[0].value * 10).toFixed(2)}% -
    -
    `; - - const textStyle: { - fontSize: number; - fill: string; - textAlign: 'center'; - } = { - fontSize: 12, - fill: 'rgba(0, 0, 0, 0.65)', - textAlign: 'center', - }; - return ( - - - - - - - - - - - - - - - ); -}; - -export default autoHeight()(Gauge); diff --git a/demo/src/pages/dashboard/monitor/components/Charts/MiniArea/index.tsx b/demo/src/pages/dashboard/monitor/components/Charts/MiniArea/index.tsx deleted file mode 100644 index 5b20ae85..00000000 --- a/demo/src/pages/dashboard/monitor/components/Charts/MiniArea/index.tsx +++ /dev/null @@ -1,131 +0,0 @@ -import type { AxisProps } from 'bizcharts'; -import { Axis, Chart, Geom, Tooltip } from 'bizcharts'; - -import React from 'react'; -import autoHeight from '../autoHeight'; -import styles from '../index.less'; - -export type MiniAreaProps = { - color?: string; - height?: number; - borderColor?: string; - line?: boolean; - animate?: boolean; - xAxis?: AxisProps; - forceFit?: boolean; - scale?: { - x?: { - tickCount: number; - }; - y?: { - tickCount: number; - }; - }; - yAxis?: Partial; - borderWidth?: number; - data: { - x: number | string; - y: number; - }[]; -}; - -const MiniArea: React.FC = (props) => { - const { - height = 1, - data = [], - forceFit = true, - color = 'rgba(24, 144, 255, 0.2)', - borderColor = '#1089ff', - scale = { x: {}, y: {} }, - borderWidth = 2, - line, - xAxis, - yAxis, - animate = true, - } = props; - - const padding: [number, number, number, number] = [36, 5, 30, 5]; - - const scaleProps = { - x: { - type: 'cat', - range: [0, 1], - ...scale.x, - }, - y: { - min: 0, - ...scale.y, - }, - }; - - const tooltip: [string, (...args: any[]) => { name?: string; value: string }] = [ - 'x*y', - (x: string, y: string) => ({ - name: x, - value: y, - }), - ]; - - const chartHeight = height + 54; - - return ( -
    -
    - {height > 0 && ( - - - - - - {line ? ( - - ) : ( - - )} - - )} -
    -
    - ); -}; - -export default autoHeight()(MiniArea); diff --git a/demo/src/pages/dashboard/monitor/components/Charts/Pie/index.tsx b/demo/src/pages/dashboard/monitor/components/Charts/Pie/index.tsx deleted file mode 100644 index 520c5c57..00000000 --- a/demo/src/pages/dashboard/monitor/components/Charts/Pie/index.tsx +++ /dev/null @@ -1,310 +0,0 @@ -import { Chart, Coord, Geom, Tooltip } from 'bizcharts'; -import React, { Component } from 'react'; - -import { DataView } from '@antv/data-set'; -import Debounce from 'lodash.debounce'; -import { Divider } from 'antd'; -import ReactFitText from 'react-fittext'; -import classNames from 'classnames'; -import autoHeight from '../autoHeight'; -import styles from './index.less'; - -export type PieProps = { - animate?: boolean; - color?: string; - colors?: string[]; - selected?: boolean; - height?: number; - margin?: [number, number, number, number]; - hasLegend?: boolean; - padding?: [number, number, number, number]; - percent?: number; - data?: { - x: string | string; - y: number; - }[]; - inner?: number; - lineWidth?: number; - forceFit?: boolean; - style?: React.CSSProperties; - className?: string; - total?: React.ReactNode | number | (() => React.ReactNode | number); - title?: React.ReactNode; - tooltip?: boolean; - valueFormat?: (value: string) => string | React.ReactNode; - subTitle?: React.ReactNode; -}; -type PieState = { - legendData: { checked: boolean; x: string; color: string; percent: number; y: string }[]; - legendBlock: boolean; -}; -class Pie extends Component { - state: PieState = { - legendData: [], - legendBlock: false, - }; - - chart: G2.Chart | undefined = undefined; - - root: HTMLDivElement | undefined = undefined; - - requestRef: number | undefined = 0; - - // for window resize auto responsive legend - resize = Debounce(() => { - const { hasLegend } = this.props; - const { legendBlock } = this.state; - if (!hasLegend || !this.root) { - window.removeEventListener('resize', this.resize); - return; - } - if ( - this.root && - this.root.parentNode && - (this.root.parentNode as HTMLElement).clientWidth <= 380 - ) { - if (!legendBlock) { - this.setState({ - legendBlock: true, - }); - } - } else if (legendBlock) { - this.setState({ - legendBlock: false, - }); - } - }, 300); - - componentDidMount() { - window.addEventListener( - 'resize', - () => { - this.requestRef = requestAnimationFrame(() => this.resize()); - }, - { passive: true }, - ); - } - - componentDidUpdate(preProps: PieProps) { - const { data } = this.props; - if (data !== preProps.data) { - // because of charts data create when rendered - // so there is a trick for get rendered time - this.getLegendData(); - } - } - - componentWillUnmount() { - if (this.requestRef) { - window.cancelAnimationFrame(this.requestRef); - } - window.removeEventListener('resize', this.resize); - if (this.resize) { - (this.resize as any).cancel(); - } - } - - getG2Instance = (chart: G2.Chart) => { - this.chart = chart; - requestAnimationFrame(() => { - this.getLegendData(); - this.resize(); - }); - }; - - // for custom lengend view - getLegendData = () => { - if (!this.chart) return; - const geom = this.chart.getAllGeoms()[0]; // 获取所有的图形 - if (!geom) return; - // g2 的类型有问题 - const items = (geom as any).get('dataArray') || []; // 获取图形对应的 - - const legendData = items.map((item: { color: any; _origin: any }[]) => { - /* eslint no-underscore-dangle:0 */ - const origin = item[0]._origin; - origin.color = item[0].color; - origin.checked = true; - return origin; - }); - - this.setState({ - legendData, - }); - }; - - handleRoot = (n: HTMLDivElement) => { - this.root = n; - }; - - handleLegendClick = (item: { checked: boolean }, i: string | number) => { - const newItem = item; - newItem.checked = !newItem.checked; - - const { legendData } = this.state; - legendData[i] = newItem; - - const filteredLegendData = legendData.filter((l) => l.checked).map((l) => l.x); - - if (this.chart) { - this.chart.filter('x', (val) => filteredLegendData.indexOf(`${val}`) > -1); - } - - this.setState({ - legendData, - }); - }; - - render() { - const { - valueFormat, - subTitle, - total, - hasLegend = false, - className, - style, - height = 0, - forceFit = true, - percent, - color, - inner = 0.75, - animate = true, - colors, - lineWidth = 1, - } = this.props; - - const { legendData, legendBlock } = this.state; - const pieClassName = classNames(styles.pie, className, { - [styles.hasLegend]: !!hasLegend, - [styles.legendBlock]: legendBlock, - }); - - const { - data: propsData, - selected: propsSelected = true, - tooltip: propsTooltip = true, - } = this.props; - - let data = propsData || []; - let selected = propsSelected; - let tooltip = propsTooltip; - - const defaultColors = colors; - data = data || []; - selected = selected || true; - tooltip = tooltip || true; - let formatColor; - - const scale = { - x: { - type: 'cat', - range: [0, 1], - }, - y: { - min: 0, - }, - }; - - if (percent || percent === 0) { - selected = false; - tooltip = false; - formatColor = (value: string) => { - if (value === '占比') { - return color || 'rgba(24, 144, 255, 0.85)'; - } - return '#F0F2F5'; - }; - - data = [ - { - x: '占比', - y: parseFloat(`${percent}`), - }, - { - x: '反比', - y: 100 - parseFloat(`${percent}`), - }, - ]; - } - - const tooltipFormat: [string, (...args: any[]) => { name?: string; value: string }] = [ - 'x*percent', - (x: string, p: number) => ({ - name: x, - value: `${(p * 100).toFixed(2)}%`, - }), - ]; - - const padding = [12, 0, 12, 0] as [number, number, number, number]; - - const dv = new DataView(); - dv.source(data).transform({ - type: 'percent', - field: 'y', - dimension: 'x', - as: 'percent', - }); - - return ( -
    - -
    - - {!!tooltip && } - - - - - {(subTitle || total) && ( -
    - {subTitle &&

    {subTitle}

    } - {/* eslint-disable-next-line */} - {total && ( -
    {typeof total === 'function' ? total() : total}
    - )} -
    - )} -
    -
    - - {hasLegend && ( -
      - {legendData.map((item, i) => ( -
    • this.handleLegendClick(item, i)}> - - {item.x} - - - {`${(Number.isNaN(item.percent) ? 0 : item.percent * 100).toFixed(2)}%`} - - {valueFormat ? valueFormat(item.y) : item.y} -
    • - ))} -
    - )} -
    - ); - } -} - -export default autoHeight()(Pie); diff --git a/demo/src/pages/dashboard/monitor/components/Charts/TagCloud/index.tsx b/demo/src/pages/dashboard/monitor/components/Charts/TagCloud/index.tsx deleted file mode 100644 index f3ee5192..00000000 --- a/demo/src/pages/dashboard/monitor/components/Charts/TagCloud/index.tsx +++ /dev/null @@ -1,211 +0,0 @@ -import { Chart, Coord, Geom, Shape, Tooltip } from 'bizcharts'; -import React, { Component } from 'react'; - -import DataSet from '@antv/data-set'; -import Debounce from 'lodash.debounce'; -import classNames from 'classnames'; -import autoHeight from '../autoHeight'; -import styles from './index.less'; - -/* eslint no-underscore-dangle: 0 */ -/* eslint no-param-reassign: 0 */ - -const imgUrl = 'https://gw.alipayobjects.com/zos/rmsportal/gWyeGLCdFFRavBGIDzWk.png'; - -export type TagCloudProps = { - data: { - name: string; - value: string; - }[]; - height?: number; - className?: string; - style?: React.CSSProperties; -}; - -type TagCloudState = { - dv: any; - height?: number; - width: number; -}; - -class TagCloud extends Component { - state = { - dv: null, - height: 0, - width: 0, - }; - - requestRef: number = 0; - - isUnmount: boolean = false; - - root: HTMLDivElement | undefined = undefined; - - imageMask: HTMLImageElement | undefined = undefined; - - componentDidMount() { - requestAnimationFrame(() => { - this.initTagCloud(); - this.renderChart(this.props); - }); - window.addEventListener('resize', this.resize, { passive: true }); - } - - componentDidUpdate(preProps?: TagCloudProps) { - const { data } = this.props; - if (preProps && JSON.stringify(preProps.data) !== JSON.stringify(data)) { - this.renderChart(this.props); - } - } - - componentWillUnmount() { - this.isUnmount = true; - window.cancelAnimationFrame(this.requestRef); - window.removeEventListener('resize', this.resize); - } - - resize = () => { - this.requestRef = requestAnimationFrame(() => { - this.renderChart(this.props); - }); - }; - - saveRootRef = (node: HTMLDivElement) => { - this.root = node; - }; - - initTagCloud = () => { - function getTextAttrs(cfg: { - x?: any; - y?: any; - style?: any; - opacity?: any; - origin?: any; - color?: any; - }) { - return { - ...cfg.style, - fillOpacity: cfg.opacity, - fontSize: cfg.origin._origin.size, - rotate: cfg.origin._origin.rotate, - text: cfg.origin._origin.text, - textAlign: 'center', - fontFamily: cfg.origin._origin.font, - fill: cfg.color, - textBaseline: 'Alphabetic', - }; - } - - (Shape as any).registerShape('point', 'cloud', { - drawShape( - cfg: { x: any; y: any }, - container: { addShape: (arg0: string, arg1: { attrs: any }) => void }, - ) { - const attrs = getTextAttrs(cfg); - return container.addShape('text', { - attrs: { - ...attrs, - x: cfg.x, - y: cfg.y, - }, - }); - }, - }); - }; - - renderChart = Debounce((nextProps: TagCloudProps) => { - // const colors = ['#1890FF', '#41D9C7', '#2FC25B', '#FACC14', '#9AE65C']; - const { data, height } = nextProps || this.props; - if (data.length < 1 || !this.root) { - return; - } - - const h = height; - const w = this.root.offsetWidth; - - const onload = () => { - const dv = new DataSet.View().source(data); - const range = dv.range('value'); - const [min, max] = range; - dv.transform({ - type: 'tag-cloud', - fields: ['name', 'value'], - imageMask: this.imageMask, - font: 'Verdana', - size: [w, h], // 宽高设置最好根据 imageMask 做调整 - padding: 0, - timeInterval: 5000, // max execute time - rotate() { - return 0; - }, - fontSize(d: { value: number }) { - const size = ((d.value - min) / (max - min)) ** 2; - return size * (17.5 - 5) + 5; - }, - }); - - if (this.isUnmount) { - return; - } - - this.setState({ - dv, - width: w, - height: h, - }); - }; - - if (!this.imageMask) { - this.imageMask = new Image(); - this.imageMask.crossOrigin = ''; - this.imageMask.src = imgUrl; - - this.imageMask.onload = onload; - } else { - onload(); - } - }, 200); - - render() { - const { className, height } = this.props; - const { dv, width, height: stateHeight } = this.state; - - return ( -
    - {dv && ( - - - - - - )} -
    - ); - } -} - -export default autoHeight()(TagCloud); diff --git a/demo/src/pages/dashboard/monitor/components/Charts/WaterWave/index.tsx b/demo/src/pages/dashboard/monitor/components/Charts/WaterWave/index.tsx deleted file mode 100644 index a9b64110..00000000 --- a/demo/src/pages/dashboard/monitor/components/Charts/WaterWave/index.tsx +++ /dev/null @@ -1,235 +0,0 @@ -import React, { Component } from 'react'; - -import autoHeight from '../autoHeight'; -import styles from './index.less'; - -/* eslint no-return-assign: 0 */ -/* eslint no-mixed-operators: 0 */ -// riddle: https://riddle.alibaba-inc.com/riddles/2d9a4b90 - -export type WaterWaveProps = { - title: React.ReactNode; - color?: string; - height?: number; - percent: number; - style?: React.CSSProperties; -}; - -class WaterWave extends Component { - state = { - radio: 1, - }; - - timer: number = 0; - - root: HTMLDivElement | undefined | null = null; - - node: HTMLCanvasElement | undefined | null = null; - - componentDidMount() { - this.renderChart(); - this.resize(); - window.addEventListener( - 'resize', - () => { - requestAnimationFrame(() => this.resize()); - }, - { passive: true }, - ); - } - - componentDidUpdate(props: WaterWaveProps) { - const { percent } = this.props; - if (props.percent !== percent) { - // 不加这个会造成绘制缓慢 - this.renderChart('update'); - } - } - - componentWillUnmount() { - cancelAnimationFrame(this.timer); - if (this.node) { - this.node.innerHTML = ''; - } - window.removeEventListener('resize', this.resize); - } - - resize = () => { - if (this.root) { - const { height = 1 } = this.props; - const { offsetWidth } = this.root.parentNode as HTMLElement; - this.setState({ - radio: offsetWidth < height ? offsetWidth / height : 1, - }); - } - }; - - renderChart(type?: string) { - const { percent, color = '#1890FF' } = this.props; - const data = percent / 100; - cancelAnimationFrame(this.timer); - - if (!this.node || (data !== 0 && !data)) { - return; - } - - const canvas = this.node; - const ctx = canvas.getContext('2d'); - if (!ctx) { - return; - } - const canvasWidth = canvas.width; - const canvasHeight = canvas.height; - const radius = canvasWidth / 2; - const lineWidth = 2; - const cR = radius - lineWidth; - - ctx.beginPath(); - ctx.lineWidth = lineWidth * 2; - - const axisLength = canvasWidth - lineWidth; - const unit = axisLength / 8; - const range = 0.2; // 振幅 - let currRange = range; - const xOffset = lineWidth; - let sp = 0; // 周期偏移量 - let currData = 0; - const waveupsp = 0.005; // 水波上涨速度 - - let arcStack: number[][] = []; - const bR = radius - lineWidth; - const circleOffset = -(Math.PI / 2); - let circleLock = true; - - for (let i = circleOffset; i < circleOffset + 2 * Math.PI; i += 1 / (8 * Math.PI)) { - arcStack.push([radius + bR * Math.cos(i), radius + bR * Math.sin(i)]); - } - - const cStartPoint = arcStack.shift() as number[]; - ctx.strokeStyle = color; - ctx.moveTo(cStartPoint[0], cStartPoint[1]); - - const drawSin = () => { - if (!ctx) { - return; - } - ctx.beginPath(); - ctx.save(); - - const sinStack = []; - for (let i = xOffset; i <= xOffset + axisLength; i += 20 / axisLength) { - const x = sp + (xOffset + i) / unit; - const y = Math.sin(x) * currRange; - const dx = i; - const dy = 2 * cR * (1 - currData) + (radius - cR) - unit * y; - - ctx.lineTo(dx, dy); - sinStack.push([dx, dy]); - } - - const startPoint = sinStack.shift() as number[]; - - ctx.lineTo(xOffset + axisLength, canvasHeight); - ctx.lineTo(xOffset, canvasHeight); - ctx.lineTo(startPoint[0], startPoint[1]); - - const gradient = ctx.createLinearGradient(0, 0, 0, canvasHeight); - gradient.addColorStop(0, '#ffffff'); - gradient.addColorStop(1, color); - ctx.fillStyle = gradient; - ctx.fill(); - ctx.restore(); - }; - - const render = () => { - if (!ctx) { - return; - } - ctx.clearRect(0, 0, canvasWidth, canvasHeight); - if (circleLock && type !== 'update') { - if (arcStack.length) { - const temp = arcStack.shift() as number[]; - ctx.lineTo(temp[0], temp[1]); - ctx.stroke(); - } else { - circleLock = false; - ctx.lineTo(cStartPoint[0], cStartPoint[1]); - ctx.stroke(); - arcStack = []; - - ctx.globalCompositeOperation = 'destination-over'; - ctx.beginPath(); - ctx.lineWidth = lineWidth; - ctx.arc(radius, radius, bR, 0, 2 * Math.PI, true); - - ctx.beginPath(); - ctx.save(); - ctx.arc(radius, radius, radius - 3 * lineWidth, 0, 2 * Math.PI, true); - - ctx.restore(); - ctx.clip(); - ctx.fillStyle = color; - } - } else { - if (data >= 0.85) { - if (currRange > range / 4) { - const t = range * 0.01; - currRange -= t; - } - } else if (data <= 0.1) { - if (currRange < range * 1.5) { - const t = range * 0.01; - currRange += t; - } - } else { - if (currRange <= range) { - const t = range * 0.01; - currRange += t; - } - if (currRange >= range) { - const t = range * 0.01; - currRange -= t; - } - } - if (data - currData > 0) { - currData += waveupsp; - } - if (data - currData < 0) { - currData -= waveupsp; - } - - sp += 0.07; - drawSin(); - } - this.timer = requestAnimationFrame(render); - }; - render(); - } - - render() { - const { radio } = this.state; - const { percent, title, height = 1 } = this.props; - return ( -
    (this.root = n)} - style={{ transform: `scale(${radio})` }} - > -
    - (this.node = n)} - width={height * 2} - height={height * 2} - /> -
    -
    - {title && {title}} -

    {percent}%

    -
    -
    - ); - } -} - -export default autoHeight()(WaterWave); diff --git a/demo/src/pages/dashboard/monitor/components/Charts/autoHeight.tsx b/demo/src/pages/dashboard/monitor/components/Charts/autoHeight.tsx deleted file mode 100644 index f37acace..00000000 --- a/demo/src/pages/dashboard/monitor/components/Charts/autoHeight.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import React from 'react'; - -export type IReactComponent

    = - | React.StatelessComponent

    - | React.ComponentClass

    - | React.ClassicComponentClass

    ; - -function computeHeight(node: HTMLDivElement) { - const { style } = node; - style.height = '100%'; - const totalHeight = parseInt(`${getComputedStyle(node).height}`, 10); - const padding = - parseInt(`${getComputedStyle(node).paddingTop}`, 10) + - parseInt(`${getComputedStyle(node).paddingBottom}`, 10); - return totalHeight - padding; -} - -function getAutoHeight(n: HTMLDivElement) { - if (!n) { - return 0; - } - - const node = n; - - let height = computeHeight(node); - const parentNode = node.parentNode as HTMLDivElement; - if (parentNode) { - height = computeHeight(parentNode); - } - - return height; -} - -type AutoHeightProps = { - height?: number; -}; - -function autoHeight() { - return

    ( - WrappedComponent: React.ComponentClass

    | React.FC

    , - ): React.ComponentClass

    => { - class AutoHeightComponent extends React.Component

    { - state = { - computedHeight: 0, - }; - - root: HTMLDivElement | null = null; - - componentDidMount() { - const { height } = this.props; - if (!height && this.root) { - let h = getAutoHeight(this.root); - this.setState({ computedHeight: h }); - if (h < 1) { - h = getAutoHeight(this.root); - this.setState({ computedHeight: h }); - } - } - } - - handleRoot = (node: HTMLDivElement) => { - this.root = node; - }; - - render() { - const { height } = this.props; - const { computedHeight } = this.state; - const h = height || computedHeight; - return ( -

    - {h > 0 && } -
    - ); - } - } - return AutoHeightComponent; - }; -} -export default autoHeight; diff --git a/demo/src/pages/dashboard/monitor/components/Map/index.tsx b/demo/src/pages/dashboard/monitor/components/Map/index.tsx deleted file mode 100644 index ff9d924f..00000000 --- a/demo/src/pages/dashboard/monitor/components/Map/index.tsx +++ /dev/null @@ -1,145 +0,0 @@ -import * as React from 'react'; -import { HeatmapLayer, MapboxScene, PointLayer } from '@antv/l7-react'; -import { PageLoading } from '@ant-design/pro-layout'; - -const colors = ['#eff3ff', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5', '#084594']; -export default class Map extends React.Component { - state = { - data: null, - grid: null, - loading: false, - }; - - public async componentDidMount() { - const [geoData, gridData] = await Promise.all([ - fetch( - 'https://gw.alipayobjects.com/os/bmw-prod/c5dba875-b6ea-4e88-b778-66a862906c93.json', - ).then((d) => d.json()), - fetch( - 'https://gw.alipayobjects.com/os/bmw-prod/8990e8b4-c58e-419b-afb9-8ea3daff2dd1.json', - ).then((d) => d.json()), - ]); - this.setState({ - data: geoData, - grid: gridData, - loading: true, - }); - } - - public render() { - const { data, grid, loading } = this.state; - return loading === false ? ( - - ) : ( - - {grid && ( - - )} - {data && [ - , - { - return v > 2000; - }, - }} - size={{ - values: 12, - }} - style={{ - opacity: 1, - strokeOpacity: 1, - strokeWidth: 0, - }} - />, - ]} - - ); - } -} diff --git a/demo/src/pages/dashboard/monitor/data.d.ts b/demo/src/pages/dashboard/monitor/data.d.ts deleted file mode 100644 index b6efef35..00000000 --- a/demo/src/pages/dashboard/monitor/data.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export type TagType = { - name: string; - value: number; - type: string; -}; diff --git a/demo/src/pages/dashboard/monitor/index.tsx b/demo/src/pages/dashboard/monitor/index.tsx deleted file mode 100644 index 779d200a..00000000 --- a/demo/src/pages/dashboard/monitor/index.tsx +++ /dev/null @@ -1,152 +0,0 @@ -import { Card, Col, Row, Statistic } from 'antd'; -import { useRequest } from 'umi'; -import type { FC } from 'react'; -import { Gauge, WordCloud, Liquid, RingProgress } from '@ant-design/charts'; -import type { WordCloudData } from '@antv/g2plot/esm/plots/word-cloud/layer'; - -import { GridContent } from '@ant-design/pro-layout'; -import numeral from 'numeral'; -import Map from './components/Map'; -import ActiveChart from './components/ActiveChart'; -import { queryTags } from './service'; -import styles from './style.less'; - -const { Countdown } = Statistic; - -const deadline = Date.now() + 1000 * 60 * 60 * 24 * 2 + 1000 * 30; // Moment is also OK - -const Monitor: FC = () => { - const { loading, data } = useRequest(queryTags); - - const wordCloudData: WordCloudData[] = (data?.list || []).map((item) => { - return { - id: +Date.now(), - word: item.name, - weight: item.value, - }; - }); - - return ( - - <> - -
    - - - - - - - - - - - - - - - -
    - -
    - - -
    - - - - - - - - - - - - - - - {/* */} - - - - - - - - - - - - - - {/* */} - - - - - `${((100 * value) / 10000).toFixed(1)}%`, - }} - /> - - - - - - ); -}; - -export default Monitor; diff --git a/demo/src/pages/dashboard/monitor/service.ts b/demo/src/pages/dashboard/monitor/service.ts deleted file mode 100644 index 431c4106..00000000 --- a/demo/src/pages/dashboard/monitor/service.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { request } from 'umi'; -import type { TagType } from './data'; - -export async function queryTags(): Promise<{ data: { list: TagType[] } }> { - return request('/api/tags'); -} diff --git a/demo/src/pages/dashboard/monitor/style.less b/demo/src/pages/dashboard/monitor/style.less deleted file mode 100644 index d2f0c686..00000000 --- a/demo/src/pages/dashboard/monitor/style.less +++ /dev/null @@ -1,21 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.mapChart { - height: 452px; - padding-top: 24px; - img { - display: inline-block; - max-width: 100%; - max-height: 437px; - } -} - -.pieCard :global(.pie-stat) { - font-size: 24px !important; -} - -@media screen and (max-width: @screen-lg) { - .mapChart { - height: auto; - } -} diff --git a/demo/src/pages/dashboard/workplace/_mock.ts b/demo/src/pages/dashboard/workplace/_mock.ts deleted file mode 100644 index 41b9e38a..00000000 --- a/demo/src/pages/dashboard/workplace/_mock.ts +++ /dev/null @@ -1,410 +0,0 @@ -import moment from 'moment'; -import type { Request, Response } from 'express'; -import type { SearchDataType, OfflineDataType, DataItem } from './data.d'; - -// mock data -const visitData: DataItem[] = []; -const beginDay = new Date().getTime(); - -const fakeY = [7, 5, 4, 2, 4, 7, 5, 6, 5, 9, 6, 3, 1, 5, 3, 6, 5]; -for (let i = 0; i < fakeY.length; i += 1) { - visitData.push({ - x: moment(new Date(beginDay + 1000 * 60 * 60 * 24 * i)).format('YYYY-MM-DD'), - y: fakeY[i], - }); -} - -const visitData2: DataItem[] = []; -const fakeY2 = [1, 6, 4, 8, 3, 7, 2]; -for (let i = 0; i < fakeY2.length; i += 1) { - visitData2.push({ - x: moment(new Date(beginDay + 1000 * 60 * 60 * 24 * i)).format('YYYY-MM-DD'), - y: fakeY2[i], - }); -} - -const salesData: DataItem[] = []; -for (let i = 0; i < 12; i += 1) { - salesData.push({ - x: `${i + 1}月`, - y: Math.floor(Math.random() * 1000) + 200, - }); -} -const searchData: SearchDataType[] = []; -for (let i = 0; i < 50; i += 1) { - searchData.push({ - index: i + 1, - keyword: `搜索关键词-${i}`, - count: Math.floor(Math.random() * 1000), - range: Math.floor(Math.random() * 100), - status: Math.floor((Math.random() * 10) % 2), - }); -} -const salesTypeData = [ - { - x: '家用电器', - y: 4544, - }, - { - x: '食用酒水', - y: 3321, - }, - { - x: '个护健康', - y: 3113, - }, - { - x: '服饰箱包', - y: 2341, - }, - { - x: '母婴产品', - y: 1231, - }, - { - x: '其他', - y: 1231, - }, -]; - -const salesTypeDataOnline = [ - { - x: '家用电器', - y: 244, - }, - { - x: '食用酒水', - y: 321, - }, - { - x: '个护健康', - y: 311, - }, - { - x: '服饰箱包', - y: 41, - }, - { - x: '母婴产品', - y: 121, - }, - { - x: '其他', - y: 111, - }, -]; - -const salesTypeDataOffline = [ - { - x: '家用电器', - y: 99, - }, - { - x: '食用酒水', - y: 188, - }, - { - x: '个护健康', - y: 344, - }, - { - x: '服饰箱包', - y: 255, - }, - { - x: '其他', - y: 65, - }, -]; - -const offlineData: OfflineDataType[] = []; -for (let i = 0; i < 10; i += 1) { - offlineData.push({ - name: `Stores ${i}`, - cvr: Math.ceil(Math.random() * 9) / 10, - }); -} -const offlineChartData: DataItem[] = []; -for (let i = 0; i < 20; i += 1) { - offlineChartData.push({ - x: new Date().getTime() + 1000 * 60 * 30 * i, - y1: Math.floor(Math.random() * 100) + 10, - y2: Math.floor(Math.random() * 100) + 10, - }); -} - -const titles = [ - 'Alipay', - 'Angular', - 'Ant Design', - 'Ant Design Pro', - 'Bootstrap', - 'React', - 'Vue', - 'Webpack', -]; -const avatars = [ - 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', // Alipay - 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', // Angular - 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', // Ant Design - 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', // Ant Design Pro - 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', // Bootstrap - 'https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png', // React - 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', // Vue - 'https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png', // Webpack -]; - -const avatars2 = [ - 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png', - 'https://gw.alipayobjects.com/zos/rmsportal/cnrhVkzwxjPwAaCfPbdc.png', - 'https://gw.alipayobjects.com/zos/rmsportal/gaOngJwsRYRaVAuXXcmB.png', - 'https://gw.alipayobjects.com/zos/rmsportal/ubnKSIfAJTxIgXOKlciN.png', - 'https://gw.alipayobjects.com/zos/rmsportal/WhxKECPNujWoWEFNdnJE.png', - 'https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png', - 'https://gw.alipayobjects.com/zos/rmsportal/psOgztMplJMGpVEqfcgF.png', - 'https://gw.alipayobjects.com/zos/rmsportal/ZpBqSxLxVEXfcUNoPKrz.png', - 'https://gw.alipayobjects.com/zos/rmsportal/laiEnJdGHVOhJrUShBaJ.png', - 'https://gw.alipayobjects.com/zos/rmsportal/UrQsqscbKEpNuJcvBZBu.png', -]; - -const getNotice = (_: Request, res: Response) => { - res.json({ - data: [ - { - id: 'xxx1', - title: titles[0], - logo: avatars[0], - description: '那是一种内在的东西,他们到达不了,也无法触及的', - updatedAt: new Date(), - member: '科学搬砖组', - href: '', - memberLink: '', - }, - { - id: 'xxx2', - title: titles[1], - logo: avatars[1], - description: '希望是一个好东西,也许是最好的,好东西是不会消亡的', - updatedAt: new Date('2017-07-24'), - member: '全组都是吴彦祖', - href: '', - memberLink: '', - }, - { - id: 'xxx3', - title: titles[2], - logo: avatars[2], - description: '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆', - updatedAt: new Date(), - member: '中二少女团', - href: '', - memberLink: '', - }, - { - id: 'xxx4', - title: titles[3], - logo: avatars[3], - description: '那时候我只会想自己想要什么,从不想自己拥有什么', - updatedAt: new Date('2017-07-23'), - member: '程序员日常', - href: '', - memberLink: '', - }, - { - id: 'xxx5', - title: titles[4], - logo: avatars[4], - description: '凛冬将至', - updatedAt: new Date('2017-07-23'), - member: '高逼格设计天团', - href: '', - memberLink: '', - }, - { - id: 'xxx6', - title: titles[5], - logo: avatars[5], - description: '生命就像一盒巧克力,结果往往出人意料', - updatedAt: new Date('2017-07-23'), - member: '骗你来学计算机', - href: '', - memberLink: '', - }, - ], - }); -}; - -const getActivities = (_: Request, res: Response) => { - res.json({ - data: [ - { - id: 'trend-1', - updatedAt: new Date(), - user: { - name: '曲丽丽', - avatar: avatars2[0], - }, - group: { - name: '高逼格设计天团', - link: 'http://github.com/', - }, - project: { - name: '六月迭代', - link: 'http://github.com/', - }, - template: '在 @{group} 新建项目 @{project}', - }, - { - id: 'trend-2', - updatedAt: new Date(), - user: { - name: '付小小', - avatar: avatars2[1], - }, - group: { - name: '高逼格设计天团', - link: 'http://github.com/', - }, - project: { - name: '六月迭代', - link: 'http://github.com/', - }, - template: '在 @{group} 新建项目 @{project}', - }, - { - id: 'trend-3', - updatedAt: new Date(), - user: { - name: '林东东', - avatar: avatars2[2], - }, - group: { - name: '中二少女团', - link: 'http://github.com/', - }, - project: { - name: '六月迭代', - link: 'http://github.com/', - }, - template: '在 @{group} 新建项目 @{project}', - }, - { - id: 'trend-4', - updatedAt: new Date(), - user: { - name: '周星星', - avatar: avatars2[4], - }, - project: { - name: '5 月日常迭代', - link: 'http://github.com/', - }, - template: '将 @{project} 更新至已发布状态', - }, - { - id: 'trend-5', - updatedAt: new Date(), - user: { - name: '朱偏右', - avatar: avatars2[3], - }, - project: { - name: '工程效能', - link: 'http://github.com/', - }, - comment: { - name: '留言', - link: 'http://github.com/', - }, - template: '在 @{project} 发布了 @{comment}', - }, - { - id: 'trend-6', - updatedAt: new Date(), - user: { - name: '乐哥', - avatar: avatars2[5], - }, - group: { - name: '程序员日常', - link: 'http://github.com/', - }, - project: { - name: '品牌迭代', - link: 'http://github.com/', - }, - template: '在 @{group} 新建项目 @{project}', - }, - ], - }); -}; - -const radarOriginData = [ - { - name: '个人', - ref: 10, - koubei: 8, - output: 4, - contribute: 5, - hot: 7, - }, - { - name: '团队', - ref: 3, - koubei: 9, - output: 6, - contribute: 3, - hot: 1, - }, - { - name: '部门', - ref: 4, - koubei: 1, - output: 6, - contribute: 5, - hot: 7, - }, -]; - -const radarData: any[] = []; -const radarTitleMap = { - ref: '引用', - koubei: '口碑', - output: '产量', - contribute: '贡献', - hot: '热度', -}; -radarOriginData.forEach((item) => { - Object.keys(item).forEach((key) => { - if (key !== 'name') { - radarData.push({ - name: item.name, - label: radarTitleMap[key], - value: item[key], - }); - } - }); -}); - -const getChartData = (_: Request, res: Response) => { - res.json({ - data: { - visitData, - visitData2, - salesData, - searchData, - offlineData, - offlineChartData, - salesTypeData, - salesTypeDataOnline, - salesTypeDataOffline, - radarData, - }, - }); -}; - -export default { - 'GET /api/project/notice': getNotice, - 'GET /api/activities': getActivities, - 'GET /api/fake_workplace_chart_data': getChartData, -}; diff --git a/demo/src/pages/dashboard/workplace/components/EditableLinkGroup/index.less b/demo/src/pages/dashboard/workplace/components/EditableLinkGroup/index.less deleted file mode 100644 index 5add1b0b..00000000 --- a/demo/src/pages/dashboard/workplace/components/EditableLinkGroup/index.less +++ /dev/null @@ -1,16 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.linkGroup { - padding: 20px 0 8px 24px; - font-size: 0; - & > a { - display: inline-block; - width: 25%; - margin-bottom: 13px; - color: @text-color; - font-size: @font-size-base; - &:hover { - color: @primary-color; - } - } -} diff --git a/demo/src/pages/dashboard/workplace/components/EditableLinkGroup/index.tsx b/demo/src/pages/dashboard/workplace/components/EditableLinkGroup/index.tsx deleted file mode 100644 index 73b34384..00000000 --- a/demo/src/pages/dashboard/workplace/components/EditableLinkGroup/index.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import React, { createElement } from 'react'; -import { PlusOutlined } from '@ant-design/icons'; -import { Button } from 'antd'; - -import styles from './index.less'; - -export type EditableLink = { - title: string; - href: string; - id?: string; -}; - -type EditableLinkGroupProps = { - onAdd: () => void; - links: EditableLink[]; - linkElement: any; -}; - -const EditableLinkGroup: React.FC = (props) => { - const { links, linkElement, onAdd } = props; - return ( -
    - {links.map((link) => - createElement( - linkElement, - { - key: `linkGroup-item-${link.id || link.title}`, - to: link.href, - href: link.href, - }, - link.title, - ), - )} - -
    - ); -}; - -EditableLinkGroup.defaultProps = { - links: [], - onAdd: () => {}, - linkElement: 'a', -}; - -export default EditableLinkGroup; diff --git a/demo/src/pages/dashboard/workplace/components/Radar/autoHeight.tsx b/demo/src/pages/dashboard/workplace/components/Radar/autoHeight.tsx deleted file mode 100644 index 5ec7bf39..00000000 --- a/demo/src/pages/dashboard/workplace/components/Radar/autoHeight.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import React from 'react'; - -export type IReactComponent

    = - | React.StatelessComponent

    - | React.ComponentClass

    - | React.ClassicComponentClass

    ; - -function computeHeight(node: HTMLDivElement) { - const { style } = node; - style.height = '100%'; - const totalHeight = parseInt(`${getComputedStyle(node).height}`, 10); - const padding = - parseInt(`${getComputedStyle(node).paddingTop}`, 10) + - parseInt(`${getComputedStyle(node).paddingBottom}`, 10); - return totalHeight - padding; -} - -function getAutoHeight(n: HTMLDivElement | undefined) { - if (!n) { - return 0; - } - - const node = n; - - let height = computeHeight(node); - const parentNode = node.parentNode as HTMLDivElement; - if (parentNode) { - height = computeHeight(parentNode); - } - - return height; -} - -type AutoHeightProps = { - height?: number; -}; - -function autoHeight() { - return

    ( - WrappedComponent: React.ComponentClass

    | React.FC

    , - ): React.ComponentClass

    => { - class AutoHeightComponent extends React.Component

    { - state = { - computedHeight: 0, - }; - - root: HTMLDivElement | undefined = undefined; - - componentDidMount() { - const { height } = this.props; - if (!height) { - let h = getAutoHeight(this.root); - this.setState({ computedHeight: h }); - if (h < 1) { - h = getAutoHeight(this.root); - this.setState({ computedHeight: h }); - } - } - } - - handleRoot = (node: HTMLDivElement) => { - this.root = node; - }; - - render() { - const { height } = this.props; - const { computedHeight } = this.state; - const h = height || computedHeight; - return ( -

    - {h > 0 && } -
    - ); - } - } - return AutoHeightComponent; - }; -} -export default autoHeight; diff --git a/demo/src/pages/dashboard/workplace/components/Radar/index.tsx b/demo/src/pages/dashboard/workplace/components/Radar/index.tsx deleted file mode 100644 index f7b8596a..00000000 --- a/demo/src/pages/dashboard/workplace/components/Radar/index.tsx +++ /dev/null @@ -1,219 +0,0 @@ -import { Axis, Chart, Coord, Geom, Tooltip } from 'bizcharts'; -import { Col, Row } from 'antd'; -import React, { Component } from 'react'; - -import autoHeight from './autoHeight'; -import styles from './index.less'; - -export type RadarProps = { - title?: React.ReactNode; - height?: number; - padding?: [number, number, number, number]; - hasLegend?: boolean; - data: { - name: string; - label: string; - value: string | number; - }[]; - colors?: string[]; - animate?: boolean; - forceFit?: boolean; - tickCount?: number; - style?: React.CSSProperties; -}; -type RadarState = { - legendData: { - checked: boolean; - name: string; - color: string; - percent: number; - value: string; - }[]; -}; -/* eslint react/no-danger:0 */ -class Radar extends Component { - state: RadarState = { - legendData: [], - }; - - chart: G2.Chart | undefined = undefined; - - node: HTMLDivElement | undefined = undefined; - - componentDidMount() { - this.getLegendData(); - } - - componentDidUpdate(preProps: RadarProps) { - const { data } = this.props; - if (data !== preProps.data) { - this.getLegendData(); - } - } - - getG2Instance = (chart: G2.Chart) => { - this.chart = chart; - }; - - // for custom lengend view - getLegendData = () => { - if (!this.chart) return; - const geom = this.chart.getAllGeoms()[0]; // 获取所有的图形 - if (!geom) return; - const items = (geom as any).get('dataArray') || []; // 获取图形对应的 - - const legendData = items.map((item: { color: any; _origin: any }[]) => { - // eslint-disable-next-line no-underscore-dangle - const origins = item.map((t) => t._origin); - const result = { - name: origins[0].name, - color: item[0].color, - checked: true, - value: origins.reduce((p, n) => p + n.value, 0), - }; - - return result; - }); - - this.setState({ - legendData, - }); - }; - - handleRef = (n: HTMLDivElement) => { - this.node = n; - }; - - handleLegendClick = ( - item: { - checked: boolean; - name: string; - }, - i: string | number, - ) => { - const newItem = item; - newItem.checked = !newItem.checked; - - const { legendData } = this.state; - legendData[i] = newItem; - - const filteredLegendData = legendData.filter((l) => l.checked).map((l) => l.name); - - if (this.chart) { - this.chart.filter('name', (val) => filteredLegendData.indexOf(`${val}`) > -1); - this.chart.repaint(); - } - - this.setState({ - legendData, - }); - }; - - render() { - const defaultColors = [ - '#1890FF', - '#FACC14', - '#2FC25B', - '#8543E0', - '#F04864', - '#13C2C2', - '#fa8c16', - '#a0d911', - ]; - - const { - data = [], - height = 0, - title, - hasLegend = false, - forceFit = true, - tickCount = 5, - padding = [35, 30, 16, 30] as [number, number, number, number], - animate = true, - colors = defaultColors, - } = this.props; - - const { legendData } = this.state; - - const scale = { - value: { - min: 0, - tickCount, - }, - }; - - const chartHeight = height - (hasLegend ? 80 : 22); - - return ( -
    - {title &&

    {title}

    } - - - - - - - - - {hasLegend && ( - - {legendData.map((item, i) => ( -
    this.handleLegendClick(item, i)} - > -
    -

    - - {item.name} -

    -
    {item.value}
    -
    - - ))} - - )} - - ); - } -} - -export default autoHeight()(Radar); diff --git a/demo/src/pages/dashboard/workplace/data.d.ts b/demo/src/pages/dashboard/workplace/data.d.ts deleted file mode 100644 index e96271ec..00000000 --- a/demo/src/pages/dashboard/workplace/data.d.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { DataItem } from '@antv/g2plot/esm/interface/config'; - -export { DataItem }; - -export interface TagType { - key: string; - label: string; -} - -export type SearchDataType = { - index: number; - keyword: string; - count: number; - range: number; - status: number; -}; - -export type OfflineDataType = { - name: string; - cvr: number; -}; - -export interface RadarData { - name: string; - label: string; - value: number; -} - -export type AnalysisData = { - visitData: VisitDataType[]; - visitData2: VisitDataType[]; - salesData: VisitDataType[]; - searchData: SearchDataType[]; - offlineData: OfflineDataType[]; - offlineChartData: OfflineChartData[]; - salesTypeData: VisitDataType[]; - salesTypeDataOnline: VisitDataType[]; - salesTypeDataOffline: VisitDataType[]; - radarData: DataItem[]; -}; - -export type GeographicType = { - province: { - label: string; - key: string; - }; - city: { - label: string; - key: string; - }; -}; - -export type NoticeType = { - id: string; - title: string; - logo: string; - description: string; - updatedAt: string; - member: string; - href: string; - memberLink: string; -}; - -export type CurrentUser = { - name: string; - avatar: string; - userid: string; - notice: NoticeType[]; - email: string; - signature: string; - title: string; - group: string; - tags: TagType[]; - notifyCount: number; - unreadCount: number; - country: string; - geographic: GeographicType; - address: string; - phone: string; -}; - -export type Member = { - avatar: string; - name: string; - id: string; -}; - -export type ActivitiesType = { - id: string; - updatedAt: string; - user: { - name: string; - avatar: string; - }; - group: { - name: string; - link: string; - }; - project: { - name: string; - link: string; - }; - - template: string; -}; - -export type RadarDataType = { - label: string; - name: string; - value: number; -}; diff --git a/demo/src/pages/dashboard/workplace/index.tsx b/demo/src/pages/dashboard/workplace/index.tsx deleted file mode 100644 index 701e64a1..00000000 --- a/demo/src/pages/dashboard/workplace/index.tsx +++ /dev/null @@ -1,242 +0,0 @@ -import type { FC } from 'react'; -import { Avatar, Card, Col, List, Skeleton, Row, Statistic } from 'antd'; -import { Radar } from '@ant-design/charts'; - -import { Link, useRequest } from 'umi'; -import { PageContainer } from '@ant-design/pro-layout'; -import moment from 'moment'; -import EditableLinkGroup from './components/EditableLinkGroup'; -import styles from './style.less'; -import type { ActivitiesType, CurrentUser } from './data.d'; -import { queryProjectNotice, queryActivities, fakeChartData } from './service'; - -const links = [ - { - title: '操作一', - href: '', - }, - { - title: '操作二', - href: '', - }, - { - title: '操作三', - href: '', - }, - { - title: '操作四', - href: '', - }, - { - title: '操作五', - href: '', - }, - { - title: '操作六', - href: '', - }, -]; - -const PageHeaderContent: FC<{ currentUser: Partial }> = ({ currentUser }) => { - const loading = currentUser && Object.keys(currentUser).length; - if (!loading) { - return ; - } - return ( -
    -
    - -
    -
    -
    - 早安, - {currentUser.name} - ,祝你开心每一天! -
    -
    - {currentUser.title} |{currentUser.group} -
    -
    -
    - ); -}; - -const ExtraContent: FC> = () => ( -
    -
    - -
    -
    - -
    -
    - -
    -
    -); - -const Workplace: FC = () => { - const { loading: projectLoading, data: projectNotice = [] } = useRequest(queryProjectNotice); - const { loading: activitiesLoading, data: activities = [] } = useRequest(queryActivities); - const { data } = useRequest(fakeChartData); - - const renderActivities = (item: ActivitiesType) => { - const events = item.template.split(/@\{([^{}]*)\}/gi).map((key) => { - if (item[key]) { - return ( - - {item[key].name} - - ); - } - return key; - }); - return ( - - } - title={ - - {item.user.name} -   - {events} - - } - description={ - - {moment(item.updatedAt).fromNow()} - - } - /> - - ); - }; - - return ( - - } - extraContent={} - > - -
    - 全部项目} - loading={projectLoading} - bodyStyle={{ padding: 0 }} - > - {projectNotice.map((item) => ( - - - - - {item.title} - - } - description={item.description} - /> -
    - {item.member || ''} - {item.updatedAt && ( - - {moment(item.updatedAt).fromNow()} - - )} -
    -
    -
    - ))} -
    - - - loading={activitiesLoading} - renderItem={(item) => renderActivities(item)} - dataSource={activities} - className={styles.activitiesList} - size="large" - /> - - - - - {}} links={links} linkElement={Link} /> - - -
    - -
    -
    - -
    - - {projectNotice.map((item) => ( -
    - - - {item.member} - - - ))} - - - - - - - ); -}; - -export default Workplace; diff --git a/demo/src/pages/dashboard/workplace/service.ts b/demo/src/pages/dashboard/workplace/service.ts deleted file mode 100644 index 9d5cd915..00000000 --- a/demo/src/pages/dashboard/workplace/service.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { request } from 'umi'; -import type { NoticeType, ActivitiesType, AnalysisData } from './data'; - -export async function queryProjectNotice(): Promise<{ data: NoticeType[] }> { - return request('/api/project/notice'); -} - -export async function queryActivities(): Promise<{ data: ActivitiesType[] }> { - return request('/api/activities'); -} - -export async function fakeChartData(): Promise<{ data: AnalysisData }> { - return request('/api/fake_workplace_chart_data'); -} diff --git a/demo/src/pages/dashboard/workplace/style.less b/demo/src/pages/dashboard/workplace/style.less deleted file mode 100644 index 46c10e14..00000000 --- a/demo/src/pages/dashboard/workplace/style.less +++ /dev/null @@ -1,250 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.textOverflow() { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - word-break: break-all; -} - -// mixins for clearfix -// ------------------------ -.clearfix() { - zoom: 1; - &::before, - &::after { - display: table; - content: ' '; - } - &::after { - clear: both; - height: 0; - font-size: 0; - visibility: hidden; - } -} - -.activitiesList { - padding: 0 24px 8px 24px; - .username { - color: @text-color; - } - .event { - font-weight: normal; - } -} - -.pageHeaderContent { - display: flex; - .avatar { - flex: 0 1 72px; - & > span { - display: block; - width: 72px; - height: 72px; - border-radius: 72px; - } - } - .content { - position: relative; - top: 4px; - flex: 1 1 auto; - margin-left: 24px; - color: @text-color-secondary; - line-height: 22px; - .contentTitle { - margin-bottom: 12px; - color: @heading-color; - font-weight: 500; - font-size: 20px; - line-height: 28px; - } - } -} - -.extraContent { - .clearfix(); - - float: right; - white-space: nowrap; - .statItem { - position: relative; - display: inline-block; - padding: 0 32px; - > p:first-child { - margin-bottom: 4px; - color: @text-color-secondary; - font-size: @font-size-base; - line-height: 22px; - } - > p { - margin: 0; - color: @heading-color; - font-size: 30px; - line-height: 38px; - > span { - color: @text-color-secondary; - font-size: 20px; - } - } - &::after { - position: absolute; - top: 8px; - right: 0; - width: 1px; - height: 40px; - background-color: @border-color-split; - content: ''; - } - &:last-child { - padding-right: 0; - &::after { - display: none; - } - } - } -} - -.members { - a { - display: block; - height: 24px; - margin: 12px 0; - color: @text-color; - transition: all 0.3s; - .textOverflow(); - .member { - margin-left: 12px; - font-size: @font-size-base; - line-height: 24px; - vertical-align: top; - } - &:hover { - color: @primary-color; - } - } -} - -.projectList { - :global { - .ant-card-meta-description { - height: 44px; - overflow: hidden; - color: @text-color-secondary; - line-height: 22px; - } - } - .cardTitle { - font-size: 0; - a { - display: inline-block; - height: 24px; - margin-left: 12px; - color: @heading-color; - font-size: @font-size-base; - line-height: 24px; - vertical-align: top; - &:hover { - color: @primary-color; - } - } - } - .projectGrid { - width: 33.33%; - } - .projectItemContent { - display: flex; - height: 20px; - margin-top: 8px; - overflow: hidden; - font-size: 12px; - line-height: 20px; - .textOverflow(); - a { - display: inline-block; - flex: 1 1 0; - color: @text-color-secondary; - .textOverflow(); - &:hover { - color: @primary-color; - } - } - .datetime { - flex: 0 0 auto; - float: right; - color: @disabled-color; - } - } -} - -.datetime { - color: @disabled-color; -} - -@media screen and (max-width: @screen-xl) and (min-width: @screen-lg) { - .activeCard { - margin-bottom: 24px; - } - .members { - margin-bottom: 0; - } - .extraContent { - margin-left: -44px; - .statItem { - padding: 0 16px; - } - } -} - -@media screen and (max-width: @screen-lg) { - .activeCard { - margin-bottom: 24px; - } - .members { - margin-bottom: 0; - } - .extraContent { - float: none; - margin-right: 0; - .statItem { - padding: 0 16px; - text-align: left; - &::after { - display: none; - } - } - } -} - -@media screen and (max-width: @screen-md) { - .extraContent { - margin-left: -16px; - } - .projectList { - .projectGrid { - width: 50%; - } - } -} - -@media screen and (max-width: @screen-sm) { - .pageHeaderContent { - display: block; - .content { - margin-left: 0; - } - } - .extraContent { - .statItem { - float: none; - } - } -} - -@media screen and (max-width: @screen-xs) { - .projectList { - .projectGrid { - width: 100%; - } - } -} diff --git a/demo/src/pages/document.ejs b/demo/src/pages/document.ejs deleted file mode 100644 index 6db8355f..00000000 --- a/demo/src/pages/document.ejs +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - - - - - - Ant Design Pro - - - - -
    - -
    - logo -
    -
    - -
    -
    -
    - - Ant Design -
    -
    -
    - - diff --git a/demo/src/pages/editor/flow/common/IconFont/index.ts b/demo/src/pages/editor/flow/common/IconFont/index.ts deleted file mode 100644 index 987647c0..00000000 --- a/demo/src/pages/editor/flow/common/IconFont/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { createFromIconfontCN } from '@ant-design/icons'; - -const IconFont = createFromIconfontCN({ - scriptUrl: 'https://at.alicdn.com/t/font_1101588_01zniftxm9yp.js', -}); - -export default IconFont; diff --git a/demo/src/pages/editor/flow/components/EditorContextMenu/FlowContextMenu.tsx b/demo/src/pages/editor/flow/components/EditorContextMenu/FlowContextMenu.tsx deleted file mode 100644 index c5cc4e50..00000000 --- a/demo/src/pages/editor/flow/components/EditorContextMenu/FlowContextMenu.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { CanvasMenu, ContextMenu, EdgeMenu, GroupMenu, MultiMenu, NodeMenu } from 'gg-editor'; - -import MenuItem from './MenuItem'; -import styles from './index.less'; - -const FlowContextMenu = () => ( - - - - - - - - - - - - - - - - - - - - - - - - - -); - -export default FlowContextMenu; diff --git a/demo/src/pages/editor/flow/components/EditorContextMenu/KoniContextMenu.tsx b/demo/src/pages/editor/flow/components/EditorContextMenu/KoniContextMenu.tsx deleted file mode 100644 index 8b049a5e..00000000 --- a/demo/src/pages/editor/flow/components/EditorContextMenu/KoniContextMenu.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import FlowContextMenu from './FlowContextMenu'; - -export default FlowContextMenu; diff --git a/demo/src/pages/editor/flow/components/EditorContextMenu/MenuItem.tsx b/demo/src/pages/editor/flow/components/EditorContextMenu/MenuItem.tsx deleted file mode 100644 index 297967ab..00000000 --- a/demo/src/pages/editor/flow/components/EditorContextMenu/MenuItem.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { Command } from 'gg-editor'; -import React from 'react'; -import IconFont from '../../common/IconFont'; -import styles from './index.less'; - -const upperFirst = (str: string) => - str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); - -type MenuItemProps = { - command: string; - icon?: string; - text?: string; -}; -const MenuItem: React.FC = (props) => { - const { command, icon, text } = props; - - return ( - -
    - - {text || upperFirst(command)} -
    -
    - ); -}; - -export default MenuItem; diff --git a/demo/src/pages/editor/flow/components/EditorContextMenu/MindContextMenu.tsx b/demo/src/pages/editor/flow/components/EditorContextMenu/MindContextMenu.tsx deleted file mode 100644 index 5a8b4076..00000000 --- a/demo/src/pages/editor/flow/components/EditorContextMenu/MindContextMenu.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { CanvasMenu, ContextMenu, NodeMenu } from 'gg-editor'; - -import MenuItem from './MenuItem'; -import styles from './index.less'; - -const MindContextMenu = () => ( - - - - - - - - - - - - - -); - -export default MindContextMenu; diff --git a/demo/src/pages/editor/flow/components/EditorContextMenu/index.less b/demo/src/pages/editor/flow/components/EditorContextMenu/index.less deleted file mode 100644 index 39cbd2e9..00000000 --- a/demo/src/pages/editor/flow/components/EditorContextMenu/index.less +++ /dev/null @@ -1,41 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.contextMenu { - display: none; - overflow: hidden; - background: @component-background; - border-radius: 4px; - box-shadow: @box-shadow-base; - - .item { - display: flex; - align-items: center; - padding: 5px 12px; - cursor: pointer; - transition: all 0.3s; - user-select: none; - - &:hover { - background: @select-item-selected-bg; - } - - span.anticon { - margin-right: 8px; - } - } - - :global { - .disable { - :local { - .item { - color: @disabled-color; - cursor: auto; - - &:hover { - background: @item-hover-bg; - } - } - } - } - } -} diff --git a/demo/src/pages/editor/flow/components/EditorContextMenu/index.tsx b/demo/src/pages/editor/flow/components/EditorContextMenu/index.tsx deleted file mode 100644 index 6ee93423..00000000 --- a/demo/src/pages/editor/flow/components/EditorContextMenu/index.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import FlowContextMenu from './FlowContextMenu'; -import KoniContextMenu from './KoniContextMenu'; -import MindContextMenu from './MindContextMenu'; - -export { FlowContextMenu, MindContextMenu, KoniContextMenu }; diff --git a/demo/src/pages/editor/flow/components/EditorDetailPanel/DetailForm.tsx b/demo/src/pages/editor/flow/components/EditorDetailPanel/DetailForm.tsx deleted file mode 100644 index c89265b6..00000000 --- a/demo/src/pages/editor/flow/components/EditorDetailPanel/DetailForm.tsx +++ /dev/null @@ -1,114 +0,0 @@ -import React from 'react'; -import { Card, Input, Select, Form } from 'antd'; -import { withPropsAPI } from 'gg-editor'; - -const upperFirst = (str: string) => - str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); - -const { Item } = Form; -const { Option } = Select; - -const inlineFormItemLayout = { - labelCol: { - sm: { span: 8 }, - }, - wrapperCol: { - sm: { span: 16 }, - }, -}; - -type DetailFormProps = { - type: string; - propsAPI?: any; -}; - -class DetailForm extends React.Component { - get item() { - const { propsAPI } = this.props; - return propsAPI.getSelected()[0]; - } - - handleFieldChange = (values: any) => { - const { propsAPI } = this.props; - const { getSelected, executeCommand, update } = propsAPI; - - setTimeout(() => { - const item = getSelected()[0]; - if (!item) { - return; - } - executeCommand(() => { - update(item, { - ...values, - }); - }); - }, 0); - }; - - handleInputBlur = (type: string) => (e: React.FormEvent) => { - e.preventDefault(); - this.handleFieldChange({ - [type]: e.currentTarget.value, - }); - }; - - renderNodeDetail = () => { - const { label } = this.item.getModel(); - - return ( -
    - - - - - ); - }; - - renderEdgeDetail = () => { - const { label = '', shape = 'flow-smooth' } = this.item.getModel(); - - return ( -
    - - - - - - - - ); - }; - - renderGroupDetail = () => { - const { label = '新建分组' } = this.item.getModel(); - - return ( -
    - - - - - ); - }; - - render() { - const { type } = this.props; - if (!this.item) { - return null; - } - - return ( - - {type === 'node' && this.renderNodeDetail()} - {type === 'edge' && this.renderEdgeDetail()} - {type === 'group' && this.renderGroupDetail()} - - ); - } -} - -export default withPropsAPI(DetailForm as any); diff --git a/demo/src/pages/editor/flow/components/EditorDetailPanel/FlowDetailPanel.tsx b/demo/src/pages/editor/flow/components/EditorDetailPanel/FlowDetailPanel.tsx deleted file mode 100644 index bb7035c9..00000000 --- a/demo/src/pages/editor/flow/components/EditorDetailPanel/FlowDetailPanel.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { CanvasPanel, DetailPanel, EdgePanel, GroupPanel, MultiPanel, NodePanel } from 'gg-editor'; - -import { Card } from 'antd'; -import DetailForm from './DetailForm'; -import styles from './index.less'; - -const FlowDetailPanel = () => ( - - - - - - - - - - - - - - - - - -); - -export default FlowDetailPanel; diff --git a/demo/src/pages/editor/flow/components/EditorDetailPanel/KoniDetailPanel.tsx b/demo/src/pages/editor/flow/components/EditorDetailPanel/KoniDetailPanel.tsx deleted file mode 100644 index 18aea9a4..00000000 --- a/demo/src/pages/editor/flow/components/EditorDetailPanel/KoniDetailPanel.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import FlowDetailPanel from './FlowDetailPanel'; - -export default FlowDetailPanel; diff --git a/demo/src/pages/editor/flow/components/EditorDetailPanel/MindDetailPanel.tsx b/demo/src/pages/editor/flow/components/EditorDetailPanel/MindDetailPanel.tsx deleted file mode 100644 index dceaf36e..00000000 --- a/demo/src/pages/editor/flow/components/EditorDetailPanel/MindDetailPanel.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { CanvasPanel, DetailPanel, NodePanel } from 'gg-editor'; - -import { Card } from 'antd'; -import DetailForm from './DetailForm'; -import styles from './index.less'; - -const MindDetailPanel = () => ( - - - - - - - - -); - -export default MindDetailPanel; diff --git a/demo/src/pages/editor/flow/components/EditorDetailPanel/index.less b/demo/src/pages/editor/flow/components/EditorDetailPanel/index.less deleted file mode 100644 index 0b2c564b..00000000 --- a/demo/src/pages/editor/flow/components/EditorDetailPanel/index.less +++ /dev/null @@ -1,6 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.detailPanel { - flex: 1; - background-color: @component-background; -} diff --git a/demo/src/pages/editor/flow/components/EditorDetailPanel/index.tsx b/demo/src/pages/editor/flow/components/EditorDetailPanel/index.tsx deleted file mode 100644 index 50aa37a8..00000000 --- a/demo/src/pages/editor/flow/components/EditorDetailPanel/index.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import FlowDetailPanel from './FlowDetailPanel'; -import KoniDetailPanel from './KoniDetailPanel'; -import MindDetailPanel from './MindDetailPanel'; - -export { FlowDetailPanel, MindDetailPanel, KoniDetailPanel }; diff --git a/demo/src/pages/editor/flow/components/EditorItemPanel/FlowItemPanel.tsx b/demo/src/pages/editor/flow/components/EditorItemPanel/FlowItemPanel.tsx deleted file mode 100644 index c7dcbe60..00000000 --- a/demo/src/pages/editor/flow/components/EditorItemPanel/FlowItemPanel.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { Item, ItemPanel } from 'gg-editor'; - -import { Card } from 'antd'; -import styles from './index.less'; - -const FlowItemPanel = () => ( - - - - - - - - -); - -export default FlowItemPanel; diff --git a/demo/src/pages/editor/flow/components/EditorItemPanel/KoniItemPanel.tsx b/demo/src/pages/editor/flow/components/EditorItemPanel/KoniItemPanel.tsx deleted file mode 100644 index 3901d292..00000000 --- a/demo/src/pages/editor/flow/components/EditorItemPanel/KoniItemPanel.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { Item, ItemPanel } from 'gg-editor'; - -import { Card } from 'antd'; -import styles from './index.less'; - -const KoniItemPanel = () => ( - - - - - - - -); - -export default KoniItemPanel; diff --git a/demo/src/pages/editor/flow/components/EditorItemPanel/index.less b/demo/src/pages/editor/flow/components/EditorItemPanel/index.less deleted file mode 100644 index b594a66b..00000000 --- a/demo/src/pages/editor/flow/components/EditorItemPanel/index.less +++ /dev/null @@ -1,19 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.itemPanel { - flex: 1; - - :global { - .ant-card { - height: 100%; - } - .ant-card-body { - display: flex; - flex-direction: column; - align-items: center; - > div { - margin-bottom: 16px; - } - } - } -} diff --git a/demo/src/pages/editor/flow/components/EditorItemPanel/index.tsx b/demo/src/pages/editor/flow/components/EditorItemPanel/index.tsx deleted file mode 100644 index 2ba03fbb..00000000 --- a/demo/src/pages/editor/flow/components/EditorItemPanel/index.tsx +++ /dev/null @@ -1,4 +0,0 @@ -import FlowItemPanel from './FlowItemPanel'; -import KoniItemPanel from './KoniItemPanel'; - -export { FlowItemPanel, KoniItemPanel }; diff --git a/demo/src/pages/editor/flow/components/EditorMinimap/index.tsx b/demo/src/pages/editor/flow/components/EditorMinimap/index.tsx deleted file mode 100644 index b337edbf..00000000 --- a/demo/src/pages/editor/flow/components/EditorMinimap/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { Card } from 'antd'; -import { Minimap } from 'gg-editor'; - -const EditorMinimap = () => ( - - - -); - -export default EditorMinimap; diff --git a/demo/src/pages/editor/flow/components/EditorToolbar/FlowToolbar.tsx b/demo/src/pages/editor/flow/components/EditorToolbar/FlowToolbar.tsx deleted file mode 100644 index 90494876..00000000 --- a/demo/src/pages/editor/flow/components/EditorToolbar/FlowToolbar.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { Divider } from 'antd'; -import { Toolbar } from 'gg-editor'; -import ToolbarButton from './ToolbarButton'; -import styles from './index.less'; - -const FlowToolbar = () => ( - - - - - - - - - - - - - - - - - - - - -); - -export default FlowToolbar; diff --git a/demo/src/pages/editor/flow/components/EditorToolbar/KoniToolbar.tsx b/demo/src/pages/editor/flow/components/EditorToolbar/KoniToolbar.tsx deleted file mode 100644 index f222007a..00000000 --- a/demo/src/pages/editor/flow/components/EditorToolbar/KoniToolbar.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import FlowToolbar from './FlowToolbar'; - -export default FlowToolbar; diff --git a/demo/src/pages/editor/flow/components/EditorToolbar/MindToolbar.tsx b/demo/src/pages/editor/flow/components/EditorToolbar/MindToolbar.tsx deleted file mode 100644 index 23761093..00000000 --- a/demo/src/pages/editor/flow/components/EditorToolbar/MindToolbar.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { Divider } from 'antd'; -import { Toolbar } from 'gg-editor'; -import ToolbarButton from './ToolbarButton'; -import styles from './index.less'; - -const FlowToolbar = () => ( - - - - - - - - - - - - - - - -); - -export default FlowToolbar; diff --git a/demo/src/pages/editor/flow/components/EditorToolbar/ToolbarButton.tsx b/demo/src/pages/editor/flow/components/EditorToolbar/ToolbarButton.tsx deleted file mode 100644 index 94f9e9c6..00000000 --- a/demo/src/pages/editor/flow/components/EditorToolbar/ToolbarButton.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { Command } from 'gg-editor'; -import React from 'react'; -import { Tooltip } from 'antd'; -import IconFont from '../../common/IconFont'; -import styles from './index.less'; - -const upperFirst = (str: string) => - str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); - -type ToolbarButtonProps = { - command: string; - icon?: string; - text?: string; -}; -const ToolbarButton: React.FC = (props) => { - const { command, icon, text } = props; - - return ( - - - - - - ); -}; - -export default ToolbarButton; diff --git a/demo/src/pages/editor/flow/components/EditorToolbar/index.less b/demo/src/pages/editor/flow/components/EditorToolbar/index.less deleted file mode 100644 index d9e98d1f..00000000 --- a/demo/src/pages/editor/flow/components/EditorToolbar/index.less +++ /dev/null @@ -1,40 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.toolbar { - display: flex; - align-items: center; - - :global { - .command .anticon { - display: inline-block; - width: 27px; - height: 27px; - margin: 0 6px; - padding-top: 6px; - text-align: center; - cursor: pointer; - - &:hover { - border: 1px solid @item-active-bg; - } - } - - .disable .anticon { - color: @text-color-secondary; - cursor: auto; - - &:hover { - border: 1px solid @border-color-base; - } - } - } -} - -.tooltip { - :global { - .ant-tooltip-inner { - font-size: 12px; - border-radius: 0; - } - } -} diff --git a/demo/src/pages/editor/flow/components/EditorToolbar/index.tsx b/demo/src/pages/editor/flow/components/EditorToolbar/index.tsx deleted file mode 100644 index 58f1d277..00000000 --- a/demo/src/pages/editor/flow/components/EditorToolbar/index.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import FlowToolbar from './FlowToolbar'; -import KoniToolbar from './KoniToolbar'; -import MindToolbar from './MindToolbar'; - -export { FlowToolbar, MindToolbar, KoniToolbar }; diff --git a/demo/src/pages/editor/flow/index.less b/demo/src/pages/editor/flow/index.less deleted file mode 100644 index 92dac57d..00000000 --- a/demo/src/pages/editor/flow/index.less +++ /dev/null @@ -1,48 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.editor { - display: flex; - flex: 1; - flex-direction: column; - width: 100%; - height: calc(100vh - 250px); - background: @component-background; -} - -.editorHd { - padding: 8px; - background: @descriptions-bg; - border: 1px solid @item-active-bg; -} - -.editorBd { - flex: 1; -} - -.editorSidebar, -.editorContent { - display: flex; - flex-direction: column; -} - -.editorSidebar { - background: @descriptions-bg; - :global { - .g6-editor-minimap-container { - background: none !important ; - } - } - &:first-child { - border-right: 1px solid @item-active-bg; - } - - &:last-child { - border-left: 1px solid @item-active-bg; - } -} - -.flow, -.mind, -.koni { - flex: 1; -} diff --git a/demo/src/pages/editor/flow/index.tsx b/demo/src/pages/editor/flow/index.tsx deleted file mode 100644 index b8da7bb3..00000000 --- a/demo/src/pages/editor/flow/index.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import { Col, Row } from 'antd'; -import GGEditor, { Flow } from 'gg-editor'; - -import { PageContainer } from '@ant-design/pro-layout'; -import EditorMinimap from './components/EditorMinimap'; -import { FlowContextMenu } from './components/EditorContextMenu'; -import { FlowDetailPanel } from './components/EditorDetailPanel'; -import { FlowItemPanel } from './components/EditorItemPanel'; -import { FlowToolbar } from './components/EditorToolbar'; -import styles from './index.less'; - -GGEditor.setTrackable(false); - -export default () => ( - - - -
    - - - - - - - - - - - - - - - - - - -); diff --git a/demo/src/pages/editor/koni/common/IconFont/index.ts b/demo/src/pages/editor/koni/common/IconFont/index.ts deleted file mode 100644 index 987647c0..00000000 --- a/demo/src/pages/editor/koni/common/IconFont/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { createFromIconfontCN } from '@ant-design/icons'; - -const IconFont = createFromIconfontCN({ - scriptUrl: 'https://at.alicdn.com/t/font_1101588_01zniftxm9yp.js', -}); - -export default IconFont; diff --git a/demo/src/pages/editor/koni/components/EditorContextMenu/FlowContextMenu.tsx b/demo/src/pages/editor/koni/components/EditorContextMenu/FlowContextMenu.tsx deleted file mode 100644 index c5cc4e50..00000000 --- a/demo/src/pages/editor/koni/components/EditorContextMenu/FlowContextMenu.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { CanvasMenu, ContextMenu, EdgeMenu, GroupMenu, MultiMenu, NodeMenu } from 'gg-editor'; - -import MenuItem from './MenuItem'; -import styles from './index.less'; - -const FlowContextMenu = () => ( - - - - - - - - - - - - - - - - - - - - - - - - - -); - -export default FlowContextMenu; diff --git a/demo/src/pages/editor/koni/components/EditorContextMenu/KoniContextMenu.tsx b/demo/src/pages/editor/koni/components/EditorContextMenu/KoniContextMenu.tsx deleted file mode 100644 index 8b049a5e..00000000 --- a/demo/src/pages/editor/koni/components/EditorContextMenu/KoniContextMenu.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import FlowContextMenu from './FlowContextMenu'; - -export default FlowContextMenu; diff --git a/demo/src/pages/editor/koni/components/EditorContextMenu/MenuItem.tsx b/demo/src/pages/editor/koni/components/EditorContextMenu/MenuItem.tsx deleted file mode 100644 index 297967ab..00000000 --- a/demo/src/pages/editor/koni/components/EditorContextMenu/MenuItem.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { Command } from 'gg-editor'; -import React from 'react'; -import IconFont from '../../common/IconFont'; -import styles from './index.less'; - -const upperFirst = (str: string) => - str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); - -type MenuItemProps = { - command: string; - icon?: string; - text?: string; -}; -const MenuItem: React.FC = (props) => { - const { command, icon, text } = props; - - return ( - -
    - - {text || upperFirst(command)} -
    -
    - ); -}; - -export default MenuItem; diff --git a/demo/src/pages/editor/koni/components/EditorContextMenu/MindContextMenu.tsx b/demo/src/pages/editor/koni/components/EditorContextMenu/MindContextMenu.tsx deleted file mode 100644 index 5a8b4076..00000000 --- a/demo/src/pages/editor/koni/components/EditorContextMenu/MindContextMenu.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { CanvasMenu, ContextMenu, NodeMenu } from 'gg-editor'; - -import MenuItem from './MenuItem'; -import styles from './index.less'; - -const MindContextMenu = () => ( - - - - - - - - - - - - - -); - -export default MindContextMenu; diff --git a/demo/src/pages/editor/koni/components/EditorContextMenu/index.less b/demo/src/pages/editor/koni/components/EditorContextMenu/index.less deleted file mode 100644 index 25d68b2c..00000000 --- a/demo/src/pages/editor/koni/components/EditorContextMenu/index.less +++ /dev/null @@ -1,40 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.contextMenu { - display: none; - overflow: hidden; - background: @component-background; - border-radius: 4px; - box-shadow: @box-shadow-base; - .item { - display: flex; - align-items: center; - padding: 5px 12px; - cursor: pointer; - transition: all 0.3s; - user-select: none; - - &:hover { - background: @select-item-selected-bg; - } - - .anticon { - margin-right: 8px; - } - } - - :global { - .disable { - :local { - .item { - color: @disabled-color; - cursor: auto; - - &:hover { - background: @item-hover-bg; - } - } - } - } - } -} diff --git a/demo/src/pages/editor/koni/components/EditorContextMenu/index.tsx b/demo/src/pages/editor/koni/components/EditorContextMenu/index.tsx deleted file mode 100644 index 6ee93423..00000000 --- a/demo/src/pages/editor/koni/components/EditorContextMenu/index.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import FlowContextMenu from './FlowContextMenu'; -import KoniContextMenu from './KoniContextMenu'; -import MindContextMenu from './MindContextMenu'; - -export { FlowContextMenu, MindContextMenu, KoniContextMenu }; diff --git a/demo/src/pages/editor/koni/components/EditorDetailPanel/DetailForm.tsx b/demo/src/pages/editor/koni/components/EditorDetailPanel/DetailForm.tsx deleted file mode 100644 index c89265b6..00000000 --- a/demo/src/pages/editor/koni/components/EditorDetailPanel/DetailForm.tsx +++ /dev/null @@ -1,114 +0,0 @@ -import React from 'react'; -import { Card, Input, Select, Form } from 'antd'; -import { withPropsAPI } from 'gg-editor'; - -const upperFirst = (str: string) => - str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); - -const { Item } = Form; -const { Option } = Select; - -const inlineFormItemLayout = { - labelCol: { - sm: { span: 8 }, - }, - wrapperCol: { - sm: { span: 16 }, - }, -}; - -type DetailFormProps = { - type: string; - propsAPI?: any; -}; - -class DetailForm extends React.Component { - get item() { - const { propsAPI } = this.props; - return propsAPI.getSelected()[0]; - } - - handleFieldChange = (values: any) => { - const { propsAPI } = this.props; - const { getSelected, executeCommand, update } = propsAPI; - - setTimeout(() => { - const item = getSelected()[0]; - if (!item) { - return; - } - executeCommand(() => { - update(item, { - ...values, - }); - }); - }, 0); - }; - - handleInputBlur = (type: string) => (e: React.FormEvent) => { - e.preventDefault(); - this.handleFieldChange({ - [type]: e.currentTarget.value, - }); - }; - - renderNodeDetail = () => { - const { label } = this.item.getModel(); - - return ( -
    - - - - - ); - }; - - renderEdgeDetail = () => { - const { label = '', shape = 'flow-smooth' } = this.item.getModel(); - - return ( -
    - - - - - - - - ); - }; - - renderGroupDetail = () => { - const { label = '新建分组' } = this.item.getModel(); - - return ( -
    - - - - - ); - }; - - render() { - const { type } = this.props; - if (!this.item) { - return null; - } - - return ( - - {type === 'node' && this.renderNodeDetail()} - {type === 'edge' && this.renderEdgeDetail()} - {type === 'group' && this.renderGroupDetail()} - - ); - } -} - -export default withPropsAPI(DetailForm as any); diff --git a/demo/src/pages/editor/koni/components/EditorDetailPanel/FlowDetailPanel.tsx b/demo/src/pages/editor/koni/components/EditorDetailPanel/FlowDetailPanel.tsx deleted file mode 100644 index bb7035c9..00000000 --- a/demo/src/pages/editor/koni/components/EditorDetailPanel/FlowDetailPanel.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { CanvasPanel, DetailPanel, EdgePanel, GroupPanel, MultiPanel, NodePanel } from 'gg-editor'; - -import { Card } from 'antd'; -import DetailForm from './DetailForm'; -import styles from './index.less'; - -const FlowDetailPanel = () => ( - - - - - - - - - - - - - - - - - -); - -export default FlowDetailPanel; diff --git a/demo/src/pages/editor/koni/components/EditorDetailPanel/KoniDetailPanel.tsx b/demo/src/pages/editor/koni/components/EditorDetailPanel/KoniDetailPanel.tsx deleted file mode 100644 index 18aea9a4..00000000 --- a/demo/src/pages/editor/koni/components/EditorDetailPanel/KoniDetailPanel.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import FlowDetailPanel from './FlowDetailPanel'; - -export default FlowDetailPanel; diff --git a/demo/src/pages/editor/koni/components/EditorDetailPanel/MindDetailPanel.tsx b/demo/src/pages/editor/koni/components/EditorDetailPanel/MindDetailPanel.tsx deleted file mode 100644 index dceaf36e..00000000 --- a/demo/src/pages/editor/koni/components/EditorDetailPanel/MindDetailPanel.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { CanvasPanel, DetailPanel, NodePanel } from 'gg-editor'; - -import { Card } from 'antd'; -import DetailForm from './DetailForm'; -import styles from './index.less'; - -const MindDetailPanel = () => ( - - - - - - - - -); - -export default MindDetailPanel; diff --git a/demo/src/pages/editor/koni/components/EditorDetailPanel/index.less b/demo/src/pages/editor/koni/components/EditorDetailPanel/index.less deleted file mode 100644 index 0b2c564b..00000000 --- a/demo/src/pages/editor/koni/components/EditorDetailPanel/index.less +++ /dev/null @@ -1,6 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.detailPanel { - flex: 1; - background-color: @component-background; -} diff --git a/demo/src/pages/editor/koni/components/EditorDetailPanel/index.tsx b/demo/src/pages/editor/koni/components/EditorDetailPanel/index.tsx deleted file mode 100644 index 50aa37a8..00000000 --- a/demo/src/pages/editor/koni/components/EditorDetailPanel/index.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import FlowDetailPanel from './FlowDetailPanel'; -import KoniDetailPanel from './KoniDetailPanel'; -import MindDetailPanel from './MindDetailPanel'; - -export { FlowDetailPanel, MindDetailPanel, KoniDetailPanel }; diff --git a/demo/src/pages/editor/koni/components/EditorItemPanel/FlowItemPanel.tsx b/demo/src/pages/editor/koni/components/EditorItemPanel/FlowItemPanel.tsx deleted file mode 100644 index c7dcbe60..00000000 --- a/demo/src/pages/editor/koni/components/EditorItemPanel/FlowItemPanel.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { Item, ItemPanel } from 'gg-editor'; - -import { Card } from 'antd'; -import styles from './index.less'; - -const FlowItemPanel = () => ( - - - - - - - - -); - -export default FlowItemPanel; diff --git a/demo/src/pages/editor/koni/components/EditorItemPanel/KoniItemPanel.tsx b/demo/src/pages/editor/koni/components/EditorItemPanel/KoniItemPanel.tsx deleted file mode 100644 index 3901d292..00000000 --- a/demo/src/pages/editor/koni/components/EditorItemPanel/KoniItemPanel.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { Item, ItemPanel } from 'gg-editor'; - -import { Card } from 'antd'; -import styles from './index.less'; - -const KoniItemPanel = () => ( - - - - - - - -); - -export default KoniItemPanel; diff --git a/demo/src/pages/editor/koni/components/EditorItemPanel/index.less b/demo/src/pages/editor/koni/components/EditorItemPanel/index.less deleted file mode 100644 index b594a66b..00000000 --- a/demo/src/pages/editor/koni/components/EditorItemPanel/index.less +++ /dev/null @@ -1,19 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.itemPanel { - flex: 1; - - :global { - .ant-card { - height: 100%; - } - .ant-card-body { - display: flex; - flex-direction: column; - align-items: center; - > div { - margin-bottom: 16px; - } - } - } -} diff --git a/demo/src/pages/editor/koni/components/EditorItemPanel/index.tsx b/demo/src/pages/editor/koni/components/EditorItemPanel/index.tsx deleted file mode 100644 index 2ba03fbb..00000000 --- a/demo/src/pages/editor/koni/components/EditorItemPanel/index.tsx +++ /dev/null @@ -1,4 +0,0 @@ -import FlowItemPanel from './FlowItemPanel'; -import KoniItemPanel from './KoniItemPanel'; - -export { FlowItemPanel, KoniItemPanel }; diff --git a/demo/src/pages/editor/koni/components/EditorMinimap/index.tsx b/demo/src/pages/editor/koni/components/EditorMinimap/index.tsx deleted file mode 100644 index b337edbf..00000000 --- a/demo/src/pages/editor/koni/components/EditorMinimap/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { Card } from 'antd'; -import { Minimap } from 'gg-editor'; - -const EditorMinimap = () => ( - - - -); - -export default EditorMinimap; diff --git a/demo/src/pages/editor/koni/components/EditorToolbar/FlowToolbar.tsx b/demo/src/pages/editor/koni/components/EditorToolbar/FlowToolbar.tsx deleted file mode 100644 index 90494876..00000000 --- a/demo/src/pages/editor/koni/components/EditorToolbar/FlowToolbar.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { Divider } from 'antd'; -import { Toolbar } from 'gg-editor'; -import ToolbarButton from './ToolbarButton'; -import styles from './index.less'; - -const FlowToolbar = () => ( - - - - - - - - - - - - - - - - - - - - -); - -export default FlowToolbar; diff --git a/demo/src/pages/editor/koni/components/EditorToolbar/KoniToolbar.tsx b/demo/src/pages/editor/koni/components/EditorToolbar/KoniToolbar.tsx deleted file mode 100644 index f222007a..00000000 --- a/demo/src/pages/editor/koni/components/EditorToolbar/KoniToolbar.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import FlowToolbar from './FlowToolbar'; - -export default FlowToolbar; diff --git a/demo/src/pages/editor/koni/components/EditorToolbar/MindToolbar.tsx b/demo/src/pages/editor/koni/components/EditorToolbar/MindToolbar.tsx deleted file mode 100644 index 23761093..00000000 --- a/demo/src/pages/editor/koni/components/EditorToolbar/MindToolbar.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { Divider } from 'antd'; -import { Toolbar } from 'gg-editor'; -import ToolbarButton from './ToolbarButton'; -import styles from './index.less'; - -const FlowToolbar = () => ( - - - - - - - - - - - - - - - -); - -export default FlowToolbar; diff --git a/demo/src/pages/editor/koni/components/EditorToolbar/ToolbarButton.tsx b/demo/src/pages/editor/koni/components/EditorToolbar/ToolbarButton.tsx deleted file mode 100644 index 94f9e9c6..00000000 --- a/demo/src/pages/editor/koni/components/EditorToolbar/ToolbarButton.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { Command } from 'gg-editor'; -import React from 'react'; -import { Tooltip } from 'antd'; -import IconFont from '../../common/IconFont'; -import styles from './index.less'; - -const upperFirst = (str: string) => - str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); - -type ToolbarButtonProps = { - command: string; - icon?: string; - text?: string; -}; -const ToolbarButton: React.FC = (props) => { - const { command, icon, text } = props; - - return ( - - - - - - ); -}; - -export default ToolbarButton; diff --git a/demo/src/pages/editor/koni/components/EditorToolbar/index.less b/demo/src/pages/editor/koni/components/EditorToolbar/index.less deleted file mode 100644 index 4edd156f..00000000 --- a/demo/src/pages/editor/koni/components/EditorToolbar/index.less +++ /dev/null @@ -1,39 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.toolbar { - display: flex; - align-items: center; - :global { - .command .anticon { - display: inline-block; - width: 27px; - height: 27px; - margin: 0 6px; - padding-top: 6px; - text-align: center; - cursor: pointer; - - &:hover { - border: 1px solid @item-active-bg; - } - } - - .disable .anticon { - color: @text-color-secondary; - cursor: auto; - - &:hover { - border: 1px solid @border-color-base; - } - } - } -} - -.tooltip { - :global { - .ant-tooltip-inner { - font-size: 12px; - border-radius: 0; - } - } -} diff --git a/demo/src/pages/editor/koni/components/EditorToolbar/index.tsx b/demo/src/pages/editor/koni/components/EditorToolbar/index.tsx deleted file mode 100644 index 58f1d277..00000000 --- a/demo/src/pages/editor/koni/components/EditorToolbar/index.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import FlowToolbar from './FlowToolbar'; -import KoniToolbar from './KoniToolbar'; -import MindToolbar from './MindToolbar'; - -export { FlowToolbar, MindToolbar, KoniToolbar }; diff --git a/demo/src/pages/editor/koni/index.less b/demo/src/pages/editor/koni/index.less deleted file mode 100644 index 42923fcb..00000000 --- a/demo/src/pages/editor/koni/index.less +++ /dev/null @@ -1,56 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.editor { - display: flex; - flex: 1; - flex-direction: column; - width: 100%; - height: calc(100vh - 250px); - background: @descriptions-bg; -} - -.editorHd { - padding: 8px; - background: @descriptions-bg; - border: 1px solid @item-active-bg; -} - -.editorBd { - flex: 1; -} - -.editorSidebar, -.editorContent { - display: flex; - flex-direction: column; -} - -.editorContent { - :global { - .graph-container canvas { - vertical-align: middle; - } - } -} - -.editorSidebar { - background: @descriptions-bg; - :global { - .g6-editor-minimap-container { - background: none !important ; - } - } - &:first-child { - border-right: 1px solid @item-active-bg; - } - - &:last-child { - border-left: 1px solid @item-active-bg; - } -} - -.flow, -.mind, -.koni { - flex: 1; -} diff --git a/demo/src/pages/editor/koni/index.tsx b/demo/src/pages/editor/koni/index.tsx deleted file mode 100644 index f94da640..00000000 --- a/demo/src/pages/editor/koni/index.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import { Col, Row } from 'antd'; -import GGEditor, { Koni } from 'gg-editor'; - -import { PageContainer } from '@ant-design/pro-layout'; -import EditorMinimap from './components/EditorMinimap'; -import { KoniContextMenu } from './components/EditorContextMenu'; -import { KoniDetailPanel } from './components/EditorDetailPanel'; -import { KoniItemPanel } from './components/EditorItemPanel'; -import { KoniToolbar } from './components/EditorToolbar'; -import styles from './index.less'; - -GGEditor.setTrackable(false); - -export default () => ( - - - -
    - - - - - - - - - - - - - - - - - - -); diff --git a/demo/src/pages/editor/mind/common/IconFont/index.ts b/demo/src/pages/editor/mind/common/IconFont/index.ts deleted file mode 100644 index 987647c0..00000000 --- a/demo/src/pages/editor/mind/common/IconFont/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { createFromIconfontCN } from '@ant-design/icons'; - -const IconFont = createFromIconfontCN({ - scriptUrl: 'https://at.alicdn.com/t/font_1101588_01zniftxm9yp.js', -}); - -export default IconFont; diff --git a/demo/src/pages/editor/mind/components/EditorContextMenu/FlowContextMenu.tsx b/demo/src/pages/editor/mind/components/EditorContextMenu/FlowContextMenu.tsx deleted file mode 100644 index c5cc4e50..00000000 --- a/demo/src/pages/editor/mind/components/EditorContextMenu/FlowContextMenu.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { CanvasMenu, ContextMenu, EdgeMenu, GroupMenu, MultiMenu, NodeMenu } from 'gg-editor'; - -import MenuItem from './MenuItem'; -import styles from './index.less'; - -const FlowContextMenu = () => ( - - - - - - - - - - - - - - - - - - - - - - - - - -); - -export default FlowContextMenu; diff --git a/demo/src/pages/editor/mind/components/EditorContextMenu/KoniContextMenu.tsx b/demo/src/pages/editor/mind/components/EditorContextMenu/KoniContextMenu.tsx deleted file mode 100644 index 8b049a5e..00000000 --- a/demo/src/pages/editor/mind/components/EditorContextMenu/KoniContextMenu.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import FlowContextMenu from './FlowContextMenu'; - -export default FlowContextMenu; diff --git a/demo/src/pages/editor/mind/components/EditorContextMenu/MenuItem.tsx b/demo/src/pages/editor/mind/components/EditorContextMenu/MenuItem.tsx deleted file mode 100644 index 297967ab..00000000 --- a/demo/src/pages/editor/mind/components/EditorContextMenu/MenuItem.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { Command } from 'gg-editor'; -import React from 'react'; -import IconFont from '../../common/IconFont'; -import styles from './index.less'; - -const upperFirst = (str: string) => - str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); - -type MenuItemProps = { - command: string; - icon?: string; - text?: string; -}; -const MenuItem: React.FC = (props) => { - const { command, icon, text } = props; - - return ( - -
    - - {text || upperFirst(command)} -
    -
    - ); -}; - -export default MenuItem; diff --git a/demo/src/pages/editor/mind/components/EditorContextMenu/MindContextMenu.tsx b/demo/src/pages/editor/mind/components/EditorContextMenu/MindContextMenu.tsx deleted file mode 100644 index 5a8b4076..00000000 --- a/demo/src/pages/editor/mind/components/EditorContextMenu/MindContextMenu.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { CanvasMenu, ContextMenu, NodeMenu } from 'gg-editor'; - -import MenuItem from './MenuItem'; -import styles from './index.less'; - -const MindContextMenu = () => ( - - - - - - - - - - - - - -); - -export default MindContextMenu; diff --git a/demo/src/pages/editor/mind/components/EditorContextMenu/index.less b/demo/src/pages/editor/mind/components/EditorContextMenu/index.less deleted file mode 100644 index 25d68b2c..00000000 --- a/demo/src/pages/editor/mind/components/EditorContextMenu/index.less +++ /dev/null @@ -1,40 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.contextMenu { - display: none; - overflow: hidden; - background: @component-background; - border-radius: 4px; - box-shadow: @box-shadow-base; - .item { - display: flex; - align-items: center; - padding: 5px 12px; - cursor: pointer; - transition: all 0.3s; - user-select: none; - - &:hover { - background: @select-item-selected-bg; - } - - .anticon { - margin-right: 8px; - } - } - - :global { - .disable { - :local { - .item { - color: @disabled-color; - cursor: auto; - - &:hover { - background: @item-hover-bg; - } - } - } - } - } -} diff --git a/demo/src/pages/editor/mind/components/EditorContextMenu/index.tsx b/demo/src/pages/editor/mind/components/EditorContextMenu/index.tsx deleted file mode 100644 index 6ee93423..00000000 --- a/demo/src/pages/editor/mind/components/EditorContextMenu/index.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import FlowContextMenu from './FlowContextMenu'; -import KoniContextMenu from './KoniContextMenu'; -import MindContextMenu from './MindContextMenu'; - -export { FlowContextMenu, MindContextMenu, KoniContextMenu }; diff --git a/demo/src/pages/editor/mind/components/EditorDetailPanel/DetailForm.tsx b/demo/src/pages/editor/mind/components/EditorDetailPanel/DetailForm.tsx deleted file mode 100644 index c89265b6..00000000 --- a/demo/src/pages/editor/mind/components/EditorDetailPanel/DetailForm.tsx +++ /dev/null @@ -1,114 +0,0 @@ -import React from 'react'; -import { Card, Input, Select, Form } from 'antd'; -import { withPropsAPI } from 'gg-editor'; - -const upperFirst = (str: string) => - str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); - -const { Item } = Form; -const { Option } = Select; - -const inlineFormItemLayout = { - labelCol: { - sm: { span: 8 }, - }, - wrapperCol: { - sm: { span: 16 }, - }, -}; - -type DetailFormProps = { - type: string; - propsAPI?: any; -}; - -class DetailForm extends React.Component { - get item() { - const { propsAPI } = this.props; - return propsAPI.getSelected()[0]; - } - - handleFieldChange = (values: any) => { - const { propsAPI } = this.props; - const { getSelected, executeCommand, update } = propsAPI; - - setTimeout(() => { - const item = getSelected()[0]; - if (!item) { - return; - } - executeCommand(() => { - update(item, { - ...values, - }); - }); - }, 0); - }; - - handleInputBlur = (type: string) => (e: React.FormEvent) => { - e.preventDefault(); - this.handleFieldChange({ - [type]: e.currentTarget.value, - }); - }; - - renderNodeDetail = () => { - const { label } = this.item.getModel(); - - return ( -
    - - - - - ); - }; - - renderEdgeDetail = () => { - const { label = '', shape = 'flow-smooth' } = this.item.getModel(); - - return ( -
    - - - - - - - - ); - }; - - renderGroupDetail = () => { - const { label = '新建分组' } = this.item.getModel(); - - return ( -
    - - - - - ); - }; - - render() { - const { type } = this.props; - if (!this.item) { - return null; - } - - return ( - - {type === 'node' && this.renderNodeDetail()} - {type === 'edge' && this.renderEdgeDetail()} - {type === 'group' && this.renderGroupDetail()} - - ); - } -} - -export default withPropsAPI(DetailForm as any); diff --git a/demo/src/pages/editor/mind/components/EditorDetailPanel/FlowDetailPanel.tsx b/demo/src/pages/editor/mind/components/EditorDetailPanel/FlowDetailPanel.tsx deleted file mode 100644 index bb7035c9..00000000 --- a/demo/src/pages/editor/mind/components/EditorDetailPanel/FlowDetailPanel.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { CanvasPanel, DetailPanel, EdgePanel, GroupPanel, MultiPanel, NodePanel } from 'gg-editor'; - -import { Card } from 'antd'; -import DetailForm from './DetailForm'; -import styles from './index.less'; - -const FlowDetailPanel = () => ( - - - - - - - - - - - - - - - - - -); - -export default FlowDetailPanel; diff --git a/demo/src/pages/editor/mind/components/EditorDetailPanel/KoniDetailPanel.tsx b/demo/src/pages/editor/mind/components/EditorDetailPanel/KoniDetailPanel.tsx deleted file mode 100644 index 18aea9a4..00000000 --- a/demo/src/pages/editor/mind/components/EditorDetailPanel/KoniDetailPanel.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import FlowDetailPanel from './FlowDetailPanel'; - -export default FlowDetailPanel; diff --git a/demo/src/pages/editor/mind/components/EditorDetailPanel/MindDetailPanel.tsx b/demo/src/pages/editor/mind/components/EditorDetailPanel/MindDetailPanel.tsx deleted file mode 100644 index dceaf36e..00000000 --- a/demo/src/pages/editor/mind/components/EditorDetailPanel/MindDetailPanel.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { CanvasPanel, DetailPanel, NodePanel } from 'gg-editor'; - -import { Card } from 'antd'; -import DetailForm from './DetailForm'; -import styles from './index.less'; - -const MindDetailPanel = () => ( - - - - - - - - -); - -export default MindDetailPanel; diff --git a/demo/src/pages/editor/mind/components/EditorDetailPanel/index.less b/demo/src/pages/editor/mind/components/EditorDetailPanel/index.less deleted file mode 100644 index 0b2c564b..00000000 --- a/demo/src/pages/editor/mind/components/EditorDetailPanel/index.less +++ /dev/null @@ -1,6 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.detailPanel { - flex: 1; - background-color: @component-background; -} diff --git a/demo/src/pages/editor/mind/components/EditorDetailPanel/index.tsx b/demo/src/pages/editor/mind/components/EditorDetailPanel/index.tsx deleted file mode 100644 index 50aa37a8..00000000 --- a/demo/src/pages/editor/mind/components/EditorDetailPanel/index.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import FlowDetailPanel from './FlowDetailPanel'; -import KoniDetailPanel from './KoniDetailPanel'; -import MindDetailPanel from './MindDetailPanel'; - -export { FlowDetailPanel, MindDetailPanel, KoniDetailPanel }; diff --git a/demo/src/pages/editor/mind/components/EditorItemPanel/FlowItemPanel.tsx b/demo/src/pages/editor/mind/components/EditorItemPanel/FlowItemPanel.tsx deleted file mode 100644 index c7dcbe60..00000000 --- a/demo/src/pages/editor/mind/components/EditorItemPanel/FlowItemPanel.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { Item, ItemPanel } from 'gg-editor'; - -import { Card } from 'antd'; -import styles from './index.less'; - -const FlowItemPanel = () => ( - - - - - - - - -); - -export default FlowItemPanel; diff --git a/demo/src/pages/editor/mind/components/EditorItemPanel/KoniItemPanel.tsx b/demo/src/pages/editor/mind/components/EditorItemPanel/KoniItemPanel.tsx deleted file mode 100644 index 3901d292..00000000 --- a/demo/src/pages/editor/mind/components/EditorItemPanel/KoniItemPanel.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import { Item, ItemPanel } from 'gg-editor'; - -import { Card } from 'antd'; -import styles from './index.less'; - -const KoniItemPanel = () => ( - - - - - - - -); - -export default KoniItemPanel; diff --git a/demo/src/pages/editor/mind/components/EditorItemPanel/index.less b/demo/src/pages/editor/mind/components/EditorItemPanel/index.less deleted file mode 100644 index b594a66b..00000000 --- a/demo/src/pages/editor/mind/components/EditorItemPanel/index.less +++ /dev/null @@ -1,19 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.itemPanel { - flex: 1; - - :global { - .ant-card { - height: 100%; - } - .ant-card-body { - display: flex; - flex-direction: column; - align-items: center; - > div { - margin-bottom: 16px; - } - } - } -} diff --git a/demo/src/pages/editor/mind/components/EditorItemPanel/index.tsx b/demo/src/pages/editor/mind/components/EditorItemPanel/index.tsx deleted file mode 100644 index 2ba03fbb..00000000 --- a/demo/src/pages/editor/mind/components/EditorItemPanel/index.tsx +++ /dev/null @@ -1,4 +0,0 @@ -import FlowItemPanel from './FlowItemPanel'; -import KoniItemPanel from './KoniItemPanel'; - -export { FlowItemPanel, KoniItemPanel }; diff --git a/demo/src/pages/editor/mind/components/EditorMinimap/index.tsx b/demo/src/pages/editor/mind/components/EditorMinimap/index.tsx deleted file mode 100644 index b337edbf..00000000 --- a/demo/src/pages/editor/mind/components/EditorMinimap/index.tsx +++ /dev/null @@ -1,10 +0,0 @@ -import { Card } from 'antd'; -import { Minimap } from 'gg-editor'; - -const EditorMinimap = () => ( - - - -); - -export default EditorMinimap; diff --git a/demo/src/pages/editor/mind/components/EditorToolbar/FlowToolbar.tsx b/demo/src/pages/editor/mind/components/EditorToolbar/FlowToolbar.tsx deleted file mode 100644 index 90494876..00000000 --- a/demo/src/pages/editor/mind/components/EditorToolbar/FlowToolbar.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { Divider } from 'antd'; -import { Toolbar } from 'gg-editor'; -import ToolbarButton from './ToolbarButton'; -import styles from './index.less'; - -const FlowToolbar = () => ( - - - - - - - - - - - - - - - - - - - - -); - -export default FlowToolbar; diff --git a/demo/src/pages/editor/mind/components/EditorToolbar/KoniToolbar.tsx b/demo/src/pages/editor/mind/components/EditorToolbar/KoniToolbar.tsx deleted file mode 100644 index f222007a..00000000 --- a/demo/src/pages/editor/mind/components/EditorToolbar/KoniToolbar.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import FlowToolbar from './FlowToolbar'; - -export default FlowToolbar; diff --git a/demo/src/pages/editor/mind/components/EditorToolbar/MindToolbar.tsx b/demo/src/pages/editor/mind/components/EditorToolbar/MindToolbar.tsx deleted file mode 100644 index 23761093..00000000 --- a/demo/src/pages/editor/mind/components/EditorToolbar/MindToolbar.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { Divider } from 'antd'; -import { Toolbar } from 'gg-editor'; -import ToolbarButton from './ToolbarButton'; -import styles from './index.less'; - -const FlowToolbar = () => ( - - - - - - - - - - - - - - - -); - -export default FlowToolbar; diff --git a/demo/src/pages/editor/mind/components/EditorToolbar/ToolbarButton.tsx b/demo/src/pages/editor/mind/components/EditorToolbar/ToolbarButton.tsx deleted file mode 100644 index 94f9e9c6..00000000 --- a/demo/src/pages/editor/mind/components/EditorToolbar/ToolbarButton.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { Command } from 'gg-editor'; -import React from 'react'; -import { Tooltip } from 'antd'; -import IconFont from '../../common/IconFont'; -import styles from './index.less'; - -const upperFirst = (str: string) => - str.toLowerCase().replace(/( |^)[a-z]/g, (l: string) => l.toUpperCase()); - -type ToolbarButtonProps = { - command: string; - icon?: string; - text?: string; -}; -const ToolbarButton: React.FC = (props) => { - const { command, icon, text } = props; - - return ( - - - - - - ); -}; - -export default ToolbarButton; diff --git a/demo/src/pages/editor/mind/components/EditorToolbar/index.less b/demo/src/pages/editor/mind/components/EditorToolbar/index.less deleted file mode 100644 index d9e98d1f..00000000 --- a/demo/src/pages/editor/mind/components/EditorToolbar/index.less +++ /dev/null @@ -1,40 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.toolbar { - display: flex; - align-items: center; - - :global { - .command .anticon { - display: inline-block; - width: 27px; - height: 27px; - margin: 0 6px; - padding-top: 6px; - text-align: center; - cursor: pointer; - - &:hover { - border: 1px solid @item-active-bg; - } - } - - .disable .anticon { - color: @text-color-secondary; - cursor: auto; - - &:hover { - border: 1px solid @border-color-base; - } - } - } -} - -.tooltip { - :global { - .ant-tooltip-inner { - font-size: 12px; - border-radius: 0; - } - } -} diff --git a/demo/src/pages/editor/mind/components/EditorToolbar/index.tsx b/demo/src/pages/editor/mind/components/EditorToolbar/index.tsx deleted file mode 100644 index 58f1d277..00000000 --- a/demo/src/pages/editor/mind/components/EditorToolbar/index.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import FlowToolbar from './FlowToolbar'; -import KoniToolbar from './KoniToolbar'; -import MindToolbar from './MindToolbar'; - -export { FlowToolbar, MindToolbar, KoniToolbar }; diff --git a/demo/src/pages/editor/mind/index.less b/demo/src/pages/editor/mind/index.less deleted file mode 100644 index 42923fcb..00000000 --- a/demo/src/pages/editor/mind/index.less +++ /dev/null @@ -1,56 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.editor { - display: flex; - flex: 1; - flex-direction: column; - width: 100%; - height: calc(100vh - 250px); - background: @descriptions-bg; -} - -.editorHd { - padding: 8px; - background: @descriptions-bg; - border: 1px solid @item-active-bg; -} - -.editorBd { - flex: 1; -} - -.editorSidebar, -.editorContent { - display: flex; - flex-direction: column; -} - -.editorContent { - :global { - .graph-container canvas { - vertical-align: middle; - } - } -} - -.editorSidebar { - background: @descriptions-bg; - :global { - .g6-editor-minimap-container { - background: none !important ; - } - } - &:first-child { - border-right: 1px solid @item-active-bg; - } - - &:last-child { - border-left: 1px solid @item-active-bg; - } -} - -.flow, -.mind, -.koni { - flex: 1; -} diff --git a/demo/src/pages/editor/mind/index.tsx b/demo/src/pages/editor/mind/index.tsx deleted file mode 100644 index 0760684d..00000000 --- a/demo/src/pages/editor/mind/index.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import { Col, Row } from 'antd'; -import GGEditor, { Mind } from 'gg-editor'; - -import { PageContainer } from '@ant-design/pro-layout'; -import EditorMinimap from './components/EditorMinimap'; -import { MindContextMenu } from './components/EditorContextMenu'; -import { MindDetailPanel } from './components/EditorDetailPanel'; -import { MindToolbar } from './components/EditorToolbar'; -import data from './worldCup2018.json'; -import styles from './index.less'; - -GGEditor.setTrackable(false); - -export default () => ( - - - -
    - - - - - - - - - - - - - - - -); diff --git a/demo/src/pages/editor/mind/worldCup2018.json b/demo/src/pages/editor/mind/worldCup2018.json deleted file mode 100644 index 44f3e63f..00000000 --- a/demo/src/pages/editor/mind/worldCup2018.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "roots": [ - { - "label": "法国", - "children": [ - { - "label": "克罗地亚", - "side": "left", - "children": [ - { - "label": "克罗地亚", - "children": [ - { - "label": "克罗地亚", - "children": [ - { - "label": "克罗地亚" - }, - { - "label": "丹麦" - } - ] - }, - { - "label": "俄罗斯", - "children": [ - { - "label": "俄罗斯" - }, - { - "label": "西班牙" - } - ] - } - ] - }, - { - "label": "英格兰", - "children": [ - { - "label": "英格兰", - "children": [ - { - "label": "英格兰" - }, - { - "label": "哥伦比亚" - } - ] - }, - { - "label": "瑞典", - "children": [ - { - "label": "瑞士" - }, - { - "label": "瑞典" - } - ] - } - ] - } - ] - }, - { - "label": "法国", - "side": "right", - "children": [ - { - "label": "法国", - "children": [ - { - "label": "法国", - "children": [ - { - "label": "法国" - }, - { - "label": "阿根廷" - } - ] - }, - { - "label": "乌拉圭", - "children": [ - { - "label": "乌拉圭" - }, - { - "label": "葡萄牙" - } - ] - } - ] - }, - { - "label": "比利时", - "children": [ - { - "label": "比利时", - "children": [ - { - "label": "比利时" - }, - { - "label": "日本" - } - ] - }, - { - "label": "巴西", - "children": [ - { - "label": "巴西" - }, - { - "label": "墨西哥" - } - ] - } - ] - } - ] - } - ] - } - ] -} diff --git a/demo/src/pages/exception/403/index.tsx b/demo/src/pages/exception/403/index.tsx deleted file mode 100644 index 1c73f934..00000000 --- a/demo/src/pages/exception/403/index.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Link } from 'umi'; -import { Result, Button } from 'antd'; - -export default () => ( - - - - } - /> -); diff --git a/demo/src/pages/exception/404/index.tsx b/demo/src/pages/exception/404/index.tsx deleted file mode 100644 index 60473b3f..00000000 --- a/demo/src/pages/exception/404/index.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Link } from 'umi'; -import { Result, Button } from 'antd'; - -export default () => ( - - - - } - /> -); diff --git a/demo/src/pages/exception/500/index.tsx b/demo/src/pages/exception/500/index.tsx deleted file mode 100644 index 44efc5b2..00000000 --- a/demo/src/pages/exception/500/index.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Link } from 'umi'; -import { Result, Button } from 'antd'; - -export default () => ( - - - - } - /> -); diff --git a/demo/src/pages/form/advanced-form/_mock.ts b/demo/src/pages/form/advanced-form/_mock.ts deleted file mode 100644 index 67f34e09..00000000 --- a/demo/src/pages/form/advanced-form/_mock.ts +++ /dev/null @@ -1,8 +0,0 @@ -// eslint-disable-next-line import/no-extraneous-dependencies -import type { Request, Response } from 'express'; - -export default { - 'POST /api/advancedForm': (_: Request, res: Response) => { - res.send({ data: { message: 'Ok' } }); - }, -}; diff --git a/demo/src/pages/form/advanced-form/components/TableForm.tsx b/demo/src/pages/form/advanced-form/components/TableForm.tsx deleted file mode 100644 index 26059b67..00000000 --- a/demo/src/pages/form/advanced-form/components/TableForm.tsx +++ /dev/null @@ -1,257 +0,0 @@ -import { PlusOutlined } from '@ant-design/icons'; -import { Button, Divider, Input, Popconfirm, Table, message } from 'antd'; -import type { FC } from 'react'; -import React, { useState } from 'react'; - -import styles from '../style.less'; - -type TableFormDateType = { - key: string; - workId?: string; - name?: string; - department?: string; - isNew?: boolean; - editable?: boolean; -}; -type TableFormProps = { - value?: TableFormDateType[]; - onChange?: (value: TableFormDateType[]) => void; -}; - -const TableForm: FC = ({ value, onChange }) => { - const [clickedCancel, setClickedCancel] = useState(false); - const [loading, setLoading] = useState(false); - const [index, setIndex] = useState(0); - const [cacheOriginData, setCacheOriginData] = useState({}); - const [data, setData] = useState(value); - - const getRowByKey = (key: string, newData?: TableFormDateType[]) => - (newData || data)?.filter((item) => item.key === key)[0]; - - const toggleEditable = (e: React.MouseEvent | React.KeyboardEvent, key: string) => { - e.preventDefault(); - const newData = data?.map((item) => ({ ...item })); - const target = getRowByKey(key, newData); - if (target) { - // 进入编辑状态时保存原始数据 - if (!target.editable) { - cacheOriginData[key] = { ...target }; - setCacheOriginData(cacheOriginData); - } - target.editable = !target.editable; - setData(newData); - } - }; - const newMember = () => { - const newData = data?.map((item) => ({ ...item })) || []; - - newData.push({ - key: `NEW_TEMP_ID_${index}`, - workId: '', - name: '', - department: '', - editable: true, - isNew: true, - }); - - setIndex(index + 1); - setData(newData); - }; - - const remove = (key: string) => { - const newData = data?.filter((item) => item.key !== key) as TableFormDateType[]; - setData(newData); - if (onChange) { - onChange(newData); - } - }; - - const handleFieldChange = ( - e: React.ChangeEvent, - fieldName: string, - key: string, - ) => { - const newData = [...(data as TableFormDateType[])]; - const target = getRowByKey(key, newData); - if (target) { - target[fieldName] = e.target.value; - setData(newData); - } - }; - - const saveRow = (e: React.MouseEvent | React.KeyboardEvent, key: string) => { - e.persist(); - setLoading(true); - setTimeout(() => { - if (clickedCancel) { - setClickedCancel(false); - return; - } - const target = getRowByKey(key) || ({} as any); - if (!target.workId || !target.name || !target.department) { - message.error('请填写完整成员信息。'); - (e.target as HTMLInputElement).focus(); - setLoading(false); - return; - } - delete target.isNew; - toggleEditable(e, key); - if (onChange) { - onChange(data as TableFormDateType[]); - } - setLoading(false); - }, 500); - }; - - const handleKeyPress = (e: React.KeyboardEvent, key: string) => { - if (e.key === 'Enter') { - saveRow(e, key); - } - }; - - const cancel = (e: React.MouseEvent, key: string) => { - setClickedCancel(true); - e.preventDefault(); - const newData = [...(data as TableFormDateType[])]; - // 编辑前的原始数据 - let cacheData = []; - cacheData = newData.map((item) => { - if (item.key === key) { - if (cacheOriginData[key]) { - const originItem = { - ...item, - ...cacheOriginData[key], - editable: false, - }; - delete cacheOriginData[key]; - setCacheOriginData(cacheOriginData); - return originItem; - } - } - return item; - }); - setData(cacheData); - setClickedCancel(false); - }; - - const columns = [ - { - title: '成员姓名', - dataIndex: 'name', - key: 'name', - width: '20%', - render: (text: string, record: TableFormDateType) => { - if (record.editable) { - return ( - handleFieldChange(e, 'name', record.key)} - onKeyPress={(e) => handleKeyPress(e, record.key)} - placeholder="成员姓名" - /> - ); - } - return text; - }, - }, - { - title: '工号', - dataIndex: 'workId', - key: 'workId', - width: '20%', - render: (text: string, record: TableFormDateType) => { - if (record.editable) { - return ( - handleFieldChange(e, 'workId', record.key)} - onKeyPress={(e) => handleKeyPress(e, record.key)} - placeholder="工号" - /> - ); - } - return text; - }, - }, - { - title: '所属部门', - dataIndex: 'department', - key: 'department', - width: '40%', - render: (text: string, record: TableFormDateType) => { - if (record.editable) { - return ( - handleFieldChange(e, 'department', record.key)} - onKeyPress={(e) => handleKeyPress(e, record.key)} - placeholder="所属部门" - /> - ); - } - return text; - }, - }, - { - title: '操作', - key: 'action', - render: (text: string, record: TableFormDateType) => { - if (!!record.editable && loading) { - return null; - } - if (record.editable) { - if (record.isNew) { - return ( - - saveRow(e, record.key)}>添加 - - remove(record.key)}> - 删除 - - - ); - } - return ( - - saveRow(e, record.key)}>保存 - - cancel(e, record.key)}>取消 - - ); - } - return ( - - toggleEditable(e, record.key)}>编辑 - - remove(record.key)}> - 删除 - - - ); - }, - }, - ]; - - return ( - <> - - loading={loading} - columns={columns} - dataSource={data} - pagination={false} - rowClassName={(record) => (record.editable ? styles.editable : '')} - /> - - - ); -}; - -export default TableForm; diff --git a/demo/src/pages/form/advanced-form/index.tsx b/demo/src/pages/form/advanced-form/index.tsx deleted file mode 100644 index b2b860b3..00000000 --- a/demo/src/pages/form/advanced-form/index.tsx +++ /dev/null @@ -1,386 +0,0 @@ -import { CloseCircleOutlined } from '@ant-design/icons'; -import { Card, Col, Popover, Row, message } from 'antd'; - -import type { FC } from 'react'; -import { useState } from 'react'; -import ProForm, { - ProFormDateRangePicker, - ProFormSelect, - ProFormText, - ProFormTimePicker, -} from '@ant-design/pro-form'; -import type { ProColumnType } from '@ant-design/pro-table'; -import { EditableProTable } from '@ant-design/pro-table'; -import { PageContainer, FooterToolbar } from '@ant-design/pro-layout'; -import { fakeSubmitForm } from './service'; -import styles from './style.less'; - -interface TableFormDateType { - key: string; - workId?: string; - name?: string; - department?: string; - isNew?: boolean; - editable?: boolean; -} -type InternalNamePath = (string | number)[]; - -const fieldLabels = { - name: '仓库名', - url: '仓库域名', - owner: '仓库管理员', - approver: '审批人', - dateRange: '生效日期', - type: '仓库类型', - name2: '任务名', - url2: '任务描述', - owner2: '执行人', - approver2: '责任人', - dateRange2: '生效日期', - type2: '任务类型', -}; - -const tableData = [ - { - key: '1', - workId: '00001', - name: 'John Brown', - department: 'New York No. 1 Lake Park', - }, - { - key: '2', - workId: '00002', - name: 'Jim Green', - department: 'London No. 1 Lake Park', - }, - { - key: '3', - workId: '00003', - name: 'Joe Black', - department: 'Sidney No. 1 Lake Park', - }, -]; - -interface ErrorField { - name: InternalNamePath; - errors: string[]; -} - -const AdvancedForm: FC> = () => { - const [error, setError] = useState([]); - const getErrorInfo = (errors: ErrorField[]) => { - const errorCount = errors.filter((item) => item.errors.length > 0).length; - if (!errors || errorCount === 0) { - return null; - } - const scrollToField = (fieldKey: string) => { - const labelNode = document.querySelector(`label[for="${fieldKey}"]`); - if (labelNode) { - labelNode.scrollIntoView(true); - } - }; - const errorList = errors.map((err) => { - if (!err || err.errors.length === 0) { - return null; - } - const key = err.name[0] as string; - return ( -
  • scrollToField(key)}> - -
    {err.errors[0]}
    -
    {fieldLabels[key]}
    -
  • - ); - }); - return ( - - { - if (trigger && trigger.parentNode) { - return trigger.parentNode as HTMLElement; - } - return trigger; - }} - > - - - {errorCount} - - ); - }; - - const onFinish = async (values: Record) => { - setError([]); - try { - await fakeSubmitForm(values); - message.success('提交成功'); - } catch { - // console.log - } - }; - - const onFinishFailed = (errorInfo: any) => { - setError(errorInfo.errorFields); - }; - - const columns: ProColumnType[] = [ - { - title: '成员姓名', - dataIndex: 'name', - key: 'name', - width: '20%', - }, - { - title: '工号', - dataIndex: 'workId', - key: 'workId', - width: '20%', - }, - { - title: '所属部门', - dataIndex: 'department', - key: 'department', - width: '40%', - }, - { - title: '操作', - key: 'action', - valueType: 'option', - render: (_, record: TableFormDateType, index, action) => { - return [ - { - action?.startEditable(record.key); - }} - > - 编辑 - , - ]; - }, - }, - ]; - - return ( - { - return ( - - {getErrorInfo(error)} - {dom} - - ); - }, - }} - initialValues={{ members: tableData }} - onFinish={onFinish} - onFinishFailed={onFinishFailed} - > - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - recordCreatorProps={{ - record: () => { - return { - key: `0${Date.now()}`, - }; - }, - }} - columns={columns} - rowKey="key" - /> - - - - - ); -}; - -export default AdvancedForm; diff --git a/demo/src/pages/form/advanced-form/service.ts b/demo/src/pages/form/advanced-form/service.ts deleted file mode 100644 index dd58aff5..00000000 --- a/demo/src/pages/form/advanced-form/service.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { request } from 'umi'; - -export async function fakeSubmitForm(params: any) { - return request('/api/advancedForm', { - method: 'POST', - data: params, - }); -} diff --git a/demo/src/pages/form/advanced-form/style.less b/demo/src/pages/form/advanced-form/style.less deleted file mode 100644 index e83ac949..00000000 --- a/demo/src/pages/form/advanced-form/style.less +++ /dev/null @@ -1,65 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.card { - margin-bottom: 24px; - - :global { - .ant-legacy-form-item .ant-legacy-form-item-control-wrapper { - width: 100%; - } - } -} - -.errorIcon { - margin-right: 24px; - color: @error-color; - cursor: pointer; - - span.anticon { - margin-right: 4px; - } -} - -.errorPopover { - :global { - .ant-popover-inner-content { - min-width: 256px; - max-height: 290px; - padding: 0; - overflow: auto; - } - } -} - -.errorListItem { - padding: 8px 16px; - list-style: none; - border-bottom: 1px solid @border-color-split; - cursor: pointer; - transition: all 0.3s; - &:hover { - background: @item-active-bg; - } - &:last-child { - border: 0; - } - .errorIcon { - float: left; - margin-top: 4px; - margin-right: 12px; - padding-bottom: 22px; - color: @error-color; - } - .errorField { - margin-top: 2px; - color: @text-color-secondary; - font-size: 12px; - } -} - -.editable { - td { - padding-top: 13px !important; - padding-bottom: 12.5px !important; - } -} diff --git a/demo/src/pages/form/basic-form/_mock.ts b/demo/src/pages/form/basic-form/_mock.ts deleted file mode 100644 index 2a5a4779..00000000 --- a/demo/src/pages/form/basic-form/_mock.ts +++ /dev/null @@ -1,8 +0,0 @@ -// eslint-disable-next-line import/no-extraneous-dependencies -import type { Request, Response } from 'express'; - -export default { - 'POST /api/basicForm': (_: Request, res: Response) => { - res.send({ data: { message: 'Ok' } }); - }, -}; diff --git a/demo/src/pages/form/basic-form/index.tsx b/demo/src/pages/form/basic-form/index.tsx deleted file mode 100644 index d1e44831..00000000 --- a/demo/src/pages/form/basic-form/index.tsx +++ /dev/null @@ -1,188 +0,0 @@ -import { Card, message } from 'antd'; -import ProForm, { - ProFormDateRangePicker, - ProFormDependency, - ProFormDigit, - ProFormRadio, - ProFormSelect, - ProFormText, - ProFormTextArea, -} from '@ant-design/pro-form'; -import { useRequest } from 'umi'; -import type { FC } from 'react'; -import { PageContainer } from '@ant-design/pro-layout'; -import { fakeSubmitForm } from './service'; -import styles from './style.less'; - -const BasicForm: FC> = () => { - const { run } = useRequest(fakeSubmitForm, { - manual: true, - onSuccess: () => { - message.success('提交成功'); - }, - }); - - const onFinish = async (values: Record) => { - run(values); - }; - - return ( - - - - - - - - - - - 客户 - (选填) - - } - tooltip="目标的服务对象" - name="client" - placeholder="请描述你服务的客户,内部客户直接 @姓名/工号" - /> - - - 邀评人 - (选填) - - } - name="invites" - placeholder="请直接 @姓名/工号,最多可邀请 5 人" - /> - - - 权重 - (选填) - - } - name="weight" - placeholder="请输入" - min={0} - max={100} - width="xs" - fieldProps={{ - formatter: (value) => `${value || 0}%`, - parser: (value) => (value ? value.replace('%', '') : '0'), - }} - /> - - - - {({ publicType }) => { - return ( - - ); - }} - - - - - ); -}; - -export default BasicForm; diff --git a/demo/src/pages/form/basic-form/service.ts b/demo/src/pages/form/basic-form/service.ts deleted file mode 100644 index b2648f0c..00000000 --- a/demo/src/pages/form/basic-form/service.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { request } from 'umi'; - -export async function fakeSubmitForm(params: any) { - return request('/api/basicForm', { - method: 'POST', - data: params, - }); -} diff --git a/demo/src/pages/form/basic-form/style.less b/demo/src/pages/form/basic-form/style.less deleted file mode 100644 index 60a374ba..00000000 --- a/demo/src/pages/form/basic-form/style.less +++ /dev/null @@ -1,6 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.optional { - color: @text-color-secondary; - font-style: normal; -} diff --git a/demo/src/pages/form/step-form/_mock.ts b/demo/src/pages/form/step-form/_mock.ts deleted file mode 100644 index dac59aba..00000000 --- a/demo/src/pages/form/step-form/_mock.ts +++ /dev/null @@ -1,8 +0,0 @@ -// eslint-disable-next-line import/no-extraneous-dependencies -import type { Request, Response } from 'express'; - -export default { - 'POST /api/stepForm': (_: Request, res: Response) => { - res.send({ data: { message: 'Ok' } }); - }, -}; diff --git a/demo/src/pages/form/step-form/data.d.ts b/demo/src/pages/form/step-form/data.d.ts deleted file mode 100644 index 4bddb0c8..00000000 --- a/demo/src/pages/form/step-form/data.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface StepDataType { - payAccount: string; - receiverAccount: string; - receiverName: string; - amount: string; - receiverMode: string; -} - -export type CurrentTypes = 'base' | 'confirm' | 'result'; diff --git a/demo/src/pages/form/step-form/index.tsx b/demo/src/pages/form/step-form/index.tsx deleted file mode 100644 index e374dc3e..00000000 --- a/demo/src/pages/form/step-form/index.tsx +++ /dev/null @@ -1,196 +0,0 @@ -import React, { useRef, useState } from 'react'; -import type { FormInstance } from 'antd'; -import { Card, Result, Button, Descriptions, Divider, Alert, Statistic } from 'antd'; -import { PageContainer } from '@ant-design/pro-layout'; -import ProForm, { ProFormDigit, ProFormSelect, ProFormText, StepsForm } from '@ant-design/pro-form'; -import type { StepDataType } from './data.d'; -import styles from './style.less'; - -const StepDescriptions: React.FC<{ - stepData: StepDataType; - bordered?: boolean; -}> = ({ stepData, bordered }) => { - const { payAccount, receiverAccount, receiverName, amount } = stepData; - return ( - - {payAccount} - {receiverAccount} - {receiverName} - - - 元 - - } - precision={2} - /> - - - ); -}; - -const StepResult: React.FC<{ - onFinish: () => Promise; -}> = (props) => { - return ( - - - - - } - className={styles.result} - > - {props.children} - - ); -}; - -const StepForm: React.FC> = () => { - const [stepData, setStepData] = useState({ - payAccount: 'ant-design@alipay.com', - receiverAccount: 'test@example.com', - receiverName: 'Alex', - amount: '500', - receiverMode: 'alipay', - }); - const [current, setCurrent] = useState(0); - const formRef = useRef(); - - return ( - - - { - if (props.step === 2) { - return null; - } - return dom; - }, - }} - > - - formRef={formRef} - title="填写转账信息" - initialValues={stepData} - onFinish={async (values) => { - setStepData(values); - return true; - }} - > - - - - - - - - - - - -
    - - - - -
    -
    - - { - setCurrent(0); - formRef.current?.resetFields(); - }} - > - - - -
    - -
    -

    说明

    -

    转账到支付宝账户

    -

    - 如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。 -

    -

    转账到银行卡

    -

    - 如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。如果需要,这里可以放一些关于产品的常见问题说明。 -

    -
    -
    -
    - ); -}; - -export default StepForm; diff --git a/demo/src/pages/form/step-form/service.ts b/demo/src/pages/form/step-form/service.ts deleted file mode 100644 index 51237c74..00000000 --- a/demo/src/pages/form/step-form/service.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { request } from 'umi'; - -export async function fakeSubmitForm(params: any) { - return request('/api/stepForm', { - method: 'POST', - data: params, - }); -} diff --git a/demo/src/pages/form/step-form/style.less b/demo/src/pages/form/step-form/style.less deleted file mode 100644 index 443eb2ef..00000000 --- a/demo/src/pages/form/step-form/style.less +++ /dev/null @@ -1,11 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.card { - margin-bottom: 24px; -} - -.result { - max-width: 560px; - margin: 0 auto; - padding: 24px 0 8px; -} diff --git a/demo/src/pages/list/basic-list/_mock.ts b/demo/src/pages/list/basic-list/_mock.ts deleted file mode 100644 index 438153b5..00000000 --- a/demo/src/pages/list/basic-list/_mock.ts +++ /dev/null @@ -1,160 +0,0 @@ -// eslint-disable-next-line import/no-extraneous-dependencies -import type { Request, Response } from 'express'; -import type { BasicListItemDataType } from './data.d'; - -const titles = [ - 'Alipay', - 'Angular', - 'Ant Design', - 'Ant Design Pro', - 'Bootstrap', - 'React', - 'Vue', - 'Webpack', -]; -const avatars = [ - 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', // Alipay - 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', // Angular - 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', // Ant Design - 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', // Ant Design Pro - 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', // Bootstrap - 'https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png', // React - 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', // Vue - 'https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png', // Webpack -]; - -const covers = [ - 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png', - 'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png', - 'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png', - 'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png', -]; -const desc = [ - '那是一种内在的东西, 他们到达不了,也无法触及的', - '希望是一个好东西,也许是最好的,好东西是不会消亡的', - '生命就像一盒巧克力,结果往往出人意料', - '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆', - '那时候我只会想自己想要什么,从不想自己拥有什么', -]; - -const user = [ - '付小小', - '曲丽丽', - '林东东', - '周星星', - '吴加好', - '朱偏右', - '鱼酱', - '乐哥', - '谭小仪', - '仲尼', -]; - -function fakeList(count: number): BasicListItemDataType[] { - const list = []; - for (let i = 0; i < count; i += 1) { - list.push({ - id: `fake-list-${i}`, - owner: user[i % 10], - title: titles[i % 8], - avatar: avatars[i % 8], - cover: parseInt(`${i / 4}`, 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)], - status: ['active', 'exception', 'normal'][i % 3] as - | 'normal' - | 'exception' - | 'active' - | 'success', - percent: Math.ceil(Math.random() * 50) + 50, - logo: avatars[i % 8], - href: 'https://ant.design', - updatedAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), - createdAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), - subDescription: desc[i % 5], - description: - '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。', - activeUser: Math.ceil(Math.random() * 100000) + 100000, - newUser: Math.ceil(Math.random() * 1000) + 1000, - star: Math.ceil(Math.random() * 100) + 100, - like: Math.ceil(Math.random() * 100) + 100, - message: Math.ceil(Math.random() * 10) + 10, - content: - '段落示意:蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。', - members: [ - { - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png', - name: '曲丽丽', - id: 'member1', - }, - { - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png', - name: '王昭君', - id: 'member2', - }, - { - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png', - name: '董娜娜', - id: 'member3', - }, - ], - }); - } - - return list; -} - -let sourceData: BasicListItemDataType[] = []; - -function getFakeList(req: Request, res: Response) { - const params = req.query as any; - - const count = Number(params.count) * 1 || 20; - - const result = fakeList(count); - sourceData = result; - return res.json({ - data: { - list: result, - }, - }); -} - -function postFakeList(req: Request, res: Response) { - const { /* url = '', */ body } = req; - // const params = getUrlParams(url); - const { method, id } = body; - // const count = (params.count * 1) || 20; - let result = sourceData || []; - - switch (method) { - case 'delete': - result = result.filter((item) => item.id !== id); - break; - case 'update': - result.forEach((item, i) => { - if (item.id === id) { - result[i] = { ...item, ...body }; - } - }); - break; - case 'post': - result.unshift({ - ...body, - id: `fake-list-${result.length}`, - createdAt: new Date().getTime(), - }); - break; - default: - break; - } - - return res.json({ - data: { - list: result, - }, - }); -} - -export default { - 'GET /api/get_list': getFakeList, - 'POST /api/post_fake_list': postFakeList, -}; diff --git a/demo/src/pages/list/basic-list/components/OperationModal.tsx b/demo/src/pages/list/basic-list/components/OperationModal.tsx deleted file mode 100644 index d524727d..00000000 --- a/demo/src/pages/list/basic-list/components/OperationModal.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import type { FC } from 'react'; -import { - ModalForm, - ProFormSelect, - ProFormDateTimePicker, - ProFormText, - ProFormTextArea, -} from '@ant-design/pro-form'; -import type { BasicListItemDataType } from '../data.d'; -import styles from '../style.less'; -import { Button, Result } from 'antd'; - -type OperationModalProps = { - done: boolean; - visible: boolean; - current: Partial | undefined; - onDone: () => void; - onSubmit: (values: BasicListItemDataType) => void; -}; - -const OperationModal: FC = (props) => { - const { done, visible, current, onDone, onSubmit, children } = props; - if (!visible) { - return null; - } - return ( - - visible={visible} - title={done ? null : `任务${current ? '编辑' : '添加'}`} - className={styles.standardListForm} - width={640} - onFinish={async (values) => { - onSubmit(values); - }} - initialValues={current} - submitter={{ - render: (_, dom) => (done ? null : dom), - }} - trigger={<>{children}} - modalProps={{ - onCancel: () => onDone(), - destroyOnClose: true, - bodyStyle: done ? { padding: '72px 0' } : {}, - }} - > - {!done ? ( - <> - - - - - - ) : ( - - 知道了 - - } - className={styles.formResult} - /> - )} - - ); -}; - -export default OperationModal; diff --git a/demo/src/pages/list/basic-list/data.d.ts b/demo/src/pages/list/basic-list/data.d.ts deleted file mode 100644 index f1cfa668..00000000 --- a/demo/src/pages/list/basic-list/data.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -export type Member = { - avatar: string; - name: string; - id: string; -}; - -export type BasicListItemDataType = { - id: string; - owner: string; - title: string; - avatar: string; - cover: string; - status: 'normal' | 'exception' | 'active' | 'success'; - percent: number; - logo: string; - href: string; - body?: any; - updatedAt: number; - createdAt: number; - subDescription: string; - description: string; - activeUser: number; - newUser: number; - star: number; - like: number; - message: number; - content: string; - members: Member[]; -}; diff --git a/demo/src/pages/list/basic-list/index.tsx b/demo/src/pages/list/basic-list/index.tsx deleted file mode 100644 index a0d03139..00000000 --- a/demo/src/pages/list/basic-list/index.tsx +++ /dev/null @@ -1,246 +0,0 @@ -import type { FC } from 'react'; -import React, { useState } from 'react'; -import { DownOutlined, PlusOutlined } from '@ant-design/icons'; -import { - Avatar, - Button, - Card, - Col, - Dropdown, - Input, - List, - Menu, - Modal, - Progress, - Radio, - Row, -} from 'antd'; - -import { PageContainer } from '@ant-design/pro-layout'; -import { useRequest } from 'umi'; -import moment from 'moment'; -import OperationModal from './components/OperationModal'; -import { addFakeList, queryFakeList, removeFakeList, updateFakeList } from './service'; -import type { BasicListItemDataType } from './data.d'; -import styles from './style.less'; - -const RadioButton = Radio.Button; -const RadioGroup = Radio.Group; -const { Search } = Input; - -const Info: FC<{ - title: React.ReactNode; - value: React.ReactNode; - bordered?: boolean; -}> = ({ title, value, bordered }) => ( -
    - {title} -

    {value}

    - {bordered && } -
    -); - -const ListContent = ({ - data: { owner, createdAt, percent, status }, -}: { - data: BasicListItemDataType; -}) => ( -
    -
    - Owner -

    {owner}

    -
    -
    - 开始时间 -

    {moment(createdAt).format('YYYY-MM-DD HH:mm')}

    -
    -
    - -
    -
    -); - -export const BasicList: FC = () => { - const [done, setDone] = useState(false); - const [visible, setVisible] = useState(false); - const [current, setCurrent] = useState | undefined>(undefined); - - const { - data: listData, - loading, - mutate, - } = useRequest(() => { - return queryFakeList({ - count: 50, - }); - }); - const { run: postRun } = useRequest( - (method, params) => { - if (method === 'remove') { - return removeFakeList(params); - } - if (method === 'update') { - return updateFakeList(params); - } - return addFakeList(params); - }, - { - manual: true, - onSuccess: (result) => { - mutate(result); - }, - }, - ); - - const list = listData?.list || []; - - const paginationProps = { - showSizeChanger: true, - showQuickJumper: true, - pageSize: 5, - total: list.length, - }; - - const showEditModal = (item: BasicListItemDataType) => { - setVisible(true); - setCurrent(item); - }; - - const deleteItem = (id: string) => { - postRun('remove', { id }); - }; - - const editAndDelete = (key: string | number, currentItem: BasicListItemDataType) => { - if (key === 'edit') showEditModal(currentItem); - else if (key === 'delete') { - Modal.confirm({ - title: '删除任务', - content: '确定删除该任务吗?', - okText: '确认', - cancelText: '取消', - onOk: () => deleteItem(currentItem.id), - }); - } - }; - - const extraContent = ( -
    - - 全部 - 进行中 - 等待中 - - ({})} /> -
    - ); - - const MoreBtn: React.FC<{ - item: BasicListItemDataType; - }> = ({ item }) => ( - editAndDelete(key, item)}> - 编辑 - 删除 - - } - > - - 更多 - - - ); - - const handleDone = () => { - setDone(false); - setVisible(false); - setCurrent({}); - }; - - const handleSubmit = (values: BasicListItemDataType) => { - setDone(true); - const method = values?.id ? 'update' : 'add'; - postRun(method, values); - }; - - return ( -
    - -
    - - -
    - - - - - - - - - - - - - ( - { - e.preventDefault(); - showEditModal(item); - }} - > - 编辑 - , - , - ]} - > - } - title={{item.title}} - description={item.subDescription} - /> - - - )} - /> - - - - - - - ); -}; - -export default BasicList; diff --git a/demo/src/pages/list/basic-list/service.ts b/demo/src/pages/list/basic-list/service.ts deleted file mode 100644 index 4aa8f8d8..00000000 --- a/demo/src/pages/list/basic-list/service.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { request } from 'umi'; -import type { BasicListItemDataType } from './data.d'; - -type ParamsType = { - count?: number; -} & Partial; - -export async function queryFakeList( - params: ParamsType, -): Promise<{ data: { list: BasicListItemDataType[] } }> { - return request('/api/get_list', { - params, - }); -} - -export async function removeFakeList( - params: ParamsType, -): Promise<{ data: { list: BasicListItemDataType[] } }> { - return request('/api/post_fake_list', { - method: 'POST', - data: { - ...params, - method: 'delete', - }, - }); -} - -export async function addFakeList( - params: ParamsType, -): Promise<{ data: { list: BasicListItemDataType[] } }> { - return request('/api/post_fake_list', { - method: 'POST', - data: { - ...params, - method: 'post', - }, - }); -} - -export async function updateFakeList( - params: ParamsType, -): Promise<{ data: { list: BasicListItemDataType[] } }> { - return request('/api/post_fake_list', { - method: 'POST', - data: { - ...params, - method: 'update', - }, - }); -} diff --git a/demo/src/pages/list/basic-list/style.less b/demo/src/pages/list/basic-list/style.less deleted file mode 100644 index 2d3a58cc..00000000 --- a/demo/src/pages/list/basic-list/style.less +++ /dev/null @@ -1,195 +0,0 @@ -@import '~antd/es/style/themes/default.less'; -@import './utils/utils.less'; - -.standardList { - :global { - .ant-card-head { - border-bottom: none; - } - .ant-card-head-title { - padding: 24px 0; - line-height: 32px; - } - .ant-card-extra { - padding: 24px 0; - } - .ant-list-pagination { - margin-top: 24px; - text-align: right; - } - .ant-avatar-lg { - width: 48px; - height: 48px; - line-height: 48px; - } - } - .headerInfo { - position: relative; - text-align: center; - & > span { - display: inline-block; - margin-bottom: 4px; - color: @text-color-secondary; - font-size: @font-size-base; - line-height: 22px; - } - & > p { - margin: 0; - color: @heading-color; - font-size: 24px; - line-height: 32px; - } - & > em { - position: absolute; - top: 0; - right: 0; - width: 1px; - height: 56px; - background-color: @border-color-split; - } - } - .listContent { - font-size: 0; - .listContentItem { - display: inline-block; - margin-left: 40px; - color: @text-color-secondary; - font-size: @font-size-base; - vertical-align: middle; - > span { - line-height: 20px; - } - > p { - margin-top: 4px; - margin-bottom: 0; - line-height: 22px; - } - } - } - .extraContentSearch { - width: 272px; - margin-left: 16px; - } -} - -@media screen and (max-width: @screen-xs) { - .standardList { - :global { - .ant-list-item-content { - display: block; - flex: none; - width: 100%; - } - .ant-list-item-action { - margin-left: 0; - } - } - .listContent { - margin-left: 0; - & > div { - margin-left: 0; - } - } - .listCard { - :global { - .ant-card-head-title { - overflow: visible; - } - } - } - } -} - -@media screen and (max-width: @screen-sm) { - .standardList { - .extraContentSearch { - width: 100%; - margin-left: 0; - } - .headerInfo { - margin-bottom: 16px; - & > em { - display: none; - } - } - } -} - -@media screen and (max-width: @screen-md) { - .standardList { - .listContent { - & > div { - display: block; - } - & > div:last-child { - top: 0; - width: 100%; - } - } - } - .listCard { - :global { - .ant-radio-group { - display: block; - margin-bottom: 8px; - } - } - } -} - -@media screen and (max-width: @screen-lg) and (min-width: @screen-md) { - .standardList { - .listContent { - & > div { - display: block; - } - & > div:last-child { - top: 0; - width: 100%; - } - } - } -} - -@media screen and (max-width: @screen-xl) { - .standardList { - .listContent { - & > div { - margin-left: 24px; - } - & > div:last-child { - top: 0; - } - } - } -} - -@media screen and (max-width: 1400px) { - .standardList { - .listContent { - text-align: right; - & > div:last-child { - top: 0; - } - } - } -} - -.standardListForm { - :global { - .ant-form-item { - margin-bottom: 12px; - &:last-child { - margin-bottom: 32px; - padding-top: 4px; - } - } - } -} - -.formResult { - width: 100%; - [class^='title'] { - margin-bottom: 8px; - } -} diff --git a/demo/src/pages/list/basic-list/utils/utils.less b/demo/src/pages/list/basic-list/utils/utils.less deleted file mode 100644 index de1aa642..00000000 --- a/demo/src/pages/list/basic-list/utils/utils.less +++ /dev/null @@ -1,50 +0,0 @@ -.textOverflow() { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - word-break: break-all; -} - -.textOverflowMulti(@line: 3, @bg: #fff) { - position: relative; - max-height: @line * 1.5em; - margin-right: -1em; - padding-right: 1em; - overflow: hidden; - line-height: 1.5em; - text-align: justify; - &::before { - position: absolute; - right: 14px; - bottom: 0; - padding: 0 1px; - background: @bg; - content: '...'; - } - &::after { - position: absolute; - right: 14px; - width: 1em; - height: 1em; - margin-top: 0.2em; - background: white; - content: ''; - } -} - -// mixins for clearfix -// ------------------------ -.clearfix() { - zoom: 1; - &::before, - &::after { - display: table; - content: ' '; - } - &::after { - clear: both; - height: 0; - font-size: 0; - visibility: hidden; - } -} diff --git a/demo/src/pages/list/card-list/_mock.ts b/demo/src/pages/list/card-list/_mock.ts deleted file mode 100644 index 0aed36a3..00000000 --- a/demo/src/pages/list/card-list/_mock.ts +++ /dev/null @@ -1,120 +0,0 @@ -// eslint-disable-next-line import/no-extraneous-dependencies -import type { Request, Response } from 'express'; -import type { CardListItemDataType } from './data.d'; - -const titles = [ - 'Alipay', - 'Angular', - 'Ant Design', - 'Ant Design Pro', - 'Bootstrap', - 'React', - 'Vue', - 'Webpack', -]; -const avatars = [ - 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', // Alipay - 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', // Angular - 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', // Ant Design - 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', // Ant Design Pro - 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', // Bootstrap - 'https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png', // React - 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', // Vue - 'https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png', // Webpack -]; - -const covers = [ - 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png', - 'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png', - 'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png', - 'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png', -]; -const desc = [ - '那是一种内在的东西, 他们到达不了,也无法触及的', - '希望是一个好东西,也许是最好的,好东西是不会消亡的', - '生命就像一盒巧克力,结果往往出人意料', - '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆', - '那时候我只会想自己想要什么,从不想自己拥有什么', -]; - -const user = [ - '付小小', - '曲丽丽', - '林东东', - '周星星', - '吴加好', - '朱偏右', - '鱼酱', - '乐哥', - '谭小仪', - '仲尼', -]; - -function fakeList(count: number): CardListItemDataType[] { - const list = []; - for (let i = 0; i < count; i += 1) { - list.push({ - id: `fake-list-${i}`, - owner: user[i % 10], - title: titles[i % 8], - avatar: avatars[i % 8], - cover: parseInt(`${i / 4}`, 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)], - status: ['active', 'exception', 'normal'][i % 3] as - | 'normal' - | 'exception' - | 'active' - | 'success', - percent: Math.ceil(Math.random() * 50) + 50, - logo: avatars[i % 8], - href: 'https://ant.design', - updatedAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), - createdAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), - subDescription: desc[i % 5], - description: - '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。', - activeUser: Math.ceil(Math.random() * 100000) + 100000, - newUser: Math.ceil(Math.random() * 1000) + 1000, - star: Math.ceil(Math.random() * 100) + 100, - like: Math.ceil(Math.random() * 100) + 100, - message: Math.ceil(Math.random() * 10) + 10, - content: - '段落示意:蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。', - members: [ - { - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png', - name: '曲丽丽', - id: 'member1', - }, - { - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png', - name: '王昭君', - id: 'member2', - }, - { - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png', - name: '董娜娜', - id: 'member3', - }, - ], - }); - } - - return list; -} - -function getFakeList(req: Request, res: Response) { - const params = req.query as any; - - const count = Number(params.count) * 1 || 20; - - const result = fakeList(count); - return res.json({ - data: { - list: result, - }, - }); -} - -export default { - 'GET /api/card_fake_list': getFakeList, -}; diff --git a/demo/src/pages/list/card-list/data.d.ts b/demo/src/pages/list/card-list/data.d.ts deleted file mode 100644 index c7e663ff..00000000 --- a/demo/src/pages/list/card-list/data.d.ts +++ /dev/null @@ -1,29 +0,0 @@ -export type Member = { - avatar: string; - name: string; - id: string; -}; - -export type CardListItemDataType = { - id: string; - owner: string; - title: string; - avatar: string; - cover: string; - status: 'normal' | 'exception' | 'active' | 'success'; - percent: number; - logo: string; - href: string; - body?: any; - updatedAt: number; - createdAt: number; - subDescription: string; - description: string; - activeUser: number; - newUser: number; - star: number; - like: number; - message: number; - content: string; - members: Member[]; -}; diff --git a/demo/src/pages/list/card-list/index.tsx b/demo/src/pages/list/card-list/index.tsx deleted file mode 100644 index d7c46ef1..00000000 --- a/demo/src/pages/list/card-list/index.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import { PlusOutlined } from '@ant-design/icons'; -import { Button, Card, List, Typography } from 'antd'; -import { PageContainer } from '@ant-design/pro-layout'; -import { useRequest } from 'umi'; -import { queryFakeList } from './service'; -import type { CardListItemDataType } from './data.d'; -import styles from './style.less'; - -const { Paragraph } = Typography; - -const CardList = () => { - const { data, loading } = useRequest(() => { - return queryFakeList({ - count: 8, - }); - }); - - const list = data?.list || []; - - const content = ( -
    -

    - 段落示意:蚂蚁金服务设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态, - 提供跨越设计与开发的体验解决方案。 -

    - -
    - ); - - const extraContent = ( -
    - 这是一个标题 -
    - ); - const nullData: Partial = {}; - return ( - -
    - > - rowKey="id" - loading={loading} - grid={{ - gutter: 16, - xs: 1, - sm: 2, - md: 3, - lg: 3, - xl: 4, - xxl: 4, - }} - dataSource={[nullData, ...list]} - renderItem={(item) => { - if (item && item.id) { - return ( - - 操作一, 操作二]} - > - } - title={{item.title}} - description={ - - {item.description} - - } - /> - - - ); - } - return ( - - - - ); - }} - /> -
    -
    - ); -}; - -export default CardList; diff --git a/demo/src/pages/list/card-list/service.ts b/demo/src/pages/list/card-list/service.ts deleted file mode 100644 index fee9a314..00000000 --- a/demo/src/pages/list/card-list/service.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { request } from 'umi'; -import type { CardListItemDataType } from './data.d'; - -export async function queryFakeList(params: { - count: number; -}): Promise<{ data: { list: CardListItemDataType[] } }> { - return request('/api/card_fake_list', { - params, - }); -} diff --git a/demo/src/pages/list/card-list/style.less b/demo/src/pages/list/card-list/style.less deleted file mode 100644 index 24a5bc67..00000000 --- a/demo/src/pages/list/card-list/style.less +++ /dev/null @@ -1,107 +0,0 @@ -@import '~antd/es/style/themes/default.less'; -@import './utils/utils.less'; - -.cardList { - .card { - :global { - .ant-card-meta-title { - margin-bottom: 12px; - & > a { - display: inline-block; - max-width: 100%; - color: @heading-color; - } - } - .ant-card-body:hover { - .ant-card-meta-title > a { - color: @primary-color; - } - } - } - } - .item { - height: 64px; - } - - :global { - .ant-list .ant-list-item-content-single { - max-width: 100%; - } - } -} - -.extraImg { - width: 155px; - margin-top: -20px; - text-align: center; - img { - width: 100%; - } -} - -.newButton { - width: 100%; - height: 201px; - color: @text-color-secondary; - background-color: @component-background; - border-color: @border-color-base; -} - -.cardAvatar { - width: 48px; - height: 48px; - border-radius: 48px; -} - -.cardDescription { - .textOverflowMulti(); -} - -.pageHeaderContent { - position: relative; -} - -.contentLink { - margin-top: 16px; - a { - margin-right: 32px; - img { - width: 24px; - } - } - img { - margin-right: 8px; - vertical-align: middle; - } -} - -@media screen and (max-width: @screen-lg) { - .contentLink { - a { - margin-right: 16px; - } - } -} -@media screen and (max-width: @screen-md) { - .extraImg { - display: none; - } -} - -@media screen and (max-width: @screen-sm) { - .pageHeaderContent { - padding-bottom: 30px; - } - .contentLink { - position: absolute; - bottom: -4px; - left: 0; - width: 1000px; - a { - margin-right: 16px; - } - img { - margin-right: 4px; - } - } -} diff --git a/demo/src/pages/list/card-list/utils/utils.less b/demo/src/pages/list/card-list/utils/utils.less deleted file mode 100644 index de1aa642..00000000 --- a/demo/src/pages/list/card-list/utils/utils.less +++ /dev/null @@ -1,50 +0,0 @@ -.textOverflow() { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - word-break: break-all; -} - -.textOverflowMulti(@line: 3, @bg: #fff) { - position: relative; - max-height: @line * 1.5em; - margin-right: -1em; - padding-right: 1em; - overflow: hidden; - line-height: 1.5em; - text-align: justify; - &::before { - position: absolute; - right: 14px; - bottom: 0; - padding: 0 1px; - background: @bg; - content: '...'; - } - &::after { - position: absolute; - right: 14px; - width: 1em; - height: 1em; - margin-top: 0.2em; - background: white; - content: ''; - } -} - -// mixins for clearfix -// ------------------------ -.clearfix() { - zoom: 1; - &::before, - &::after { - display: table; - content: ' '; - } - &::after { - clear: both; - height: 0; - font-size: 0; - visibility: hidden; - } -} diff --git a/demo/src/pages/list/search/applications/_mock.ts b/demo/src/pages/list/search/applications/_mock.ts deleted file mode 100644 index affe8bcc..00000000 --- a/demo/src/pages/list/search/applications/_mock.ts +++ /dev/null @@ -1,119 +0,0 @@ -// eslint-disable-next-line import/no-extraneous-dependencies -import type { Request, Response } from 'express'; -import type { ListItemDataType } from './data.d'; - -const titles = [ - 'Alipay', - 'Angular', - 'Ant Design', - 'Ant Design Pro', - 'Bootstrap', - 'React', - 'Vue', - 'Webpack', -]; -const avatars = [ - 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', // Alipay - 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', // Angular - 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', // Ant Design - 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', // Ant Design Pro - 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', // Bootstrap - 'https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png', // React - 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', // Vue - 'https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png', // Webpack -]; - -const covers = [ - 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png', - 'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png', - 'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png', - 'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png', -]; -const desc = [ - '那是一种内在的东西, 他们到达不了,也无法触及的', - '希望是一个好东西,也许是最好的,好东西是不会消亡的', - '生命就像一盒巧克力,结果往往出人意料', - '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆', - '那时候我只会想自己想要什么,从不想自己拥有什么', -]; -const user = [ - '付小小', - '曲丽丽', - '林东东', - '周星星', - '吴加好', - '朱偏右', - '鱼酱', - '乐哥', - '谭小仪', - '仲尼', -]; - -function fakeList(count: number): ListItemDataType[] { - const list = []; - for (let i = 0; i < count; i += 1) { - list.push({ - id: `fake-list-${i}`, - owner: user[i % 10], - title: titles[i % 8], - avatar: avatars[i % 8], - cover: parseInt(`${i / 4}`, 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)], - status: ['active', 'exception', 'normal'][i % 3] as - | 'normal' - | 'exception' - | 'active' - | 'success', - percent: Math.ceil(Math.random() * 50) + 50, - logo: avatars[i % 8], - href: 'https://ant.design', - updatedAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), - createdAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), - subDescription: desc[i % 5], - description: - '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。', - activeUser: Math.ceil(Math.random() * 100000) + 100000, - newUser: Math.ceil(Math.random() * 1000) + 1000, - star: Math.ceil(Math.random() * 100) + 100, - like: Math.ceil(Math.random() * 100) + 100, - message: Math.ceil(Math.random() * 10) + 10, - content: - '段落示意:蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。', - members: [ - { - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png', - name: '曲丽丽', - id: 'member1', - }, - { - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png', - name: '王昭君', - id: 'member2', - }, - { - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png', - name: '董娜娜', - id: 'member3', - }, - ], - }); - } - - return list; -} - -function getFakeList(req: Request, res: Response) { - const params: any = req.query; - - const count = params.count * 1 || 20; - - const result = fakeList(count); - return res.json({ - data: { - list: result, - }, - }); -} - -export default { - 'GET /api/fake_list': getFakeList, -}; diff --git a/demo/src/pages/list/search/applications/components/StandardFormRow/index.less b/demo/src/pages/list/search/applications/components/StandardFormRow/index.less deleted file mode 100644 index 4067215f..00000000 --- a/demo/src/pages/list/search/applications/components/StandardFormRow/index.less +++ /dev/null @@ -1,87 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.standardFormRow { - display: flex; - margin-bottom: 16px; - padding-bottom: 16px; - border-bottom: 1px dashed @border-color-split; - - :global { - .ant-form-item, - .ant-legacy-form-item { - margin-right: 24px; - } - .ant-form-item-label, - .ant-legacy-form-item-label { - label { - margin-right: 0; - color: @text-color; - } - } - .ant-form-item-label, - .ant-legacy-form-item-label, - .ant-form-item-control, - .ant-legacy-form-item-control { - padding: 0; - line-height: 32px; - } - } - .label { - flex: 0 0 auto; - margin-right: 24px; - color: @heading-color; - font-size: @font-size-base; - text-align: right; - & > span { - display: inline-block; - height: 32px; - line-height: 32px; - &::after { - content: ':'; - } - } - } - .content { - flex: 1 1 0; - :global { - .ant-form-item, - .ant-legacy-form-item { - &:last-child { - margin-right: 0; - } - } - } - } -} - -.standardFormRowLast { - margin-bottom: 0; - padding-bottom: 0; - border: none; -} - -.standardFormRowBlock { - :global { - .ant-form-item, - .ant-legacy-form-item, - div.ant-form-item-control-wrapper, - div.ant-legacy-form-item-control-wrapper { - display: block; - } - } -} - -.standardFormRowGrid { - :global { - .ant-form-item, - .ant-legacy-form-item, - div.ant-form-item-control-wrapper, - div.ant-legacy-form-item-control-wrapper { - display: block; - } - .ant-form-item-label, - .ant-legacy-form-item-label { - float: left; - } - } -} diff --git a/demo/src/pages/list/search/applications/components/StandardFormRow/index.tsx b/demo/src/pages/list/search/applications/components/StandardFormRow/index.tsx deleted file mode 100644 index fe4cb388..00000000 --- a/demo/src/pages/list/search/applications/components/StandardFormRow/index.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import React from 'react'; -import classNames from 'classnames'; -import styles from './index.less'; - -type StandardFormRowProps = { - title?: string; - last?: boolean; - block?: boolean; - grid?: boolean; - style?: React.CSSProperties; -}; - -const StandardFormRow: React.FC = ({ - title, - children, - last, - block, - grid, - ...rest -}) => { - const cls = classNames(styles.standardFormRow, { - [styles.standardFormRowBlock]: block, - [styles.standardFormRowLast]: last, - [styles.standardFormRowGrid]: grid, - }); - - return ( -
    - {title && ( -
    - {title} -
    - )} -
    {children}
    -
    - ); -}; - -export default StandardFormRow; diff --git a/demo/src/pages/list/search/applications/components/TagSelect/index.less b/demo/src/pages/list/search/applications/components/TagSelect/index.less deleted file mode 100644 index f366c587..00000000 --- a/demo/src/pages/list/search/applications/components/TagSelect/index.less +++ /dev/null @@ -1,34 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.tagSelect { - position: relative; - max-height: 32px; - margin-left: -8px; - overflow: hidden; - line-height: 32px; - transition: all 0.3s; - user-select: none; - :global { - .ant-tag { - margin-right: 24px; - padding: 0 8px; - font-size: @font-size-base; - } - } - &.expanded { - max-height: 200px; - transition: all 0.3s; - } - .trigger { - position: absolute; - top: 0; - right: 0; - - span.anticon { - font-size: 12px; - } - } - &.hasExpandTag { - padding-right: 50px; - } -} diff --git a/demo/src/pages/list/search/applications/components/TagSelect/index.tsx b/demo/src/pages/list/search/applications/components/TagSelect/index.tsx deleted file mode 100644 index 5f10efd4..00000000 --- a/demo/src/pages/list/search/applications/components/TagSelect/index.tsx +++ /dev/null @@ -1,142 +0,0 @@ -import { DownOutlined, UpOutlined } from '@ant-design/icons'; -import { useBoolean, useControllableValue } from 'ahooks'; -import { Tag } from 'antd'; -import classNames from 'classnames'; -import type { FC } from 'react'; -import React from 'react'; -import styles from './index.less'; - -const { CheckableTag } = Tag; - -export interface TagSelectOptionProps { - value: string | number; - style?: React.CSSProperties; - checked?: boolean; - onChange?: (value: string | number, state: boolean) => void; -} - -const TagSelectOption: React.FC & { - isTagSelectOption: boolean; -} = ({ children, checked, onChange, value }) => ( - onChange && onChange(value, state)} - > - {children} - -); - -TagSelectOption.isTagSelectOption = true; - -type TagSelectOptionElement = React.ReactElement; -export interface TagSelectProps { - onChange?: (value: (string | number)[]) => void; - expandable?: boolean; - value?: (string | number)[]; - defaultValue?: (string | number)[]; - style?: React.CSSProperties; - hideCheckAll?: boolean; - actionsText?: { - expandText?: React.ReactNode; - collapseText?: React.ReactNode; - selectAllText?: React.ReactNode; - }; - className?: string; - Option?: TagSelectOptionProps; - children?: TagSelectOptionElement | TagSelectOptionElement[]; -} - -const TagSelect: FC & { Option: typeof TagSelectOption } = (props) => { - const { children, hideCheckAll = false, className, style, expandable, actionsText = {} } = props; - - const [expand, { toggle }] = useBoolean(); - - const [value, setValue] = useControllableValue<(string | number)[]>(props); - - const isTagSelectOption = (node: TagSelectOptionElement) => - node && - node.type && - (node.type.isTagSelectOption || node.type.displayName === 'TagSelectOption'); - - const getAllTags = () => { - const childrenArray = React.Children.toArray(children) as TagSelectOptionElement[]; - const checkedTags = childrenArray - .filter((child) => isTagSelectOption(child)) - .map((child) => child.props.value); - return checkedTags || []; - }; - - const onSelectAll = (checked: boolean) => { - let checkedTags: (string | number)[] = []; - if (checked) { - checkedTags = getAllTags(); - } - setValue(checkedTags); - }; - - const handleTagChange = (tag: string | number, checked: boolean) => { - const checkedTags: (string | number)[] = [...(value || [])]; - - const index = checkedTags.indexOf(tag); - if (checked && index === -1) { - checkedTags.push(tag); - } else if (!checked && index > -1) { - checkedTags.splice(index, 1); - } - setValue(checkedTags); - }; - - const checkedAll = getAllTags().length === value?.length; - const { expandText = '展开', collapseText = '收起', selectAllText = '全部' } = actionsText; - - const cls = classNames(styles.tagSelect, className, { - [styles.hasExpandTag]: expandable, - [styles.expanded]: expand, - }); - - return ( -
    - {hideCheckAll ? null : ( - - {selectAllText} - - )} - {children && - React.Children.map(children, (child: TagSelectOptionElement) => { - if (isTagSelectOption(child)) { - return React.cloneElement(child, { - key: `tag-select-${child.props.value}`, - value: child.props.value, - checked: value && value.indexOf(child.props.value) > -1, - onChange: handleTagChange, - }); - } - return child; - })} - {expandable && ( - { - toggle(); - }} - > - {expand ? ( - <> - {collapseText} - - ) : ( - <> - {expandText} - - - )} - - )} -
    - ); -}; - -TagSelect.Option = TagSelectOption; - -export default TagSelect; diff --git a/demo/src/pages/list/search/applications/data.d.ts b/demo/src/pages/list/search/applications/data.d.ts deleted file mode 100644 index f39b0a60..00000000 --- a/demo/src/pages/list/search/applications/data.d.ts +++ /dev/null @@ -1,33 +0,0 @@ -export type Member = { - avatar: string; - name: string; - id: string; -}; - -export interface Params { - count: number; -} - -export interface ListItemDataType { - id: string; - owner: string; - title: string; - avatar: string; - cover: string; - status: 'normal' | 'exception' | 'active' | 'success'; - percent: number; - logo: string; - href: string; - body?: any; - updatedAt: number; - createdAt: number; - subDescription: string; - description: string; - activeUser: number; - newUser: number; - star: number; - like: number; - message: number; - content: string; - members: Member[]; -} diff --git a/demo/src/pages/list/search/applications/index.tsx b/demo/src/pages/list/search/applications/index.tsx deleted file mode 100644 index abb16cac..00000000 --- a/demo/src/pages/list/search/applications/index.tsx +++ /dev/null @@ -1,195 +0,0 @@ -import { - DownloadOutlined, - EditOutlined, - EllipsisOutlined, - ShareAltOutlined, -} from '@ant-design/icons'; -import { Avatar, Card, Col, Dropdown, Form, List, Menu, Row, Select, Tooltip } from 'antd'; -import numeral from 'numeral'; -import type { FC } from 'react'; -import React from 'react'; -import { useRequest } from 'umi'; -import StandardFormRow from './components/StandardFormRow'; -import TagSelect from './components/TagSelect'; -import type { ListItemDataType } from './data.d'; -import { queryFakeList } from './service'; -import styles from './style.less'; - -const { Option } = Select; - -export function formatWan(val: number) { - const v = val * 1; - if (!v || Number.isNaN(v)) return ''; - - let result: React.ReactNode = val; - if (val > 10000) { - result = ( - - {Math.floor(val / 10000)} - - 万 - - - ); - } - return result; -} - -const formItemLayout = { - wrapperCol: { - xs: { span: 24 }, - sm: { span: 16 }, - }, -}; - -const CardInfo: React.FC<{ - activeUser: React.ReactNode; - newUser: React.ReactNode; -}> = ({ activeUser, newUser }) => ( -
    -
    -

    活跃用户

    -

    {activeUser}

    -
    -
    -

    新增用户

    -

    {newUser}

    -
    -
    -); - -export const Applications: FC> = () => { - const { data, loading, run } = useRequest((values: any) => { - console.log('form data', values); - return queryFakeList({ - count: 8, - }); - }); - - const list = data?.list || []; - - const itemMenu = ( - - - - 1st menu item - - - - - 2nd menu item - - - - - 3d menu item - - - - ); - - return ( -
    - -
    { - run(values); - }} - > - - - - 类目一 - 类目二 - 类目三 - 类目四 - 类目五 - 类目六 - 类目七 - 类目八 - 类目九 - 类目十 - 类目十一 - 类目十二 - - - - - -
    - - - - - - - - - - - - - -
    - - rowKey="id" - grid={{ - gutter: 16, - xs: 1, - sm: 2, - md: 3, - lg: 3, - xl: 4, - xxl: 4, - }} - loading={loading} - dataSource={list} - renderItem={(item) => ( - - - - , - - - , - - - , - - - , - ]} - > - } title={item.title} /> -
    - -
    -
    -
    - )} - /> - - ); -}; - -export default Applications; diff --git a/demo/src/pages/list/search/applications/service.ts b/demo/src/pages/list/search/applications/service.ts deleted file mode 100644 index b6fb5712..00000000 --- a/demo/src/pages/list/search/applications/service.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { request } from 'umi'; -import type { Params, ListItemDataType } from './data.d'; - -export async function queryFakeList( - params: Params, -): Promise<{ data: { list: ListItemDataType[] } }> { - return request('/api/fake_list', { - params, - }); -} diff --git a/demo/src/pages/list/search/applications/style.less b/demo/src/pages/list/search/applications/style.less deleted file mode 100644 index 3daa5c3e..00000000 --- a/demo/src/pages/list/search/applications/style.less +++ /dev/null @@ -1,50 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.filterCardList { - :global { - .ant-card-meta-content { - margin-top: 0; - } - // disabled white space - .ant-card-meta-avatar { - font-size: 0; - } - - .ant-list .ant-list-item-content-single { - max-width: 100%; - } - } - .cardInfo { - margin-top: 16px; - margin-left: 40px; - zoom: 1; - &::before, - &::after { - display: table; - content: ' '; - } - &::after { - clear: both; - height: 0; - font-size: 0; - visibility: hidden; - } - & > div { - position: relative; - float: left; - width: 50%; - text-align: left; - p { - margin: 0; - font-size: 24px; - line-height: 32px; - } - p:first-child { - margin-bottom: 4px; - color: @text-color-secondary; - font-size: 12px; - line-height: 20px; - } - } - } -} diff --git a/demo/src/pages/list/search/applications/utils/utils.less b/demo/src/pages/list/search/applications/utils/utils.less deleted file mode 100644 index de1aa642..00000000 --- a/demo/src/pages/list/search/applications/utils/utils.less +++ /dev/null @@ -1,50 +0,0 @@ -.textOverflow() { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - word-break: break-all; -} - -.textOverflowMulti(@line: 3, @bg: #fff) { - position: relative; - max-height: @line * 1.5em; - margin-right: -1em; - padding-right: 1em; - overflow: hidden; - line-height: 1.5em; - text-align: justify; - &::before { - position: absolute; - right: 14px; - bottom: 0; - padding: 0 1px; - background: @bg; - content: '...'; - } - &::after { - position: absolute; - right: 14px; - width: 1em; - height: 1em; - margin-top: 0.2em; - background: white; - content: ''; - } -} - -// mixins for clearfix -// ------------------------ -.clearfix() { - zoom: 1; - &::before, - &::after { - display: table; - content: ' '; - } - &::after { - clear: both; - height: 0; - font-size: 0; - visibility: hidden; - } -} diff --git a/demo/src/pages/list/search/articles/_mock.ts b/demo/src/pages/list/search/articles/_mock.ts deleted file mode 100644 index e3fd954b..00000000 --- a/demo/src/pages/list/search/articles/_mock.ts +++ /dev/null @@ -1,119 +0,0 @@ -// eslint-disable-next-line import/no-extraneous-dependencies -import type { Request, Response } from 'express'; -import type { ListItemDataType } from './data.d'; - -const titles = [ - 'Alipay', - 'Angular', - 'Ant Design', - 'Ant Design Pro', - 'Bootstrap', - 'React', - 'Vue', - 'Webpack', -]; -const avatars = [ - 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', // Alipay - 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', // Angular - 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', // Ant Design - 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', // Ant Design Pro - 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', // Bootstrap - 'https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png', // React - 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', // Vue - 'https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png', // Webpack -]; - -const covers = [ - 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png', - 'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png', - 'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png', - 'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png', -]; -const desc = [ - '那是一种内在的东西, 他们到达不了,也无法触及的', - '希望是一个好东西,也许是最好的,好东西是不会消亡的', - '生命就像一盒巧克力,结果往往出人意料', - '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆', - '那时候我只会想自己想要什么,从不想自己拥有什么', -]; -const user = [ - '付小小', - '曲丽丽', - '林东东', - '周星星', - '吴加好', - '朱偏右', - '鱼酱', - '乐哥', - '谭小仪', - '仲尼', -]; - -function fakeList(count: number): ListItemDataType[] { - const list = []; - for (let i = 0; i < count; i += 1) { - list.push({ - id: `fake-list-${Math.random().toString(36).slice(2, 6)}${i}`, - owner: user[i % 10], - title: titles[i % 8], - avatar: avatars[i % 8], - cover: parseInt(`${i / 4}`, 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)], - status: ['active', 'exception', 'normal'][i % 3] as - | 'normal' - | 'exception' - | 'active' - | 'success', - percent: Math.ceil(Math.random() * 50) + 50, - logo: avatars[i % 8], - href: 'https://ant.design', - updatedAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), - createdAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), - subDescription: desc[i % 5], - description: - '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。', - activeUser: Math.ceil(Math.random() * 100000) + 100000, - newUser: Math.ceil(Math.random() * 1000) + 1000, - star: Math.ceil(Math.random() * 100) + 100, - like: Math.ceil(Math.random() * 100) + 100, - message: Math.ceil(Math.random() * 10) + 10, - content: - '段落示意:蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。', - members: [ - { - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png', - name: '曲丽丽', - id: 'member1', - }, - { - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png', - name: '王昭君', - id: 'member2', - }, - { - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png', - name: '董娜娜', - id: 'member3', - }, - ], - }); - } - - return list; -} - -function getFakeList(req: Request, res: Response) { - const params: any = req.query; - - const count = params.count * 1 || 20; - - const result = fakeList(count); - return res.json({ - data: { - list: result, - }, - }); -} - -export default { - 'GET /api/fake_list': getFakeList, -}; diff --git a/demo/src/pages/list/search/articles/components/ArticleListContent/index.less b/demo/src/pages/list/search/articles/components/ArticleListContent/index.less deleted file mode 100644 index eca0811c..00000000 --- a/demo/src/pages/list/search/articles/components/ArticleListContent/index.less +++ /dev/null @@ -1,38 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.listContent { - .description { - max-width: 720px; - line-height: 22px; - } - .extra { - margin-top: 16px; - color: @text-color-secondary; - line-height: 22px; - & > :global(.ant-avatar) { - position: relative; - top: 1px; - width: 20px; - height: 20px; - margin-right: 8px; - vertical-align: top; - } - & > em { - margin-left: 16px; - color: @disabled-color; - font-style: normal; - } - } -} - -@media screen and (max-width: @screen-xs) { - .listContent { - .extra { - & > em { - display: block; - margin-top: 8px; - margin-left: 0; - } - } - } -} diff --git a/demo/src/pages/list/search/articles/components/ArticleListContent/index.tsx b/demo/src/pages/list/search/articles/components/ArticleListContent/index.tsx deleted file mode 100644 index b5734538..00000000 --- a/demo/src/pages/list/search/articles/components/ArticleListContent/index.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { Avatar } from 'antd'; -import React from 'react'; -import moment from 'moment'; -import styles from './index.less'; - -type ArticleListContentProps = { - data: { - content: React.ReactNode; - updatedAt: number; - avatar: string; - owner: string; - href: string; - }; -}; - -const ArticleListContent: React.FC = ({ - data: { content, updatedAt, avatar, owner, href }, -}) => ( -
    -
    {content}
    -
    - - {owner} 发布在 {href} - {moment(updatedAt).format('YYYY-MM-DD HH:mm')} -
    -
    -); - -export default ArticleListContent; diff --git a/demo/src/pages/list/search/articles/components/StandardFormRow/index.less b/demo/src/pages/list/search/articles/components/StandardFormRow/index.less deleted file mode 100644 index d619cd2c..00000000 --- a/demo/src/pages/list/search/articles/components/StandardFormRow/index.less +++ /dev/null @@ -1,88 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.standardFormRow { - display: flex; - width: 100%; - margin-bottom: 16px; - padding-bottom: 16px; - border-bottom: 1px dashed @border-color-split; - :global { - .ant-form-item, - .ant-legacy-form-item { - margin-right: 24px; - } - .ant-form-item-label, - .ant-legacy-form-item-label { - label { - margin-right: 0; - color: @text-color; - } - } - .ant-form-item-label, - .ant-legacy-form-item-label, - .ant-form-item-control, - .ant-legacy-form-item-control { - padding: 0; - line-height: 32px; - } - } - .label { - flex: 0 0 auto; - margin-right: 24px; - color: @heading-color; - font-size: @font-size-base; - text-align: right; - & > span { - display: inline-block; - height: 32px; - line-height: 32px; - &::after { - content: ':'; - } - } - } - .content { - flex: 1 1 0; - :global { - .ant-form-item, - .ant-legacy-form-item { - &:last-child { - display: block; - margin-right: 0; - } - } - } - } -} - -.standardFormRowLast { - margin-bottom: 0; - padding-bottom: 0; - border: none; -} - -.standardFormRowBlock { - :global { - .ant-form-item, - .ant-legacy-form-item, - div.ant-form-item-control-wrapper, - div.ant-legacy-form-item-control-wrapper { - display: block; - } - } -} - -.standardFormRowGrid { - :global { - .ant-form-item, - .ant-legacy-form-item, - div.ant-form-item-control-wrapper, - div.ant-legacy-form-item-control-wrapper { - display: block; - } - .ant-form-item-label, - .ant-legacy-form-item-label { - float: left; - } - } -} diff --git a/demo/src/pages/list/search/articles/components/StandardFormRow/index.tsx b/demo/src/pages/list/search/articles/components/StandardFormRow/index.tsx deleted file mode 100644 index fe4cb388..00000000 --- a/demo/src/pages/list/search/articles/components/StandardFormRow/index.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import React from 'react'; -import classNames from 'classnames'; -import styles from './index.less'; - -type StandardFormRowProps = { - title?: string; - last?: boolean; - block?: boolean; - grid?: boolean; - style?: React.CSSProperties; -}; - -const StandardFormRow: React.FC = ({ - title, - children, - last, - block, - grid, - ...rest -}) => { - const cls = classNames(styles.standardFormRow, { - [styles.standardFormRowBlock]: block, - [styles.standardFormRowLast]: last, - [styles.standardFormRowGrid]: grid, - }); - - return ( -
    - {title && ( -
    - {title} -
    - )} -
    {children}
    -
    - ); -}; - -export default StandardFormRow; diff --git a/demo/src/pages/list/search/articles/components/TagSelect/index.less b/demo/src/pages/list/search/articles/components/TagSelect/index.less deleted file mode 100644 index b174f042..00000000 --- a/demo/src/pages/list/search/articles/components/TagSelect/index.less +++ /dev/null @@ -1,33 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.tagSelect { - position: relative; - max-height: 32px; - margin-left: -8px; - overflow: hidden; - line-height: 32px; - transition: all 0.3s; - user-select: none; - :global { - .ant-tag { - margin-right: 24px; - padding: 0 8px; - font-size: @font-size-base; - } - } - &.expanded { - max-height: 200px; - transition: all 0.3s; - } - .trigger { - position: absolute; - top: 0; - right: 0; - span.anticon { - font-size: 12px; - } - } - &.hasExpandTag { - padding-right: 50px; - } -} diff --git a/demo/src/pages/list/search/articles/components/TagSelect/index.tsx b/demo/src/pages/list/search/articles/components/TagSelect/index.tsx deleted file mode 100644 index 5f10efd4..00000000 --- a/demo/src/pages/list/search/articles/components/TagSelect/index.tsx +++ /dev/null @@ -1,142 +0,0 @@ -import { DownOutlined, UpOutlined } from '@ant-design/icons'; -import { useBoolean, useControllableValue } from 'ahooks'; -import { Tag } from 'antd'; -import classNames from 'classnames'; -import type { FC } from 'react'; -import React from 'react'; -import styles from './index.less'; - -const { CheckableTag } = Tag; - -export interface TagSelectOptionProps { - value: string | number; - style?: React.CSSProperties; - checked?: boolean; - onChange?: (value: string | number, state: boolean) => void; -} - -const TagSelectOption: React.FC & { - isTagSelectOption: boolean; -} = ({ children, checked, onChange, value }) => ( - onChange && onChange(value, state)} - > - {children} - -); - -TagSelectOption.isTagSelectOption = true; - -type TagSelectOptionElement = React.ReactElement; -export interface TagSelectProps { - onChange?: (value: (string | number)[]) => void; - expandable?: boolean; - value?: (string | number)[]; - defaultValue?: (string | number)[]; - style?: React.CSSProperties; - hideCheckAll?: boolean; - actionsText?: { - expandText?: React.ReactNode; - collapseText?: React.ReactNode; - selectAllText?: React.ReactNode; - }; - className?: string; - Option?: TagSelectOptionProps; - children?: TagSelectOptionElement | TagSelectOptionElement[]; -} - -const TagSelect: FC & { Option: typeof TagSelectOption } = (props) => { - const { children, hideCheckAll = false, className, style, expandable, actionsText = {} } = props; - - const [expand, { toggle }] = useBoolean(); - - const [value, setValue] = useControllableValue<(string | number)[]>(props); - - const isTagSelectOption = (node: TagSelectOptionElement) => - node && - node.type && - (node.type.isTagSelectOption || node.type.displayName === 'TagSelectOption'); - - const getAllTags = () => { - const childrenArray = React.Children.toArray(children) as TagSelectOptionElement[]; - const checkedTags = childrenArray - .filter((child) => isTagSelectOption(child)) - .map((child) => child.props.value); - return checkedTags || []; - }; - - const onSelectAll = (checked: boolean) => { - let checkedTags: (string | number)[] = []; - if (checked) { - checkedTags = getAllTags(); - } - setValue(checkedTags); - }; - - const handleTagChange = (tag: string | number, checked: boolean) => { - const checkedTags: (string | number)[] = [...(value || [])]; - - const index = checkedTags.indexOf(tag); - if (checked && index === -1) { - checkedTags.push(tag); - } else if (!checked && index > -1) { - checkedTags.splice(index, 1); - } - setValue(checkedTags); - }; - - const checkedAll = getAllTags().length === value?.length; - const { expandText = '展开', collapseText = '收起', selectAllText = '全部' } = actionsText; - - const cls = classNames(styles.tagSelect, className, { - [styles.hasExpandTag]: expandable, - [styles.expanded]: expand, - }); - - return ( -
    - {hideCheckAll ? null : ( - - {selectAllText} - - )} - {children && - React.Children.map(children, (child: TagSelectOptionElement) => { - if (isTagSelectOption(child)) { - return React.cloneElement(child, { - key: `tag-select-${child.props.value}`, - value: child.props.value, - checked: value && value.indexOf(child.props.value) > -1, - onChange: handleTagChange, - }); - } - return child; - })} - {expandable && ( - { - toggle(); - }} - > - {expand ? ( - <> - {collapseText} - - ) : ( - <> - {expandText} - - - )} - - )} -
    - ); -}; - -TagSelect.Option = TagSelectOption; - -export default TagSelect; diff --git a/demo/src/pages/list/search/articles/data.d.ts b/demo/src/pages/list/search/articles/data.d.ts deleted file mode 100644 index 0a4597c9..00000000 --- a/demo/src/pages/list/search/articles/data.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -export type Member = { - avatar: string; - name: string; - id: string; -}; - -export interface Params { - count: number; -} -export interface ListItemDataType { - id: string; - owner: string; - title: string; - avatar: string; - cover: string; - status: 'normal' | 'exception' | 'active' | 'success'; - percent: number; - logo: string; - href: string; - body?: any; - updatedAt: number; - createdAt: number; - subDescription: string; - description: string; - activeUser: number; - newUser: number; - star: number; - like: number; - message: number; - content: string; - members: Member[]; -} diff --git a/demo/src/pages/list/search/articles/index.tsx b/demo/src/pages/list/search/articles/index.tsx deleted file mode 100644 index e61be81c..00000000 --- a/demo/src/pages/list/search/articles/index.tsx +++ /dev/null @@ -1,224 +0,0 @@ -import { LikeOutlined, LoadingOutlined, MessageOutlined, StarOutlined } from '@ant-design/icons'; -import { Button, Card, Col, Form, List, Row, Select, Tag } from 'antd'; -import type { FC } from 'react'; -import React from 'react'; -import { useRequest } from 'umi'; -import ArticleListContent from './components/ArticleListContent'; -import StandardFormRow from './components/StandardFormRow'; -import TagSelect from './components/TagSelect'; -import type { ListItemDataType } from './data.d'; -import { queryFakeList } from './service'; -import styles from './style.less'; - -const { Option } = Select; -const FormItem = Form.Item; - -const pageSize = 5; - -const Articles: FC = () => { - const [form] = Form.useForm(); - - const { data, reload, loading, loadMore, loadingMore } = useRequest( - () => { - return queryFakeList({ - count: pageSize, - }); - }, - { - loadMore: true, - }, - ); - - const list = data?.list || []; - - const setOwner = () => { - form.setFieldsValue({ - owner: ['wzj'], - }); - }; - - const owners = [ - { - id: 'wzj', - name: '我自己', - }, - { - id: 'wjh', - name: '吴家豪', - }, - { - id: 'zxx', - name: '周星星', - }, - { - id: 'zly', - name: '赵丽颖', - }, - { - id: 'ym', - name: '姚明', - }, - ]; - - const IconText: React.FC<{ - type: string; - text: React.ReactNode; - }> = ({ type, text }) => { - switch (type) { - case 'star-o': - return ( - - - {text} - - ); - case 'like-o': - return ( - - - {text} - - ); - case 'message': - return ( - - - {text} - - ); - default: - return null; - } - }; - - const formItemLayout = { - wrapperCol: { - xs: { span: 24 }, - sm: { span: 24 }, - md: { span: 12 }, - }, - }; - - const loadMoreDom = list.length > 0 && ( -
    - -
    - ); - - return ( - <> - -
    - - - - 类目一 - 类目二 - 类目三 - 类目四 - 类目五 - 类目六 - 类目七 - 类目八 - 类目九 - 类目十 - 类目十一 - 类目十二 - - - - - - - - - 只看自己的 - - - - -
    - - - - - - - - - - - - - - - - size="large" - loading={loading} - rowKey="id" - itemLayout="vertical" - loadMore={loadMoreDom} - dataSource={list} - renderItem={(item) => ( - , - , - , - ]} - extra={
    } - > - - {item.title} - - } - description={ - - Ant Design - 设计语言 - 蚂蚁金服 - - } - /> - - - )} - /> - - - ); -}; - -export default Articles; diff --git a/demo/src/pages/list/search/articles/service.ts b/demo/src/pages/list/search/articles/service.ts deleted file mode 100644 index b6fb5712..00000000 --- a/demo/src/pages/list/search/articles/service.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { request } from 'umi'; -import type { Params, ListItemDataType } from './data.d'; - -export async function queryFakeList( - params: Params, -): Promise<{ data: { list: ListItemDataType[] } }> { - return request('/api/fake_list', { - params, - }); -} diff --git a/demo/src/pages/list/search/articles/style.less b/demo/src/pages/list/search/articles/style.less deleted file mode 100644 index fe07d851..00000000 --- a/demo/src/pages/list/search/articles/style.less +++ /dev/null @@ -1,31 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -a.listItemMetaTitle { - color: @heading-color; -} -.listItemExtra { - width: 272px; - height: 1px; -} -.selfTrigger { - margin-left: 12px; -} - -@media screen and (max-width: @screen-xs) { - .selfTrigger { - display: block; - margin-left: 0; - } -} -@media screen and (max-width: @screen-md) { - .selfTrigger { - display: block; - margin-left: 0; - } -} -@media screen and (max-width: @screen-lg) { - .listItemExtra { - width: 0; - height: 1px; - } -} diff --git a/demo/src/pages/list/search/index.tsx b/demo/src/pages/list/search/index.tsx deleted file mode 100644 index bfffb33d..00000000 --- a/demo/src/pages/list/search/index.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import { PageContainer } from '@ant-design/pro-layout'; -import { Input } from 'antd'; -import type { FC } from 'react'; -import { history } from 'umi'; - -type SearchProps = { - match: { - url: string; - path: string; - }; - location: { - pathname: string; - }; -}; - -const tabList = [ - { - key: 'articles', - tab: '文章', - }, - { - key: 'projects', - tab: '项目', - }, - { - key: 'applications', - tab: '应用', - }, -]; - -const Search: FC = (props) => { - const handleTabChange = (key: string) => { - const { match } = props; - const url = match.url === '/' ? '' : match.url; - switch (key) { - case 'articles': - history.push(`${url}/articles`); - break; - case 'applications': - history.push(`${url}/applications`); - break; - case 'projects': - history.push(`${url}/projects`); - break; - default: - break; - } - }; - - const handleFormSubmit = (value: string) => { - // eslint-disable-next-line no-console - console.log(value); - }; - - const getTabKey = () => { - const { match, location } = props; - const url = match.path === '/' ? '' : match.path; - const tabKey = location.pathname.replace(`${url}/`, ''); - if (tabKey && tabKey !== '/') { - return tabKey; - } - return 'articles'; - }; - - return ( - - -
    - } - tabList={tabList} - tabActiveKey={getTabKey()} - onTabChange={handleTabChange} - > - {props.children} - - ); -}; - -export default Search; diff --git a/demo/src/pages/list/search/projects/_mock.ts b/demo/src/pages/list/search/projects/_mock.ts deleted file mode 100644 index 4f9f4a36..00000000 --- a/demo/src/pages/list/search/projects/_mock.ts +++ /dev/null @@ -1,118 +0,0 @@ -import type { Request, Response } from 'express'; -import type { ListItemDataType } from './data.d'; - -const titles = [ - 'Alipay', - 'Angular', - 'Ant Design', - 'Ant Design Pro', - 'Bootstrap', - 'React', - 'Vue', - 'Webpack', -]; -const avatars = [ - 'https://gw.alipayobjects.com/zos/rmsportal/WdGqmHpayyMjiEhcKoVE.png', // Alipay - 'https://gw.alipayobjects.com/zos/rmsportal/zOsKZmFRdUtvpqCImOVY.png', // Angular - 'https://gw.alipayobjects.com/zos/rmsportal/dURIMkkrRFpPgTuzkwnB.png', // Ant Design - 'https://gw.alipayobjects.com/zos/rmsportal/sfjbOqnsXXJgNCjCzDBL.png', // Ant Design Pro - 'https://gw.alipayobjects.com/zos/rmsportal/siCrBXXhmvTQGWPNLBow.png', // Bootstrap - 'https://gw.alipayobjects.com/zos/rmsportal/kZzEzemZyKLKFsojXItE.png', // React - 'https://gw.alipayobjects.com/zos/rmsportal/ComBAopevLwENQdKWiIn.png', // Vue - 'https://gw.alipayobjects.com/zos/rmsportal/nxkuOJlFJuAUhzlMTCEe.png', // Webpack -]; - -const covers = [ - 'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png', - 'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png', - 'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png', - 'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png', -]; -const desc = [ - '那是一种内在的东西, 他们到达不了,也无法触及的', - '希望是一个好东西,也许是最好的,好东西是不会消亡的', - '生命就像一盒巧克力,结果往往出人意料', - '城镇中有那么多的酒馆,她却偏偏走进了我的酒馆', - '那时候我只会想自己想要什么,从不想自己拥有什么', -]; -const user = [ - '付小小', - '曲丽丽', - '林东东', - '周星星', - '吴加好', - '朱偏右', - '鱼酱', - '乐哥', - '谭小仪', - '仲尼', -]; - -function fakeList(count: number): ListItemDataType[] { - const list = []; - for (let i = 0; i < count; i += 1) { - list.push({ - id: `fake-list-${i}`, - owner: user[i % 10], - title: titles[i % 8], - avatar: avatars[i % 8], - cover: parseInt(`${i / 4}`, 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)], - status: ['active', 'exception', 'normal'][i % 3] as - | 'normal' - | 'exception' - | 'active' - | 'success', - percent: Math.ceil(Math.random() * 50) + 50, - logo: avatars[i % 8], - href: 'https://ant.design', - updatedAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), - createdAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i).getTime(), - subDescription: desc[i % 5], - description: - '在中台产品的研发过程中,会出现不同的设计规范和实现方式,但其中往往存在很多类似的页面和组件,这些类似的组件会被抽离成一套标准规范。', - activeUser: Math.ceil(Math.random() * 100000) + 100000, - newUser: Math.ceil(Math.random() * 1000) + 1000, - star: Math.ceil(Math.random() * 100) + 100, - like: Math.ceil(Math.random() * 100) + 100, - message: Math.ceil(Math.random() * 10) + 10, - content: - '段落示意:蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。蚂蚁金服设计平台 ant.design,用最小的工作量,无缝接入蚂蚁金服生态,提供跨越设计与开发的体验解决方案。', - members: [ - { - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png', - name: '曲丽丽', - id: 'member1', - }, - { - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png', - name: '王昭君', - id: 'member2', - }, - { - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png', - name: '董娜娜', - id: 'member3', - }, - ], - }); - } - - return list; -} - -function getFakeList(req: Request, res: Response) { - const params: any = req.query; - - const count = params.count * 1 || 20; - - const result = fakeList(count); - return res.json({ - data: { - list: result, - }, - }); -} - -export default { - 'GET /api/fake_list': getFakeList, -}; diff --git a/demo/src/pages/list/search/projects/components/AvatarList/index.less b/demo/src/pages/list/search/projects/components/AvatarList/index.less deleted file mode 100644 index a7a3d441..00000000 --- a/demo/src/pages/list/search/projects/components/AvatarList/index.less +++ /dev/null @@ -1,50 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.avatarList { - display: inline-block; - ul { - display: inline-block; - margin-left: 8px; - font-size: 0; - } -} - -.avatarItem { - display: inline-block; - width: @avatar-size-base; - height: @avatar-size-base; - margin-left: -8px; - font-size: @font-size-base; - :global { - .ant-avatar { - border: 1px solid @border-color-base; - } - } -} - -.avatarItemLarge { - width: @avatar-size-lg; - height: @avatar-size-lg; -} - -.avatarItemSmall { - width: @avatar-size-sm; - height: @avatar-size-sm; -} - -.avatarItemMini { - width: 20px; - height: 20px; - :global { - .ant-avatar { - width: 20px; - height: 20px; - line-height: 20px; - - .ant-avatar-string { - font-size: 12px; - line-height: 18px; - } - } - } -} diff --git a/demo/src/pages/list/search/projects/components/AvatarList/index.tsx b/demo/src/pages/list/search/projects/components/AvatarList/index.tsx deleted file mode 100644 index 4d57501a..00000000 --- a/demo/src/pages/list/search/projects/components/AvatarList/index.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import { Avatar, Tooltip } from 'antd'; - -import React from 'react'; -import classNames from 'classnames'; -import styles from './index.less'; - -export declare type SizeType = number | 'small' | 'default' | 'large'; - -export type AvatarItemProps = { - tips: React.ReactNode; - src: string; - size?: SizeType; - style?: React.CSSProperties; - onClick?: () => void; -}; - -export type AvatarListProps = { - Item?: React.ReactElement; - size?: SizeType; - maxLength?: number; - excessItemsStyle?: React.CSSProperties; - style?: React.CSSProperties; - children: React.ReactElement | React.ReactElement[]; -}; - -const avatarSizeToClassName = (size?: SizeType | 'mini') => - classNames(styles.avatarItem, { - [styles.avatarItemLarge]: size === 'large', - [styles.avatarItemSmall]: size === 'small', - [styles.avatarItemMini]: size === 'mini', - }); - -const Item: React.FC = ({ src, size, tips, onClick = () => {} }) => { - const cls = avatarSizeToClassName(size); - - return ( -
  • - {tips ? ( - - - - ) : ( - - )} -
  • - ); -}; - -const AvatarList: React.FC & { Item: typeof Item } = ({ - children, - size, - maxLength = 5, - excessItemsStyle, - ...other -}) => { - const numOfChildren = React.Children.count(children); - const numToShow = maxLength >= numOfChildren ? numOfChildren : maxLength; - const childrenArray = React.Children.toArray(children) as React.ReactElement[]; - const childrenWithProps = childrenArray.slice(0, numToShow).map((child) => - React.cloneElement(child, { - size, - }), - ); - - if (numToShow < numOfChildren) { - const cls = avatarSizeToClassName(size); - - childrenWithProps.push( -
  • - {`+${numOfChildren - maxLength}`} -
  • , - ); - } - - return ( -
    -
      {childrenWithProps}
    -
    - ); -}; - -AvatarList.Item = Item; - -export default AvatarList; diff --git a/demo/src/pages/list/search/projects/components/StandardFormRow/index.less b/demo/src/pages/list/search/projects/components/StandardFormRow/index.less deleted file mode 100644 index d619cd2c..00000000 --- a/demo/src/pages/list/search/projects/components/StandardFormRow/index.less +++ /dev/null @@ -1,88 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.standardFormRow { - display: flex; - width: 100%; - margin-bottom: 16px; - padding-bottom: 16px; - border-bottom: 1px dashed @border-color-split; - :global { - .ant-form-item, - .ant-legacy-form-item { - margin-right: 24px; - } - .ant-form-item-label, - .ant-legacy-form-item-label { - label { - margin-right: 0; - color: @text-color; - } - } - .ant-form-item-label, - .ant-legacy-form-item-label, - .ant-form-item-control, - .ant-legacy-form-item-control { - padding: 0; - line-height: 32px; - } - } - .label { - flex: 0 0 auto; - margin-right: 24px; - color: @heading-color; - font-size: @font-size-base; - text-align: right; - & > span { - display: inline-block; - height: 32px; - line-height: 32px; - &::after { - content: ':'; - } - } - } - .content { - flex: 1 1 0; - :global { - .ant-form-item, - .ant-legacy-form-item { - &:last-child { - display: block; - margin-right: 0; - } - } - } - } -} - -.standardFormRowLast { - margin-bottom: 0; - padding-bottom: 0; - border: none; -} - -.standardFormRowBlock { - :global { - .ant-form-item, - .ant-legacy-form-item, - div.ant-form-item-control-wrapper, - div.ant-legacy-form-item-control-wrapper { - display: block; - } - } -} - -.standardFormRowGrid { - :global { - .ant-form-item, - .ant-legacy-form-item, - div.ant-form-item-control-wrapper, - div.ant-legacy-form-item-control-wrapper { - display: block; - } - .ant-form-item-label, - .ant-legacy-form-item-label { - float: left; - } - } -} diff --git a/demo/src/pages/list/search/projects/components/StandardFormRow/index.tsx b/demo/src/pages/list/search/projects/components/StandardFormRow/index.tsx deleted file mode 100644 index fe4cb388..00000000 --- a/demo/src/pages/list/search/projects/components/StandardFormRow/index.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import React from 'react'; -import classNames from 'classnames'; -import styles from './index.less'; - -type StandardFormRowProps = { - title?: string; - last?: boolean; - block?: boolean; - grid?: boolean; - style?: React.CSSProperties; -}; - -const StandardFormRow: React.FC = ({ - title, - children, - last, - block, - grid, - ...rest -}) => { - const cls = classNames(styles.standardFormRow, { - [styles.standardFormRowBlock]: block, - [styles.standardFormRowLast]: last, - [styles.standardFormRowGrid]: grid, - }); - - return ( -
    - {title && ( -
    - {title} -
    - )} -
    {children}
    -
    - ); -}; - -export default StandardFormRow; diff --git a/demo/src/pages/list/search/projects/components/TagSelect/index.less b/demo/src/pages/list/search/projects/components/TagSelect/index.less deleted file mode 100644 index b174f042..00000000 --- a/demo/src/pages/list/search/projects/components/TagSelect/index.less +++ /dev/null @@ -1,33 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.tagSelect { - position: relative; - max-height: 32px; - margin-left: -8px; - overflow: hidden; - line-height: 32px; - transition: all 0.3s; - user-select: none; - :global { - .ant-tag { - margin-right: 24px; - padding: 0 8px; - font-size: @font-size-base; - } - } - &.expanded { - max-height: 200px; - transition: all 0.3s; - } - .trigger { - position: absolute; - top: 0; - right: 0; - span.anticon { - font-size: 12px; - } - } - &.hasExpandTag { - padding-right: 50px; - } -} diff --git a/demo/src/pages/list/search/projects/components/TagSelect/index.tsx b/demo/src/pages/list/search/projects/components/TagSelect/index.tsx deleted file mode 100644 index 5f10efd4..00000000 --- a/demo/src/pages/list/search/projects/components/TagSelect/index.tsx +++ /dev/null @@ -1,142 +0,0 @@ -import { DownOutlined, UpOutlined } from '@ant-design/icons'; -import { useBoolean, useControllableValue } from 'ahooks'; -import { Tag } from 'antd'; -import classNames from 'classnames'; -import type { FC } from 'react'; -import React from 'react'; -import styles from './index.less'; - -const { CheckableTag } = Tag; - -export interface TagSelectOptionProps { - value: string | number; - style?: React.CSSProperties; - checked?: boolean; - onChange?: (value: string | number, state: boolean) => void; -} - -const TagSelectOption: React.FC & { - isTagSelectOption: boolean; -} = ({ children, checked, onChange, value }) => ( - onChange && onChange(value, state)} - > - {children} - -); - -TagSelectOption.isTagSelectOption = true; - -type TagSelectOptionElement = React.ReactElement; -export interface TagSelectProps { - onChange?: (value: (string | number)[]) => void; - expandable?: boolean; - value?: (string | number)[]; - defaultValue?: (string | number)[]; - style?: React.CSSProperties; - hideCheckAll?: boolean; - actionsText?: { - expandText?: React.ReactNode; - collapseText?: React.ReactNode; - selectAllText?: React.ReactNode; - }; - className?: string; - Option?: TagSelectOptionProps; - children?: TagSelectOptionElement | TagSelectOptionElement[]; -} - -const TagSelect: FC & { Option: typeof TagSelectOption } = (props) => { - const { children, hideCheckAll = false, className, style, expandable, actionsText = {} } = props; - - const [expand, { toggle }] = useBoolean(); - - const [value, setValue] = useControllableValue<(string | number)[]>(props); - - const isTagSelectOption = (node: TagSelectOptionElement) => - node && - node.type && - (node.type.isTagSelectOption || node.type.displayName === 'TagSelectOption'); - - const getAllTags = () => { - const childrenArray = React.Children.toArray(children) as TagSelectOptionElement[]; - const checkedTags = childrenArray - .filter((child) => isTagSelectOption(child)) - .map((child) => child.props.value); - return checkedTags || []; - }; - - const onSelectAll = (checked: boolean) => { - let checkedTags: (string | number)[] = []; - if (checked) { - checkedTags = getAllTags(); - } - setValue(checkedTags); - }; - - const handleTagChange = (tag: string | number, checked: boolean) => { - const checkedTags: (string | number)[] = [...(value || [])]; - - const index = checkedTags.indexOf(tag); - if (checked && index === -1) { - checkedTags.push(tag); - } else if (!checked && index > -1) { - checkedTags.splice(index, 1); - } - setValue(checkedTags); - }; - - const checkedAll = getAllTags().length === value?.length; - const { expandText = '展开', collapseText = '收起', selectAllText = '全部' } = actionsText; - - const cls = classNames(styles.tagSelect, className, { - [styles.hasExpandTag]: expandable, - [styles.expanded]: expand, - }); - - return ( -
    - {hideCheckAll ? null : ( - - {selectAllText} - - )} - {children && - React.Children.map(children, (child: TagSelectOptionElement) => { - if (isTagSelectOption(child)) { - return React.cloneElement(child, { - key: `tag-select-${child.props.value}`, - value: child.props.value, - checked: value && value.indexOf(child.props.value) > -1, - onChange: handleTagChange, - }); - } - return child; - })} - {expandable && ( - { - toggle(); - }} - > - {expand ? ( - <> - {collapseText} - - ) : ( - <> - {expandText} - - - )} - - )} -
    - ); -}; - -TagSelect.Option = TagSelectOption; - -export default TagSelect; diff --git a/demo/src/pages/list/search/projects/data.d.ts b/demo/src/pages/list/search/projects/data.d.ts deleted file mode 100644 index 0a4597c9..00000000 --- a/demo/src/pages/list/search/projects/data.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -export type Member = { - avatar: string; - name: string; - id: string; -}; - -export interface Params { - count: number; -} -export interface ListItemDataType { - id: string; - owner: string; - title: string; - avatar: string; - cover: string; - status: 'normal' | 'exception' | 'active' | 'success'; - percent: number; - logo: string; - href: string; - body?: any; - updatedAt: number; - createdAt: number; - subDescription: string; - description: string; - activeUser: number; - newUser: number; - star: number; - like: number; - message: number; - content: string; - members: Member[]; -} diff --git a/demo/src/pages/list/search/projects/index.tsx b/demo/src/pages/list/search/projects/index.tsx deleted file mode 100644 index 19eafebe..00000000 --- a/demo/src/pages/list/search/projects/index.tsx +++ /dev/null @@ -1,135 +0,0 @@ -import { Card, Col, Form, List, Row, Select, Typography } from 'antd'; -import moment from 'moment'; -import type { FC } from 'react'; -import { useRequest } from 'umi'; -import AvatarList from './components/AvatarList'; -import StandardFormRow from './components/StandardFormRow'; -import TagSelect from './components/TagSelect'; -import type { ListItemDataType } from './data.d'; -import { queryFakeList } from './service'; -import styles from './style.less'; - -const { Option } = Select; -const FormItem = Form.Item; -const { Paragraph } = Typography; - -const getKey = (id: string, index: number) => `${id}-${index}`; - -const Projects: FC = () => { - const { data, loading, run } = useRequest((values: any) => { - console.log('form data', values); - return queryFakeList({ - count: 8, - }); - }); - - const list = data?.list || []; - - const cardList = list && ( - - rowKey="id" - loading={loading} - grid={{ - gutter: 16, - xs: 1, - sm: 2, - md: 3, - lg: 3, - xl: 4, - xxl: 4, - }} - dataSource={list} - renderItem={(item) => ( - - }> - {item.title}} - description={ - - {item.subDescription} - - } - /> -
    - {moment(item.updatedAt).fromNow()} -
    - - {item.members.map((member, i) => ( - - ))} - -
    -
    -
    -
    - )} - /> - ); - - const formItemLayout = { - wrapperCol: { - xs: { span: 24 }, - sm: { span: 16 }, - }, - }; - - return ( -
    - -
    { - // 表单项变化时请求数据 - // 模拟查询表单生效 - run(values); - }} - > - - - - 类目一 - 类目二 - 类目三 - 类目四 - 类目五 - 类目六 - 类目七 - 类目八 - 类目九 - 类目十 - 类目十一 - 类目十二 - - - - - -
    - - - - - - - - - - - - - -
    {cardList}
    - - ); -}; - -export default Projects; diff --git a/demo/src/pages/list/search/projects/service.ts b/demo/src/pages/list/search/projects/service.ts deleted file mode 100644 index fd1bcf6f..00000000 --- a/demo/src/pages/list/search/projects/service.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { request } from 'umi'; -import type { Params, ListItemDataType } from './data'; - -export async function queryFakeList( - params: Params, -): Promise<{ data: { list: ListItemDataType[] } }> { - return request('/api/fake_list', { - params, - }); -} diff --git a/demo/src/pages/list/search/projects/style.less b/demo/src/pages/list/search/projects/style.less deleted file mode 100644 index e2cf6787..00000000 --- a/demo/src/pages/list/search/projects/style.less +++ /dev/null @@ -1,55 +0,0 @@ -@import '~antd/es/style/themes/default.less'; -@import './utils/utils.less'; - -.coverCardList { - .card { - :global { - .ant-card-meta-title { - margin-bottom: 4px; - & > a { - display: inline-block; - max-width: 100%; - color: @heading-color; - } - } - .ant-card-meta-description { - height: 44px; - overflow: hidden; - line-height: 22px; - } - } - - &:hover { - :global { - .ant-card-meta-title > a { - color: @primary-color; - } - } - } - } - - .cardItemContent { - display: flex; - height: 20px; - margin-top: 16px; - margin-bottom: -4px; - line-height: 20px; - & > span { - flex: 1; - color: @text-color-secondary; - font-size: 12px; - } - .avatarList { - flex: 0 1 auto; - } - } - .cardList { - margin-top: 24px; - } - - :global { - .ant-list .ant-list-item-content-single { - max-width: 100%; - } - } -} diff --git a/demo/src/pages/list/search/projects/utils/utils.less b/demo/src/pages/list/search/projects/utils/utils.less deleted file mode 100644 index de1aa642..00000000 --- a/demo/src/pages/list/search/projects/utils/utils.less +++ /dev/null @@ -1,50 +0,0 @@ -.textOverflow() { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - word-break: break-all; -} - -.textOverflowMulti(@line: 3, @bg: #fff) { - position: relative; - max-height: @line * 1.5em; - margin-right: -1em; - padding-right: 1em; - overflow: hidden; - line-height: 1.5em; - text-align: justify; - &::before { - position: absolute; - right: 14px; - bottom: 0; - padding: 0 1px; - background: @bg; - content: '...'; - } - &::after { - position: absolute; - right: 14px; - width: 1em; - height: 1em; - margin-top: 0.2em; - background: white; - content: ''; - } -} - -// mixins for clearfix -// ------------------------ -.clearfix() { - zoom: 1; - &::before, - &::after { - display: table; - content: ' '; - } - &::after { - clear: both; - height: 0; - font-size: 0; - visibility: hidden; - } -} diff --git a/demo/src/pages/list/table-list/_mock.ts b/demo/src/pages/list/table-list/_mock.ts deleted file mode 100644 index 26724780..00000000 --- a/demo/src/pages/list/table-list/_mock.ts +++ /dev/null @@ -1,177 +0,0 @@ -// eslint-disable-next-line import/no-extraneous-dependencies -import type { Request, Response } from 'express'; -import { parse } from 'url'; -import type { TableListItem, TableListParams } from './data.d'; - -// mock tableListDataSource -const genList = (current: number, pageSize: number) => { - const tableListDataSource: TableListItem[] = []; - - for (let i = 0; i < pageSize; i += 1) { - const index = (current - 1) * 10 + i; - tableListDataSource.push({ - key: index, - disabled: i % 6 === 0, - href: 'https://ant.design', - avatar: [ - 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', - 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', - ][i % 2], - name: `TradeCode ${index}`, - owner: '曲丽丽', - desc: '这是一段描述', - callNo: Math.floor(Math.random() * 1000), - status: (Math.floor(Math.random() * 10) % 4).toString(), - updatedAt: new Date(), - createdAt: new Date(), - progress: Math.ceil(Math.random() * 100), - }); - } - tableListDataSource.reverse(); - return tableListDataSource; -}; - -let tableListDataSource = genList(1, 100); - -function getRule(req: Request, res: Response, u: string) { - let realUrl = u; - if (!realUrl || Object.prototype.toString.call(realUrl) !== '[object String]') { - realUrl = req.url; - } - const { current = 1, pageSize = 10 } = req.query; - const params = parse(realUrl, true).query as unknown as TableListParams; - - let dataSource = [...tableListDataSource].slice( - ((current as number) - 1) * (pageSize as number), - (current as number) * (pageSize as number), - ); - if (params.sorter) { - const sorter = JSON.parse(params.sorter as any); - dataSource = dataSource.sort((prev, next) => { - let sortNumber = 0; - Object.keys(sorter).forEach((key) => { - if (sorter[key] === 'descend') { - if (prev[key] - next[key] > 0) { - sortNumber += -1; - } else { - sortNumber += 1; - } - return; - } - if (prev[key] - next[key] > 0) { - sortNumber += 1; - } else { - sortNumber += -1; - } - }); - return sortNumber; - }); - } - if (params.filter) { - const filter = JSON.parse(params.filter as any) as Record; - if (Object.keys(filter).length > 0) { - dataSource = dataSource.filter((item) => { - return Object.keys(filter).some((key) => { - if (!filter[key]) { - return true; - } - if (filter[key].includes(`${item[key]}`)) { - return true; - } - return false; - }); - }); - } - } - - if (params.name) { - dataSource = dataSource.filter((data) => data.name.includes(params.name || '')); - } - - let finalPageSize = 10; - if (params.pageSize) { - finalPageSize = parseInt(`${params.pageSize}`, 10); - } - - const result = { - data: dataSource, - total: tableListDataSource.length, - success: true, - pageSize: finalPageSize, - current: parseInt(`${params.currentPage}`, 10) || 1, - }; - - return res.json(result); -} - -function postRule(req: Request, res: Response, u: string, b: Request) { - let realUrl = u; - if (!realUrl || Object.prototype.toString.call(realUrl) !== '[object String]') { - realUrl = req.url; - } - - const body = (b && b.body) || req.body; - const { name, desc, key } = body; - - switch (req.method) { - /* eslint no-case-declarations:0 */ - case 'DELETE': - tableListDataSource = tableListDataSource.filter((item) => key.indexOf(item.key) === -1); - break; - case 'POST': - (() => { - const i = Math.ceil(Math.random() * 10000); - const newRule = { - key: tableListDataSource.length, - href: 'https://ant.design', - avatar: [ - 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', - 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', - ][i % 2], - name, - owner: '曲丽丽', - desc, - callNo: Math.floor(Math.random() * 1000), - status: (Math.floor(Math.random() * 10) % 2).toString(), - updatedAt: new Date(), - createdAt: new Date(), - progress: Math.ceil(Math.random() * 100), - }; - tableListDataSource.unshift(newRule); - return res.json(newRule); - })(); - return; - - case 'PUT': - (() => { - let newRule = {}; - tableListDataSource = tableListDataSource.map((item) => { - if (item.key === key) { - newRule = { ...item, desc, name }; - return { ...item, desc, name }; - } - return item; - }); - return res.json(newRule); - })(); - return; - default: - break; - } - - const result = { - list: tableListDataSource, - pagination: { - total: tableListDataSource.length, - }, - }; - - res.json(result); -} - -export default { - 'GET /api/rule': getRule, - 'POST /api/rule': postRule, - 'DELETE /api/rule': postRule, - 'PUT /api/rule': postRule, -}; diff --git a/demo/src/pages/list/table-list/components/CreateForm.tsx b/demo/src/pages/list/table-list/components/CreateForm.tsx deleted file mode 100644 index f7ecb093..00000000 --- a/demo/src/pages/list/table-list/components/CreateForm.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React from 'react'; -import { Modal } from 'antd'; - -type CreateFormProps = { - modalVisible: boolean; - onCancel: () => void; -}; - -const CreateForm: React.FC = (props) => { - const { modalVisible, onCancel } = props; - - return ( - onCancel()} - footer={null} - > - {props.children} - - ); -}; - -export default CreateForm; diff --git a/demo/src/pages/list/table-list/components/UpdateForm.tsx b/demo/src/pages/list/table-list/components/UpdateForm.tsx deleted file mode 100644 index d704c132..00000000 --- a/demo/src/pages/list/table-list/components/UpdateForm.tsx +++ /dev/null @@ -1,159 +0,0 @@ -import React from 'react'; -import { Modal } from 'antd'; -import { - ProFormSelect, - ProFormText, - ProFormTextArea, - StepsForm, - ProFormRadio, - ProFormDateTimePicker, -} from '@ant-design/pro-form'; -import type { TableListItem } from '../data'; - -export type FormValueType = { - target?: string; - template?: string; - type?: string; - time?: string; - frequency?: string; -} & Partial; - -export type UpdateFormProps = { - onCancel: (flag?: boolean, formVals?: FormValueType) => void; - onSubmit: (values: FormValueType) => Promise; - updateModalVisible: boolean; - values: Partial; -}; - -const UpdateForm: React.FC = (props) => { - return ( - { - return ( - { - props.onCancel(); - }} - > - {dom} - - ); - }} - onFinish={props.onSubmit} - > - - - - - - - - - - - - - - - ); -}; - -export default UpdateForm; diff --git a/demo/src/pages/list/table-list/data.d.ts b/demo/src/pages/list/table-list/data.d.ts deleted file mode 100644 index 5063cf37..00000000 --- a/demo/src/pages/list/table-list/data.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -export type TableListItem = { - key: number; - disabled?: boolean; - href: string; - avatar: string; - name: string; - owner: string; - desc: string; - callNo: number; - status: string; - updatedAt: Date; - createdAt: Date; - progress: number; -}; - -export type TableListPagination = { - total: number; - pageSize: number; - current: number; -}; - -export type TableListData = { - list: TableListItem[]; - pagination: Partial; -}; - -export type TableListParams = { - status?: string; - name?: string; - desc?: string; - key?: number; - pageSize?: number; - currentPage?: number; - filter?: Record; - sorter?: Record; -}; diff --git a/demo/src/pages/list/table-list/index.tsx b/demo/src/pages/list/table-list/index.tsx deleted file mode 100644 index bc295de8..00000000 --- a/demo/src/pages/list/table-list/index.tsx +++ /dev/null @@ -1,320 +0,0 @@ -import { PlusOutlined } from '@ant-design/icons'; -import { Button, message, Input, Drawer } from 'antd'; -import React, { useState, useRef } from 'react'; -import { PageContainer, FooterToolbar } from '@ant-design/pro-layout'; -import type { ProColumns, ActionType } from '@ant-design/pro-table'; -import ProTable from '@ant-design/pro-table'; -import { ModalForm, ProFormText, ProFormTextArea } from '@ant-design/pro-form'; -import type { ProDescriptionsItemProps } from '@ant-design/pro-descriptions'; -import ProDescriptions from '@ant-design/pro-descriptions'; -import type { FormValueType } from './components/UpdateForm'; -import UpdateForm from './components/UpdateForm'; -import { rule, addRule, updateRule, removeRule } from './service'; -import type { TableListItem, TableListPagination } from './data'; -/** - * 添加节点 - * - * @param fields - */ - -const handleAdd = async (fields: TableListItem) => { - const hide = message.loading('正在添加'); - - try { - await addRule({ ...fields }); - hide(); - message.success('添加成功'); - return true; - } catch (error) { - hide(); - message.error('添加失败请重试!'); - return false; - } -}; -/** - * 更新节点 - * - * @param fields - */ - -const handleUpdate = async (fields: FormValueType, currentRow?: TableListItem) => { - const hide = message.loading('正在配置'); - - try { - await updateRule({ - ...currentRow, - ...fields, - }); - hide(); - message.success('配置成功'); - return true; - } catch (error) { - hide(); - message.error('配置失败请重试!'); - return false; - } -}; -/** - * 删除节点 - * - * @param selectedRows - */ - -const handleRemove = async (selectedRows: TableListItem[]) => { - const hide = message.loading('正在删除'); - if (!selectedRows) return true; - - try { - await removeRule({ - key: selectedRows.map((row) => row.key), - }); - hide(); - message.success('删除成功,即将刷新'); - return true; - } catch (error) { - hide(); - message.error('删除失败,请重试'); - return false; - } -}; - -const TableList: React.FC = () => { - /** 新建窗口的弹窗 */ - const [createModalVisible, handleModalVisible] = useState(false); - /** 分布更新窗口的弹窗 */ - - const [updateModalVisible, handleUpdateModalVisible] = useState(false); - const [showDetail, setShowDetail] = useState(false); - const actionRef = useRef(); - const [currentRow, setCurrentRow] = useState(); - const [selectedRowsState, setSelectedRows] = useState([]); - /** 国际化配置 */ - - const columns: ProColumns[] = [ - { - title: '规则名称', - dataIndex: 'name', - tip: '规则名称是唯一的 key', - render: (dom, entity) => { - return ( - { - setCurrentRow(entity); - setShowDetail(true); - }} - > - {dom} - - ); - }, - }, - { - title: '描述', - dataIndex: 'desc', - valueType: 'textarea', - }, - { - title: '服务调用次数', - dataIndex: 'callNo', - sorter: true, - hideInForm: true, - renderText: (val: string) => `${val}万`, - }, - { - title: '状态', - dataIndex: 'status', - hideInForm: true, - valueEnum: { - 0: { - text: '关闭', - status: 'Default', - }, - 1: { - text: '运行中', - status: 'Processing', - }, - 2: { - text: '已上线', - status: 'Success', - }, - 3: { - text: '异常', - status: 'Error', - }, - }, - }, - { - title: '上次调度时间', - sorter: true, - dataIndex: 'updatedAt', - valueType: 'dateTime', - renderFormItem: (item, { defaultRender, ...rest }, form) => { - const status = form.getFieldValue('status'); - - if (`${status}` === '0') { - return false; - } - - if (`${status}` === '3') { - return ; - } - - return defaultRender(item); - }, - }, - { - title: '操作', - dataIndex: 'option', - valueType: 'option', - render: (_, record) => [ - { - handleUpdateModalVisible(true); - setCurrentRow(record); - }} - > - 配置 - , - - 订阅警报 - , - ], - }, - ]; - - return ( - - - headerTitle="查询表格" - actionRef={actionRef} - rowKey="key" - search={{ - labelWidth: 120, - }} - toolBarRender={() => [ - , - ]} - request={rule} - columns={columns} - rowSelection={{ - onChange: (_, selectedRows) => { - setSelectedRows(selectedRows); - }, - }} - /> - {selectedRowsState?.length > 0 && ( - - 已选择{' '} - - {selectedRowsState.length} - {' '} - 项    - - 服务调用次数总计 {selectedRowsState.reduce((pre, item) => pre + item.callNo!, 0)} 万 - - - } - > - - - - )} - { - const success = await handleAdd(value as TableListItem); - if (success) { - handleModalVisible(false); - if (actionRef.current) { - actionRef.current.reload(); - } - } - }} - > - - - - { - const success = await handleUpdate(value, currentRow); - - if (success) { - handleUpdateModalVisible(false); - setCurrentRow(undefined); - - if (actionRef.current) { - actionRef.current.reload(); - } - } - }} - onCancel={() => { - handleUpdateModalVisible(false); - setCurrentRow(undefined); - }} - updateModalVisible={updateModalVisible} - values={currentRow || {}} - /> - - { - setCurrentRow(undefined); - setShowDetail(false); - }} - closable={false} - > - {currentRow?.name && ( - - column={2} - title={currentRow?.name} - request={async () => ({ - data: currentRow || {}, - })} - params={{ - id: currentRow?.name, - }} - columns={columns as ProDescriptionsItemProps[]} - /> - )} - - - ); -}; - -export default TableList; diff --git a/demo/src/pages/list/table-list/service.ts b/demo/src/pages/list/table-list/service.ts deleted file mode 100644 index dc1d74a2..00000000 --- a/demo/src/pages/list/table-list/service.ts +++ /dev/null @@ -1,56 +0,0 @@ -// @ts-ignore -/* eslint-disable */ -import { request } from 'umi'; -import { TableListItem } from './data'; - -/** 获取规则列表 GET /api/rule */ -export async function rule( - params: { - // query - /** 当前的页码 */ - current?: number; - /** 页面的容量 */ - pageSize?: number; - }, - options?: { [key: string]: any }, -) { - return request<{ - data: TableListItem[]; - /** 列表的内容总数 */ - total?: number; - success?: boolean; - }>('/api/rule', { - method: 'GET', - params: { - ...params, - }, - ...(options || {}), - }); -} - -/** 新建规则 PUT /api/rule */ -export async function updateRule(data: { [key: string]: any }, options?: { [key: string]: any }) { - return request('/api/rule', { - data, - method: 'PUT', - ...(options || {}), - }); -} - -/** 新建规则 POST /api/rule */ -export async function addRule(data: { [key: string]: any }, options?: { [key: string]: any }) { - return request('/api/rule', { - data, - method: 'POST', - ...(options || {}), - }); -} - -/** 删除规则 DELETE /api/rule */ -export async function removeRule(data: { key: number[] }, options?: { [key: string]: any }) { - return request>('/api/rule', { - data, - method: 'DELETE', - ...(options || {}), - }); -} diff --git a/demo/src/pages/profile/advanced/_mock.ts b/demo/src/pages/profile/advanced/_mock.ts deleted file mode 100644 index 1bf3b384..00000000 --- a/demo/src/pages/profile/advanced/_mock.ts +++ /dev/null @@ -1,81 +0,0 @@ -import type { Request, Response } from 'express'; - -const advancedOperation1 = [ - { - key: 'op1', - type: '订购关系生效', - name: '曲丽丽', - status: 'agree', - updatedAt: '2017-10-03 19:23:12', - memo: '-', - }, - { - key: 'op2', - type: '财务复审', - name: '付小小', - status: 'reject', - updatedAt: '2017-10-03 19:23:12', - memo: '不通过原因', - }, - { - key: 'op3', - type: '部门初审', - name: '周毛毛', - status: 'agree', - updatedAt: '2017-10-03 19:23:12', - memo: '-', - }, - { - key: 'op4', - type: '提交订单', - name: '林东东', - status: 'agree', - updatedAt: '2017-10-03 19:23:12', - memo: '很棒', - }, - { - key: 'op5', - type: '创建订单', - name: '汗牙牙', - status: 'agree', - updatedAt: '2017-10-03 19:23:12', - memo: '-', - }, -]; - -const advancedOperation2 = [ - { - key: 'op1', - type: '订购关系生效', - name: '曲丽丽', - status: 'agree', - updatedAt: '2017-10-03 19:23:12', - memo: '-', - }, -]; - -const advancedOperation3 = [ - { - key: 'op1', - type: '创建订单', - name: '汗牙牙', - status: 'agree', - updatedAt: '2017-10-03 19:23:12', - memo: '-', - }, -]; - -function getProfileAdvancedData(req: Request, res: Response) { - const result = { - data: { - advancedOperation1, - advancedOperation2, - advancedOperation3, - }, - }; - return res.json(result); -} - -export default { - 'GET /api/profile/advanced': getProfileAdvancedData, -}; diff --git a/demo/src/pages/profile/advanced/data.d.ts b/demo/src/pages/profile/advanced/data.d.ts deleted file mode 100644 index 95f7d31e..00000000 --- a/demo/src/pages/profile/advanced/data.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -export type AdvancedOperation1 = { - key: string; - type: string; - name: string; - status: string; - updatedAt: string; - memo: string; -}; - -export type AdvancedOperation2 = { - key: string; - type: string; - name: string; - status: string; - updatedAt: string; - memo: string; -}; - -export type AdvancedOperation3 = { - key: string; - type: string; - name: string; - status: string; - updatedAt: string; - memo: string; -}; - -export interface AdvancedProfileData { - advancedOperation1?: AdvancedOperation1[]; - advancedOperation2?: AdvancedOperation2[]; - advancedOperation3?: AdvancedOperation3[]; -} diff --git a/demo/src/pages/profile/advanced/index.tsx b/demo/src/pages/profile/advanced/index.tsx deleted file mode 100644 index bf59e86c..00000000 --- a/demo/src/pages/profile/advanced/index.tsx +++ /dev/null @@ -1,356 +0,0 @@ -import { - DingdingOutlined, - DownOutlined, - EllipsisOutlined, - InfoCircleOutlined, -} from '@ant-design/icons'; -import { - Badge, - Button, - Card, - Statistic, - Descriptions, - Divider, - Dropdown, - Menu, - Popover, - Steps, - Table, - Tooltip, - Empty, -} from 'antd'; -import { GridContent, PageContainer, RouteContext } from '@ant-design/pro-layout'; -import type { FC } from 'react'; -import React, { Fragment, useState } from 'react'; - -import classNames from 'classnames'; -import { useRequest } from 'umi'; -import type { AdvancedProfileData } from './data.d'; -import { queryAdvancedProfile } from './service'; -import styles from './style.less'; - -const { Step } = Steps; -const ButtonGroup = Button.Group; - -const menu = ( - - 选项一 - 选项二 - 选项三 - -); - -const mobileMenu = ( - - 操作一 - 操作二 - 选项一 - 选项二 - 选项三 - -); - -const action = ( - - {({ isMobile }) => { - if (isMobile) { - return ( - } - overlay={mobileMenu} - placement="bottomRight" - > - 主操作 - - ); - } - return ( - - - - - - - - - - - ); - }} - -); - -const extra = ( -
    - - -
    -); - -const description = ( - - {({ isMobile }) => ( - - 曲丽丽 - XX 服务 - 2017-07-07 - - 12421 - - 2017-07-07 ~ 2017-08-08 - 请于两个工作日内确认 - - )} - -); - -const desc1 = ( -
    - - 曲丽丽 - - -
    2016-12-12 12:32
    -
    -); - -const desc2 = ( -
    - - 周毛毛 - - -
    - 催一下 -
    -
    -); - -const popoverContent = ( -
    - 吴加号 - - 未响应} /> - -
    - 耗时:2小时25分钟 -
    -
    -); - -const customDot = (dot: React.ReactNode, { status }: { status: string }) => { - if (status === 'process') { - return ( - - {dot} - - ); - } - return dot; -}; - -const operationTabList = [ - { - key: 'tab1', - tab: '操作日志一', - }, - { - key: 'tab2', - tab: '操作日志二', - }, - { - key: 'tab3', - tab: '操作日志三', - }, -]; - -const columns = [ - { - title: '操作类型', - dataIndex: 'type', - key: 'type', - }, - { - title: '操作人', - dataIndex: 'name', - key: 'name', - }, - { - title: '执行结果', - dataIndex: 'status', - key: 'status', - render: (text: string) => { - if (text === 'agree') { - return ; - } - return ; - }, - }, - { - title: '操作时间', - dataIndex: 'updatedAt', - key: 'updatedAt', - }, - { - title: '备注', - dataIndex: 'memo', - key: 'memo', - }, -]; - -type AdvancedState = { - operationKey: string; - tabActiveKey: string; -}; - -const Advanced: FC = () => { - const [tabStatus, seTabStatus] = useState({ - operationKey: 'tab1', - tabActiveKey: 'detail', - }); - const { data = {}, loading } = useRequest<{ data: AdvancedProfileData }>(queryAdvancedProfile); - const { advancedOperation1, advancedOperation2, advancedOperation3 } = data; - const contentList = { - tab1: ( -
    - ), - tab2: ( -
    - ), - tab3: ( -
    - ), - }; - const onTabChange = (tabActiveKey: string) => { - seTabStatus({ ...tabStatus, tabActiveKey }); - }; - const onOperationTabChange = (key: string) => { - seTabStatus({ ...tabStatus, operationKey: key }); - }; - - return ( - -
    - - - - {({ isMobile }) => ( - - - - - - - )} - - - - - 付小小 - 32943898021309809423 - 3321944288191034921 - 18112345678 - - 曲丽丽 18100000000 浙江省杭州市西湖区黄姑山路工专路交叉路口 - - - - 725 - 2017-08-08 - - 某某数据 - - - - - } - > - 725 - - 2017-08-08 - -

    信息组

    - - - 林东东 - 1234567 - XX公司 - YY部 - 2017-08-08 - - 这段描述很长很长很长很长很长很长很长很长很长很长很长很长很长很长... - - - - - - Citrullus lanatus (Thunb.) Matsum. et - Nakai一年生蔓生藤本;茎、枝粗壮,具明显的棱。卷须较粗.. - - - - - 付小小 - 1234568 - - -
    - - - - - {contentList[tabStatus.operationKey]} - -
    -
    -
    - ); -}; - -export default Advanced; diff --git a/demo/src/pages/profile/advanced/service.ts b/demo/src/pages/profile/advanced/service.ts deleted file mode 100644 index 7c00a9b8..00000000 --- a/demo/src/pages/profile/advanced/service.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { request } from 'umi'; - -export async function queryAdvancedProfile() { - return request('/api/profile/advanced'); -} diff --git a/demo/src/pages/profile/advanced/style.less b/demo/src/pages/profile/advanced/style.less deleted file mode 100644 index fa376f28..00000000 --- a/demo/src/pages/profile/advanced/style.less +++ /dev/null @@ -1,60 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.main { - :global { - .ant-descriptions-row > td { - padding-bottom: 8px; - } - .ant-page-header-heading-extra { - flex-direction: column; - } - } -} - -.headerList { - margin-bottom: 4px; - :global { - .ant-descriptions-row > td { - padding-bottom: 8px; - } - } - - .stepDescription { - position: relative; - left: 38px; - padding-top: 8px; - font-size: 14px; - text-align: left; - - > div { - margin-top: 8px; - margin-bottom: 4px; - } - } -} - -.pageHeader { - :global { - .ant-page-header-heading-extra > * + * { - margin-left: 8px; - } - } - .moreInfo { - display: flex; - justify-content: space-between; - width: 200px; - } -} - -@media screen and (max-width: @screen-sm) { - .stepDescription { - left: 8px; - } - .pageHeader { - :global { - .ant-pro-page-header-wrap-row { - flex-direction: column; - } - } - } -} diff --git a/demo/src/pages/profile/basic/_mock.ts b/demo/src/pages/profile/basic/_mock.ts deleted file mode 100644 index f432f8d5..00000000 --- a/demo/src/pages/profile/basic/_mock.ts +++ /dev/null @@ -1,92 +0,0 @@ -import type { Request, Response } from 'express'; - -const basicGoods = [ - { - id: '1234561', - name: '矿泉水 550ml', - barcode: '12421432143214321', - price: '2.00', - num: '1', - amount: '2.00', - }, - { - id: '1234562', - name: '凉茶 300ml', - barcode: '12421432143214322', - price: '3.00', - num: '2', - amount: '6.00', - }, - { - id: '1234563', - name: '好吃的薯片', - barcode: '12421432143214323', - price: '7.00', - num: '4', - amount: '28.00', - }, - { - id: '1234564', - name: '特别好吃的蛋卷', - barcode: '12421432143214324', - price: '8.50', - num: '3', - amount: '25.50', - }, -]; - -const basicProgress = [ - { - key: '1', - time: '2017-10-01 14:10', - rate: '联系客户', - status: 'processing', - operator: '取货员 ID1234', - cost: '5mins', - }, - { - key: '2', - time: '2017-10-01 14:05', - rate: '取货员出发', - status: 'success', - operator: '取货员 ID1234', - cost: '1h', - }, - { - key: '3', - time: '2017-10-01 13:05', - rate: '取货员接单', - status: 'success', - operator: '取货员 ID1234', - cost: '5mins', - }, - { - key: '4', - time: '2017-10-01 13:00', - rate: '申请审批通过', - status: 'success', - operator: '系统', - cost: '1h', - }, - { - key: '5', - time: '2017-10-01 12:00', - rate: '发起退货申请', - status: 'success', - operator: '用户', - cost: '5mins', - }, -]; - -function getProfileBasic(_: Request, res: Response) { - return res.json({ - data: { - basicProgress, - basicGoods, - }, - }); -} - -export default { - 'GET /api/profile/basic': getProfileBasic, -}; diff --git a/demo/src/pages/profile/basic/data.d.ts b/demo/src/pages/profile/basic/data.d.ts deleted file mode 100644 index 5b47678e..00000000 --- a/demo/src/pages/profile/basic/data.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -export type BasicGood = { - id: string; - name?: string; - barcode?: string; - price?: string; - num?: string | number; - amount?: string | number; -}; - -export type BasicProgress = { - key: string; - time: string; - rate: string; - status: string; - operator: string; - cost: string; -}; diff --git a/demo/src/pages/profile/basic/index.tsx b/demo/src/pages/profile/basic/index.tsx deleted file mode 100644 index 5f8ae892..00000000 --- a/demo/src/pages/profile/basic/index.tsx +++ /dev/null @@ -1,193 +0,0 @@ -import { PageContainer } from '@ant-design/pro-layout'; -import type { ProColumns } from '@ant-design/pro-table'; -import ProTable from '@ant-design/pro-table'; -import { Badge, Card, Descriptions, Divider } from 'antd'; -import type { FC } from 'react'; -import React from 'react'; -import { useRequest } from 'umi'; -import type { BasicGood, BasicProgress } from './data.d'; -import { queryBasicProfile } from './service'; -import styles from './style.less'; - -const progressColumns: ProColumns[] = [ - { - title: '时间', - dataIndex: 'time', - key: 'time', - }, - { - title: '当前进度', - dataIndex: 'rate', - key: 'rate', - }, - { - title: '状态', - dataIndex: 'status', - key: 'status', - render: (text: React.ReactNode) => { - if (text === 'success') { - return ; - } - return ; - }, - }, - - { - title: '操作员ID', - dataIndex: 'operator', - key: 'operator', - }, - { - title: '耗时', - dataIndex: 'cost', - key: 'cost', - }, -]; - -const Basic: FC = () => { - const { data, loading } = useRequest(() => { - return queryBasicProfile(); - }); - - const { basicGoods, basicProgress } = data || { - basicGoods: [], - basicProgress: [], - }; - let goodsData: typeof basicGoods = []; - if (basicGoods.length) { - let num = 0; - let amount = 0; - basicGoods.forEach((item) => { - num += Number(item.num); - amount += Number(item.amount); - }); - goodsData = basicGoods.concat({ - id: '总计', - num, - amount, - }); - } - - const renderContent = (value: any, _: any, index: any) => { - const obj: { - children: any; - props: { colSpan?: number }; - } = { - children: value, - props: {}, - }; - if (index === basicGoods.length) { - obj.props.colSpan = 0; - } - return obj; - }; - - const goodsColumns: ProColumns[] = [ - { - title: '商品编号', - dataIndex: 'id', - key: 'id', - render: (text: React.ReactNode, _: any, index: number) => { - if (index < basicGoods.length) { - return {text}; - } - return { - children: 总计, - props: { - colSpan: 4, - }, - }; - }, - }, - { - title: '商品名称', - dataIndex: 'name', - key: 'name', - render: renderContent, - }, - { - title: '商品条码', - dataIndex: 'barcode', - key: 'barcode', - render: renderContent, - }, - { - title: '单价', - dataIndex: 'price', - key: 'price', - align: 'right' as 'left' | 'right' | 'center', - render: renderContent, - }, - { - title: '数量(件)', - dataIndex: 'num', - key: 'num', - align: 'right' as 'left' | 'right' | 'center', - render: (text: React.ReactNode, _: any, index: number) => { - if (index < basicGoods.length) { - return text; - } - return {text}; - }, - }, - { - title: '金额', - dataIndex: 'amount', - key: 'amount', - align: 'right' as 'left' | 'right' | 'center', - render: (text: React.ReactNode, _: any, index: number) => { - if (index < basicGoods.length) { - return text; - } - return {text}; - }, - }, - ]; - - return ( - - - - 1000000000 - 已取货 - 1234123421 - 3214321432 - - - - 付小小 - 18100000000 - 菜鸟仓储 - 浙江省杭州市西湖区万塘路18号 - - - -
    退货商品
    - -
    退货进度
    - -
    -
    - ); -}; - -export default Basic; diff --git a/demo/src/pages/profile/basic/service.ts b/demo/src/pages/profile/basic/service.ts deleted file mode 100644 index df7f52f0..00000000 --- a/demo/src/pages/profile/basic/service.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { request } from 'umi'; -import type { BasicGood, BasicProgress } from './data.d'; - -export async function queryBasicProfile(): Promise<{ - data: { - basicProgress: BasicProgress[]; - basicGoods: BasicGood[]; - }; -}> { - return request('/api/profile/basic'); -} diff --git a/demo/src/pages/profile/basic/style.less b/demo/src/pages/profile/basic/style.less deleted file mode 100644 index 68f3c93f..00000000 --- a/demo/src/pages/profile/basic/style.less +++ /dev/null @@ -1,8 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.title { - margin-bottom: 16px; - color: @heading-color; - font-weight: 500; - font-size: 16px; -} diff --git a/demo/src/pages/result/fail/index.less b/demo/src/pages/result/fail/index.less deleted file mode 100644 index 85373f2e..00000000 --- a/demo/src/pages/result/fail/index.less +++ /dev/null @@ -1,11 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.error_icon { - color: @highlight-color; -} -.title { - margin-bottom: 16px; - color: @heading-color; - font-weight: 500; - font-size: 16px; -} diff --git a/demo/src/pages/result/fail/index.tsx b/demo/src/pages/result/fail/index.tsx deleted file mode 100644 index 9887ced7..00000000 --- a/demo/src/pages/result/fail/index.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import { CloseCircleOutlined, RightOutlined } from '@ant-design/icons'; -import { Button, Card, Result } from 'antd'; -import { Fragment } from 'react'; - -import { GridContent } from '@ant-design/pro-layout'; -import styles from './index.less'; - -const Content = ( - -
    - 您提交的内容有如下错误: -
    -
    - - 您的账户已被冻结 - - 立即解冻 - - -
    -
    - - 您的账户还不具备申请资格 - - 立即升级 - - -
    -
    -); - -export default () => ( - - - - 返回修改 - - } - style={{ marginTop: 48, marginBottom: 16 }} - > - {Content} - - - -); diff --git a/demo/src/pages/result/success/index.less b/demo/src/pages/result/success/index.less deleted file mode 100644 index 211772d5..00000000 --- a/demo/src/pages/result/success/index.less +++ /dev/null @@ -1,15 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.title { - position: relative; - color: @text-color; - font-size: 12px; - text-align: center; -} - -.head-title { - margin-bottom: 20px; - color: @heading-color; - font-weight: 500px; - font-size: 16px; -} diff --git a/demo/src/pages/result/success/index.tsx b/demo/src/pages/result/success/index.tsx deleted file mode 100644 index ba0b599b..00000000 --- a/demo/src/pages/result/success/index.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import { DingdingOutlined } from '@ant-design/icons'; -import { Button, Card, Steps, Result, Descriptions } from 'antd'; -import { Fragment } from 'react'; -import { GridContent } from '@ant-design/pro-layout'; - -import styles from './index.less'; - -const { Step } = Steps; - -const desc1 = ( -
    -
    - 曲丽丽 - -
    -
    2016-12-12 12:32
    -
    -); - -const desc2 = ( -
    -
    - 周毛毛 - - - 催一下 - -
    -
    -); - -const content = ( - <> - - 23421 - 曲丽丽 - 2016-12-12 ~ 2017-12-12 - -
    - - 创建项目} description={desc1} /> - 部门初审} description={desc2} /> - 财务复核} /> - 完成} /> - - -); - -const extra = ( - - - - - -); - -export default () => ( - - - - {content} - - - -); diff --git a/demo/src/pages/user/Login/index.less b/demo/src/pages/user/Login/index.less deleted file mode 100644 index f6ecf00d..00000000 --- a/demo/src/pages/user/Login/index.less +++ /dev/null @@ -1,50 +0,0 @@ -@import (reference) '~antd/es/style/themes/index'; - -.container { - display: flex; - flex-direction: column; - height: 100vh; - overflow: auto; - background: @layout-body-background; -} - -.lang { - width: 100%; - height: 40px; - line-height: 44px; - text-align: right; - :global(.ant-dropdown-trigger) { - margin-right: 24px; - } -} - -.content { - flex: 1; - padding: 32px 0; -} - -@media (min-width: @screen-md-min) { - .container { - background-image: url('https://gw.alipayobjects.com/zos/rmsportal/TVYTbAXWheQpRcWDaDMu.svg'); - background-repeat: no-repeat; - background-position: center 110px; - background-size: 100%; - } - - .content { - padding: 32px 0 24px; - } -} - -.icon { - margin-left: 8px; - color: rgba(0, 0, 0, 0.2); - font-size: 24px; - vertical-align: middle; - cursor: pointer; - transition: color 0.3s; - - &:hover { - color: @primary-color; - } -} diff --git a/demo/src/pages/user/Login/index.tsx b/demo/src/pages/user/Login/index.tsx deleted file mode 100644 index 7d0fe352..00000000 --- a/demo/src/pages/user/Login/index.tsx +++ /dev/null @@ -1,286 +0,0 @@ -import { - AlipayCircleOutlined, - LockOutlined, - MobileOutlined, - TaobaoCircleOutlined, - UserOutlined, - WeiboCircleOutlined, -} from '@ant-design/icons'; -import { Alert, message, Tabs } from 'antd'; -import React, { useState } from 'react'; -import { ProFormCaptcha, ProFormCheckbox, ProFormText, LoginForm } from '@ant-design/pro-form'; -import { useIntl, history, FormattedMessage, SelectLang, useModel } from 'umi'; -import Footer from '@/components/Footer'; -import { login } from '@/services/ant-design-pro/api'; -import { getFakeCaptcha } from '@/services/ant-design-pro/login'; - -import styles from './index.less'; - -const LoginMessage: React.FC<{ - content: string; -}> = ({ content }) => ( - -); - -const Login: React.FC = () => { - const [userLoginState, setUserLoginState] = useState({}); - const [type, setType] = useState('account'); - const { initialState, setInitialState } = useModel('@@initialState'); - - const intl = useIntl(); - - const fetchUserInfo = async () => { - const userInfo = await initialState?.fetchUserInfo?.(); - if (userInfo) { - await setInitialState((s) => ({ - ...s, - currentUser: userInfo, - })); - } - }; - - const handleSubmit = async (values: API.LoginParams) => { - try { - // 登录 - const msg = await login({ ...values, type }); - if (msg.status === 'ok') { - const defaultLoginSuccessMessage = intl.formatMessage({ - id: 'pages.login.success', - defaultMessage: '登录成功!', - }); - message.success(defaultLoginSuccessMessage); - await fetchUserInfo(); - /** 此方法会跳转到 redirect 参数所在的位置 */ - if (!history) return; - const { query } = history.location; - const { redirect } = query as { redirect: string }; - history.push(redirect || '/'); - return; - } - console.log(msg); - // 如果失败去设置用户错误信息 - setUserLoginState(msg); - } catch (error) { - const defaultLoginFailureMessage = intl.formatMessage({ - id: 'pages.login.failure', - defaultMessage: '登录失败,请重试!', - }); - message.error(defaultLoginFailureMessage); - } - }; - const { status, type: loginType } = userLoginState; - - return ( -
    -
    - {SelectLang && } -
    -
    - } - title="Ant Design" - subTitle={intl.formatMessage({ id: 'pages.layouts.userLayout.title' })} - initialValues={{ - autoLogin: true, - }} - actions={[ - , - , - , - , - ]} - onFinish={async (values) => { - await handleSubmit(values as API.LoginParams); - }} - > - - - - - - {status === 'error' && loginType === 'account' && ( - - )} - {type === 'account' && ( - <> - , - }} - placeholder={intl.formatMessage({ - id: 'pages.login.username.placeholder', - defaultMessage: '用户名: admin or user', - })} - rules={[ - { - required: true, - message: ( - - ), - }, - ]} - /> - , - }} - placeholder={intl.formatMessage({ - id: 'pages.login.password.placeholder', - defaultMessage: '密码: ant.design', - })} - rules={[ - { - required: true, - message: ( - - ), - }, - ]} - /> - - )} - - {status === 'error' && loginType === 'mobile' && } - {type === 'mobile' && ( - <> - , - }} - name="mobile" - placeholder={intl.formatMessage({ - id: 'pages.login.phoneNumber.placeholder', - defaultMessage: '手机号', - })} - rules={[ - { - required: true, - message: ( - - ), - }, - { - pattern: /^1\d{10}$/, - message: ( - - ), - }, - ]} - /> - , - }} - captchaProps={{ - size: 'large', - }} - placeholder={intl.formatMessage({ - id: 'pages.login.captcha.placeholder', - defaultMessage: '请输入验证码', - })} - captchaTextRender={(timing, count) => { - if (timing) { - return `${count} ${intl.formatMessage({ - id: 'pages.getCaptchaSecondText', - defaultMessage: '获取验证码', - })}`; - } - return intl.formatMessage({ - id: 'pages.login.phoneLogin.getVerificationCode', - defaultMessage: '获取验证码', - }); - }} - name="captcha" - rules={[ - { - required: true, - message: ( - - ), - }, - ]} - onGetCaptcha={async (phone) => { - const result = await getFakeCaptcha({ - phone, - }); - if (result === false) { - return; - } - message.success('获取验证码成功!验证码为:1234'); - }} - /> - - )} -
    - - - - - - -
    -
    -
    -
    -
    - ); -}; - -export default Login; diff --git a/demo/src/pages/user/register-result/index.tsx b/demo/src/pages/user/register-result/index.tsx deleted file mode 100644 index 8b4fac58..00000000 --- a/demo/src/pages/user/register-result/index.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import { Button, Result } from 'antd'; -import { Link } from 'umi'; -import React from 'react'; -import type { RouteChildrenProps } from 'react-router'; - -import styles from './style.less'; - -const actions = ( -
    - - - - - - -
    -); - -export type LocationState = Record; - -const RegisterResult: React.FC = ({ location }) => { - const email = location.state - ? (location.state as LocationState).account - : 'AntDesign@example.com'; - return ( - - 你的账户:{email} 注册成功 - - } - subTitle="激活邮件已发送到你的邮箱中,邮件有效期为24小时。请及时登录邮箱,点击邮件中的链接激活帐户。" - extra={actions} - /> - ); -}; - -export default RegisterResult; diff --git a/demo/src/pages/user/register-result/style.less b/demo/src/pages/user/register-result/style.less deleted file mode 100644 index dc1b8905..00000000 --- a/demo/src/pages/user/register-result/style.less +++ /dev/null @@ -1,23 +0,0 @@ -.registerResult { - width: 800px; - min-height: 400px; - margin: auto; - padding: 80px; - background: none; - :global { - .anticon { - font-size: 64px; - } - } - .title { - margin-top: 32px; - font-size: 20px; - line-height: 28px; - } - .actions { - margin-top: 40px; - a + a { - margin-left: 8px; - } - } -} diff --git a/demo/src/pages/user/register/_mock.ts b/demo/src/pages/user/register/_mock.ts deleted file mode 100644 index aa7ac78f..00000000 --- a/demo/src/pages/user/register/_mock.ts +++ /dev/null @@ -1,10 +0,0 @@ -// eslint-disable-next-line import/no-extraneous-dependencies -import type { Request, Response } from 'express'; - -export default { - 'POST /api/register': (_: Request, res: Response) => { - res.send({ - data: { status: 'ok', currentAuthority: 'user' }, - }); - }, -}; diff --git a/demo/src/pages/user/register/index.tsx b/demo/src/pages/user/register/index.tsx deleted file mode 100644 index 47c9e848..00000000 --- a/demo/src/pages/user/register/index.tsx +++ /dev/null @@ -1,285 +0,0 @@ -import type { FC } from 'react'; -import { useState, useEffect } from 'react'; -import { Form, Button, Col, Input, Popover, Progress, Row, Select, message } from 'antd'; -import type { Store } from 'antd/es/form/interface'; -import { Link, useRequest, history } from 'umi'; -import type { StateType } from './service'; -import { fakeRegister } from './service'; - -import styles from './style.less'; - -const FormItem = Form.Item; -const { Option } = Select; -const InputGroup = Input.Group; - -const passwordStatusMap = { - ok: ( -
    - 强度:强 -
    - ), - pass: ( -
    - 强度:中 -
    - ), - poor: ( -
    - 强度:太短 -
    - ), -}; - -const passwordProgressMap: { - ok: 'success'; - pass: 'normal'; - poor: 'exception'; -} = { - ok: 'success', - pass: 'normal', - poor: 'exception', -}; - -const Register: FC = () => { - const [count, setCount]: [number, any] = useState(0); - const [visible, setVisible]: [boolean, any] = useState(false); - const [prefix, setPrefix]: [string, any] = useState('86'); - const [popover, setPopover]: [boolean, any] = useState(false); - const confirmDirty = false; - let interval: number | undefined; - const [form] = Form.useForm(); - - useEffect( - () => () => { - clearInterval(interval); - }, - [interval], - ); - - const onGetCaptcha = () => { - let counts = 59; - setCount(counts); - interval = window.setInterval(() => { - counts -= 1; - setCount(counts); - if (counts === 0) { - clearInterval(interval); - } - }, 1000); - }; - - const getPasswordStatus = () => { - const value = form.getFieldValue('password'); - if (value && value.length > 9) { - return 'ok'; - } - if (value && value.length > 5) { - return 'pass'; - } - return 'poor'; - }; - - const { loading: submitting, run: register } = useRequest<{ data: StateType }>(fakeRegister, { - manual: true, - onSuccess: (data, params) => { - if (data.status === 'ok') { - message.success('注册成功!'); - history.push({ - pathname: '/user/register-result', - state: { - account: params.email, - }, - }); - } - }, - }); - const onFinish = (values: Store) => { - register(values); - }; - - const checkConfirm = (_: any, value: string) => { - const promise = Promise; - if (value && value !== form.getFieldValue('password')) { - return promise.reject('两次输入的密码不匹配!'); - } - return promise.resolve(); - }; - - const checkPassword = (_: any, value: string) => { - const promise = Promise; - // 没有值的情况 - if (!value) { - setVisible(!!value); - return promise.reject('请输入密码!'); - } - // 有值的情况 - if (!visible) { - setVisible(!!value); - } - setPopover(!popover); - if (value.length < 6) { - return promise.reject(''); - } - if (value && confirmDirty) { - form.validateFields(['confirm']); - } - return promise.resolve(); - }; - - const changePrefix = (value: string) => { - setPrefix(value); - }; - - const renderPasswordProgress = () => { - const value = form.getFieldValue('password'); - const passwordStatus = getPasswordStatus(); - return value && value.length ? ( -
    - 100 ? 100 : value.length * 10} - showInfo={false} - /> -
    - ) : null; - }; - - return ( -
    -

    注册

    -
    - - - - { - if (node && node.parentNode) { - return node.parentNode as HTMLElement; - } - return node; - }} - content={ - visible && ( -
    - {passwordStatusMap[getPasswordStatus()]} - {renderPasswordProgress()} -
    - 请至少输入 6 个字符。请不要使用容易被猜到的密码。 -
    -
    - ) - } - overlayStyle={{ width: 240 }} - placement="right" - visible={visible} - > - 0 && - styles.password - } - rules={[ - { - validator: checkPassword, - }, - ]} - > - - -
    - - - - - - - - - - -
    - - - - - - - - - - - - 使用已有账户登录 - - - - - ); -}; -export default Register; diff --git a/demo/src/pages/user/register/service.ts b/demo/src/pages/user/register/service.ts deleted file mode 100644 index 83801841..00000000 --- a/demo/src/pages/user/register/service.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { request } from 'umi'; - -export interface StateType { - status?: 'ok' | 'error'; - currentAuthority?: 'user' | 'guest' | 'admin'; -} - -export interface UserRegisterParams { - mail: string; - password: string; - confirm: string; - mobile: string; - captcha: string; - prefix: string; -} - -export async function fakeRegister(params: UserRegisterParams) { - return request('/api/register', { - method: 'POST', - data: params, - }); -} diff --git a/demo/src/pages/user/register/style.less b/demo/src/pages/user/register/style.less deleted file mode 100644 index e13868f0..00000000 --- a/demo/src/pages/user/register/style.less +++ /dev/null @@ -1,60 +0,0 @@ -@import '~antd/es/style/themes/default.less'; - -.main { - width: 368px; - margin: 0 auto; - - h3 { - margin-bottom: 20px; - font-size: 16px; - } - - .password { - margin-bottom: 24px; - :global { - .ant-form-item-explain { - display: none; - } - } - } - - .getCaptcha { - display: block; - width: 100%; - } - - .submit { - width: 50%; - } - - .login { - float: right; - line-height: @btn-height-lg; - } -} - -.success, -.warning, -.error { - transition: color 0.3s; -} - -.success { - color: @success-color; -} - -.warning { - color: @warning-color; -} - -.error { - color: @error-color; -} - -.progress-pass > .progress { - :global { - .ant-progress-bg { - background-color: @warning-color; - } - } -} diff --git a/demo/src/service-worker.js b/demo/src/service-worker.js deleted file mode 100644 index b86726cd..00000000 --- a/demo/src/service-worker.js +++ /dev/null @@ -1,65 +0,0 @@ -/* eslint-disable no-restricted-globals */ -/* eslint-disable no-underscore-dangle */ -/* globals workbox */ -workbox.core.setCacheNameDetails({ - prefix: 'antd-pro', - suffix: 'v5', -}); -// Control all opened tabs ASAP -workbox.clientsClaim(); - -/** - * Use precaching list generated by workbox in build process. - * https://developers.google.com/web/tools/workbox/reference-docs/latest/workbox.precaching - */ -workbox.precaching.precacheAndRoute(self.__precacheManifest || []); - -/** - * Register a navigation route. - * https://developers.google.com/web/tools/workbox/modules/workbox-routing#how_to_register_a_navigation_route - */ -workbox.routing.registerNavigationRoute('/index.html'); - -/** - * Use runtime cache: - * https://developers.google.com/web/tools/workbox/reference-docs/latest/workbox.routing#.registerRoute - * - * Workbox provides all common caching strategies including CacheFirst, NetworkFirst etc. - * https://developers.google.com/web/tools/workbox/reference-docs/latest/workbox.strategies - */ - -/** Handle API requests */ -workbox.routing.registerRoute(/\/api\//, workbox.strategies.networkFirst()); - -/** Handle third party requests */ -workbox.routing.registerRoute( - /^https:\/\/gw\.alipayobjects\.com\//, - workbox.strategies.networkFirst(), -); -workbox.routing.registerRoute( - /^https:\/\/cdnjs\.cloudflare\.com\//, - workbox.strategies.networkFirst(), -); -workbox.routing.registerRoute(/\/color.less/, workbox.strategies.networkFirst()); - -/** Response to client after skipping waiting with MessageChannel */ -addEventListener('message', (event) => { - const replyPort = event.ports[0]; - const message = event.data; - if (replyPort && message && message.type === 'skip-waiting') { - event.waitUntil( - self.skipWaiting().then( - () => { - replyPort.postMessage({ - error: null, - }); - }, - (error) => { - replyPort.postMessage({ - error, - }); - }, - ), - ); - } -}); diff --git a/demo/src/services/ant-design-pro/api.ts b/demo/src/services/ant-design-pro/api.ts deleted file mode 100644 index 74fce0c3..00000000 --- a/demo/src/services/ant-design-pro/api.ts +++ /dev/null @@ -1,85 +0,0 @@ -// @ts-ignore -/* eslint-disable */ -import { request } from 'umi'; - -/** 获取当前的用户 GET /api/currentUser */ -export async function currentUser(options?: { [key: string]: any }) { - return request<{ - data: API.CurrentUser; - }>('/api/currentUser', { - method: 'GET', - ...(options || {}), - }); -} - -/** 退出登录接口 POST /api/login/outLogin */ -export async function outLogin(options?: { [key: string]: any }) { - return request>('/api/login/outLogin', { - method: 'POST', - ...(options || {}), - }); -} - -/** 登录接口 POST /api/login/account */ -export async function login(body: API.LoginParams, options?: { [key: string]: any }) { - return request('/api/login/account', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - data: body, - ...(options || {}), - }); -} - -/** 此处后端没有提供注释 GET /api/notices */ -export async function getNotices(options?: { [key: string]: any }) { - return request('/api/notices', { - method: 'GET', - ...(options || {}), - }); -} - -/** 获取规则列表 GET /api/rule */ -export async function rule( - params: { - // query - /** 当前的页码 */ - current?: number; - /** 页面的容量 */ - pageSize?: number; - }, - options?: { [key: string]: any }, -) { - return request('/api/rule', { - method: 'GET', - params: { - ...params, - }, - ...(options || {}), - }); -} - -/** 新建规则 PUT /api/rule */ -export async function updateRule(options?: { [key: string]: any }) { - return request('/api/rule', { - method: 'PUT', - ...(options || {}), - }); -} - -/** 新建规则 POST /api/rule */ -export async function addRule(options?: { [key: string]: any }) { - return request('/api/rule', { - method: 'POST', - ...(options || {}), - }); -} - -/** 删除规则 DELETE /api/rule */ -export async function removeRule(options?: { [key: string]: any }) { - return request>('/api/rule', { - method: 'DELETE', - ...(options || {}), - }); -} diff --git a/demo/src/services/ant-design-pro/index.ts b/demo/src/services/ant-design-pro/index.ts deleted file mode 100644 index 1ac489fe..00000000 --- a/demo/src/services/ant-design-pro/index.ts +++ /dev/null @@ -1,10 +0,0 @@ -// @ts-ignore -/* eslint-disable */ -// API 更新时间: -// API 唯一标识: -import * as api from './api'; -import * as login from './login'; -export default { - api, - login, -}; diff --git a/demo/src/services/ant-design-pro/login.ts b/demo/src/services/ant-design-pro/login.ts deleted file mode 100644 index 42f95fff..00000000 --- a/demo/src/services/ant-design-pro/login.ts +++ /dev/null @@ -1,21 +0,0 @@ -// @ts-ignore -/* eslint-disable */ -import { request } from 'umi'; - -/** 发送验证码 POST /api/login/captcha */ -export async function getFakeCaptcha( - params: { - // query - /** 手机号 */ - phone?: string; - }, - options?: { [key: string]: any }, -) { - return request('/api/login/captcha', { - method: 'GET', - params: { - ...params, - }, - ...(options || {}), - }); -} diff --git a/demo/src/services/ant-design-pro/typings.d.ts b/demo/src/services/ant-design-pro/typings.d.ts deleted file mode 100644 index 13e5a680..00000000 --- a/demo/src/services/ant-design-pro/typings.d.ts +++ /dev/null @@ -1,101 +0,0 @@ -// @ts-ignore -/* eslint-disable */ - -declare namespace API { - type CurrentUser = { - name?: string; - avatar?: string; - userid?: string; - email?: string; - signature?: string; - title?: string; - group?: string; - tags?: { key?: string; label?: string }[]; - notifyCount?: number; - unreadCount?: number; - country?: string; - access?: string; - geographic?: { - province?: { label?: string; key?: string }; - city?: { label?: string; key?: string }; - }; - address?: string; - phone?: string; - }; - - type LoginResult = { - status?: string; - type?: string; - currentAuthority?: string; - }; - - type PageParams = { - current?: number; - pageSize?: number; - }; - - type RuleListItem = { - key?: number; - disabled?: boolean; - href?: string; - avatar?: string; - name?: string; - owner?: string; - desc?: string; - callNo?: number; - status?: number; - updatedAt?: string; - createdAt?: string; - progress?: number; - }; - - type RuleList = { - data?: RuleListItem[]; - /** 列表的内容总数 */ - total?: number; - success?: boolean; - }; - - type FakeCaptcha = { - code?: number; - status?: string; - }; - - type LoginParams = { - username?: string; - password?: string; - autoLogin?: boolean; - type?: string; - }; - - type ErrorResponse = { - /** 业务约定的错误码 */ - errorCode: string; - /** 业务上的错误信息 */ - errorMessage?: string; - /** 业务上的请求是否成功 */ - success?: boolean; - }; - - type NoticeIconList = { - data?: NoticeIconItem[]; - /** 列表的内容总数 */ - total?: number; - success?: boolean; - }; - - type NoticeIconItemType = 'notification' | 'message' | 'event'; - - type NoticeIconItem = { - id?: string; - extra?: string; - key?: string; - read?: boolean; - avatar?: string; - title?: string; - status?: string; - datetime?: string; - description?: string; - type?: NoticeIconItemType; - }; -} diff --git a/demo/src/services/swagger/index.ts b/demo/src/services/swagger/index.ts deleted file mode 100644 index 83cf97ca..00000000 --- a/demo/src/services/swagger/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -// @ts-ignore -/* eslint-disable */ -// API 更新时间: -// API 唯一标识: -import * as pet from './pet'; -import * as store from './store'; -import * as user from './user'; -export default { - pet, - store, - user, -}; diff --git a/demo/src/services/swagger/pet.ts b/demo/src/services/swagger/pet.ts deleted file mode 100644 index de8d6d2b..00000000 --- a/demo/src/services/swagger/pet.ts +++ /dev/null @@ -1,166 +0,0 @@ -// @ts-ignore -/* eslint-disable */ -import { request } from 'umi'; - -/** Update an existing pet PUT /pet */ -export async function updatePet(body: API.Pet, options?: { [key: string]: any }) { - return request('/pet', { - method: 'PUT', - headers: { - 'Content-Type': 'application/json', - }, - data: body, - ...(options || {}), - }); -} - -/** Add a new pet to the store POST /pet */ -export async function addPet(body: API.Pet, options?: { [key: string]: any }) { - return request('/pet', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - data: body, - ...(options || {}), - }); -} - -/** Finds Pets by status Multiple status values can be provided with comma separated strings GET /pet/findByStatus */ -export async function findPetsByStatus( - params: { - // query - /** Status values that need to be considered for filter */ - status: 'available' | 'pending' | 'sold'[]; - }, - options?: { [key: string]: any }, -) { - return request('/pet/findByStatus', { - method: 'GET', - params: { - ...params, - }, - - ...(options || {}), - }); -} - -/** Finds Pets by tags Muliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. GET /pet/findByTags */ -export async function findPetsByTags( - params: { - // query - /** Tags to filter by */ - tags: string[]; - }, - options?: { [key: string]: any }, -) { - return request('/pet/findByTags', { - method: 'GET', - params: { - ...params, - }, - - ...(options || {}), - }); -} - -/** Find pet by ID Returns a single pet GET /pet/${param0} */ -export async function getPetById( - params: { - // path - /** ID of pet to return */ - petId: number; - }, - options?: { [key: string]: any }, -) { - const { petId: param0 } = params; - return request(`/pet/${param0}`, { - method: 'GET', - params: { ...params }, - - ...(options || {}), - }); -} - -/** Updates a pet in the store with form data POST /pet/${param0} */ -export async function updatePetWithForm( - params: { - // path - /** ID of pet that needs to be updated */ - petId: number; - }, - body: { name?: string; status?: string }, - options?: { [key: string]: any }, -) { - const { petId: param0 } = params; - const formData = new FormData(); - - Object.keys(body).forEach((ele) => { - const item = (body as any)[ele]; - - if (item !== undefined && item !== null) { - formData.append(ele, typeof item === 'object' ? JSON.stringify(item) : item); - } - }); - - return request(`/pet/${param0}`, { - method: 'POST', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded', - }, - params: { ...params }, - data: formData, - ...(options || {}), - }); -} - -/** Deletes a pet DELETE /pet/${param0} */ -export async function deletePet( - params: { - // header - api_key?: string; - // path - /** Pet id to delete */ - petId: number; - }, - options?: { [key: string]: any }, -) { - const { petId: param0 } = params; - return request(`/pet/${param0}`, { - method: 'DELETE', - params: { ...params }, - ...(options || {}), - }); -} - -/** uploads an image POST /pet/${param0}/uploadImage */ -export async function uploadFile( - params: { - // path - /** ID of pet to update */ - petId: number; - }, - body: { additionalMetadata?: string; file?: string }, - options?: { [key: string]: any }, -) { - const { petId: param0 } = params; - const formData = new FormData(); - - Object.keys(body).forEach((ele) => { - const item = (body as any)[ele]; - - if (item !== undefined && item !== null) { - formData.append(ele, typeof item === 'object' ? JSON.stringify(item) : item); - } - }); - - return request(`/pet/${param0}/uploadImage`, { - method: 'POST', - headers: { - 'Content-Type': 'multipart/form-data', - }, - params: { ...params }, - data: formData, - ...(options || {}), - }); -} diff --git a/demo/src/services/swagger/store.ts b/demo/src/services/swagger/store.ts deleted file mode 100644 index c4b6d616..00000000 --- a/demo/src/services/swagger/store.ts +++ /dev/null @@ -1,54 +0,0 @@ -// @ts-ignore -/* eslint-disable */ -import { request } from 'umi'; - -/** Returns pet inventories by status Returns a map of status codes to quantities GET /store/inventory */ -export async function getInventory(options?: { [key: string]: any }) { - return request>('/store/inventory', { - method: 'GET', - ...(options || {}), - }); -} - -/** Place an order for a pet POST /store/order */ -export async function placeOrder(body: API.Order, options?: { [key: string]: any }) { - return request('/store/order', { - method: 'POST', - data: body, - ...(options || {}), - }); -} - -/** Find purchase order by ID For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions GET /store/order/${param0} */ -export async function getOrderById( - params: { - // path - /** ID of pet that needs to be fetched */ - orderId: number; - }, - options?: { [key: string]: any }, -) { - const { orderId: param0 } = params; - return request(`/store/order/${param0}`, { - method: 'GET', - params: { ...params }, - ...(options || {}), - }); -} - -/** Delete purchase order by ID For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors DELETE /store/order/${param0} */ -export async function deleteOrder( - params: { - // path - /** ID of the order that needs to be deleted */ - orderId: number; - }, - options?: { [key: string]: any }, -) { - const { orderId: param0 } = params; - return request(`/store/order/${param0}`, { - method: 'DELETE', - params: { ...params }, - ...(options || {}), - }); -} diff --git a/demo/src/services/swagger/typings.d.ts b/demo/src/services/swagger/typings.d.ts deleted file mode 100644 index 8fddfd75..00000000 --- a/demo/src/services/swagger/typings.d.ts +++ /dev/null @@ -1,52 +0,0 @@ -// @ts-ignore -/* eslint-disable */ - -declare namespace API { - type Order = { - id?: number; - petId?: number; - quantity?: number; - shipDate?: string; - /** Order Status */ - status?: 'placed' | 'approved' | 'delivered'; - complete?: boolean; - }; - - type Category = { - id?: number; - name?: string; - }; - - type User = { - id?: number; - username?: string; - firstName?: string; - lastName?: string; - email?: string; - password?: string; - phone?: string; - /** User Status */ - userStatus?: number; - }; - - type Tag = { - id?: number; - name?: string; - }; - - type Pet = { - id?: number; - category?: Category; - name: string; - photoUrls: string[]; - tags?: Tag[]; - /** pet status in the store */ - status?: 'available' | 'pending' | 'sold'; - }; - - type ApiResponse = { - code?: number; - type?: string; - message?: string; - }; -} diff --git a/demo/src/services/swagger/user.ts b/demo/src/services/swagger/user.ts deleted file mode 100644 index 46ce5e96..00000000 --- a/demo/src/services/swagger/user.ts +++ /dev/null @@ -1,114 +0,0 @@ -// @ts-ignore -/* eslint-disable */ -import { request } from 'umi'; - -/** Create user This can only be done by the logged in user. POST /user */ -export async function createUser(body: API.User, options?: { [key: string]: any }) { - return request('/user', { - method: 'POST', - data: body, - ...(options || {}), - }); -} - -/** Creates list of users with given input array POST /user/createWithArray */ -export async function createUsersWithArrayInput( - body: API.User[], - options?: { [key: string]: any }, -) { - return request('/user/createWithArray', { - method: 'POST', - data: body, - ...(options || {}), - }); -} - -/** Creates list of users with given input array POST /user/createWithList */ -export async function createUsersWithListInput(body: API.User[], options?: { [key: string]: any }) { - return request('/user/createWithList', { - method: 'POST', - data: body, - ...(options || {}), - }); -} - -/** Logs user into the system GET /user/login */ -export async function loginUser( - params: { - // query - /** The user name for login */ - username: string; - /** The password for login in clear text */ - password: string; - }, - options?: { [key: string]: any }, -) { - return request('/user/login', { - method: 'GET', - params: { - ...params, - }, - ...(options || {}), - }); -} - -/** Logs out current logged in user session GET /user/logout */ -export async function logoutUser(options?: { [key: string]: any }) { - return request('/user/logout', { - method: 'GET', - ...(options || {}), - }); -} - -/** Get user by user name GET /user/${param0} */ -export async function getUserByName( - params: { - // path - /** The name that needs to be fetched. Use user1 for testing. */ - username: string; - }, - options?: { [key: string]: any }, -) { - const { username: param0 } = params; - return request(`/user/${param0}`, { - method: 'GET', - params: { ...params }, - ...(options || {}), - }); -} - -/** Updated user This can only be done by the logged in user. PUT /user/${param0} */ -export async function updateUser( - params: { - // path - /** name that need to be updated */ - username: string; - }, - body: API.User, - options?: { [key: string]: any }, -) { - const { username: param0 } = params; - return request(`/user/${param0}`, { - method: 'PUT', - params: { ...params }, - data: body, - ...(options || {}), - }); -} - -/** Delete user This can only be done by the logged in user. DELETE /user/${param0} */ -export async function deleteUser( - params: { - // path - /** The name that needs to be deleted */ - username: string; - }, - options?: { [key: string]: any }, -) { - const { username: param0 } = params; - return request(`/user/${param0}`, { - method: 'DELETE', - params: { ...params }, - ...(options || {}), - }); -} diff --git a/demo/src/typings.d.ts b/demo/src/typings.d.ts deleted file mode 100644 index 7ed4bbdd..00000000 --- a/demo/src/typings.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -declare module 'slash2'; -declare module '*.css'; -declare module '*.less'; -declare module '*.scss'; -declare module '*.sass'; -declare module '*.svg'; -declare module '*.png'; -declare module '*.jpg'; -declare module '*.jpeg'; -declare module '*.gif'; -declare module '*.bmp'; -declare module '*.tiff'; -declare module 'omit.js'; -declare module 'numeral'; -declare module '@antv/data-set'; -declare module 'mockjs'; -declare module 'react-fittext'; -declare module 'bizcharts-plugin-slider'; - -// preview.pro.ant.design only do not use in your production ; -// preview.pro.ant.design Dedicated environment variable, please do not use it in your project. -declare let ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION: 'site' | undefined; - -declare const REACT_APP_ENV: 'test' | 'dev' | 'pre' | false; diff --git a/demo/tests/run-tests.js b/demo/tests/run-tests.js deleted file mode 100644 index d4e0fc8e..00000000 --- a/demo/tests/run-tests.js +++ /dev/null @@ -1,47 +0,0 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ -const { spawn } = require('child_process'); -const { kill } = require('cross-port-killer'); - -const env = Object.create(process.env); -env.BROWSER = 'none'; -env.TEST = true; -env.UMI_UI = 'none'; -env.PROGRESS = 'none'; -// flag to prevent multiple test -let once = false; - -const startServer = spawn(/^win/.test(process.platform) ? 'npm.cmd' : 'npm', ['run', 'serve'], { - env, -}); - -startServer.stderr.on('data', (data) => { - // eslint-disable-next-line - console.log(data.toString()); -}); - -startServer.on('exit', () => { - kill(process.env.PORT || 8000); -}); - -console.log('Starting development server for e2e tests...'); -startServer.stdout.on('data', (data) => { - console.log(data.toString()); - // hack code , wait umi - if (!once && data.toString().indexOf('Serving your umi project!') >= 0) { - // eslint-disable-next-line - once = true; - console.log('Development server is started, ready to run tests.'); - const testCmd = spawn( - /^win/.test(process.platform) ? 'npm.cmd' : 'npm', - ['run', 'playwright'], - { - stdio: 'inherit', - }, - ); - testCmd.on('exit', (code) => { - console.log('服务已经退出,退出码:', code); - startServer.kill(); - process.exit(code); - }); - } -}); diff --git a/demo/tests/setupTests.js b/demo/tests/setupTests.js deleted file mode 100644 index 78b50683..00000000 --- a/demo/tests/setupTests.js +++ /dev/null @@ -1,10 +0,0 @@ -// do some test init - -const localStorageMock = { - getItem: jest.fn(), - setItem: jest.fn(), - removeItem: jest.fn(), - clear: jest.fn(), -}; - -global.localStorage = localStorageMock; diff --git a/demo/tsconfig.json b/demo/tsconfig.json deleted file mode 100644 index e7a27859..00000000 --- a/demo/tsconfig.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "compilerOptions": { - "outDir": "build/dist", - "module": "esnext", - "target": "esnext", - "lib": ["esnext", "dom"], - "sourceMap": true, - "baseUrl": ".", - "jsx": "react-jsx", - "resolveJsonModule": true, - "allowSyntheticDefaultImports": true, - "moduleResolution": "node", - "forceConsistentCasingInFileNames": true, - "noImplicitReturns": true, - "suppressImplicitAnyIndexErrors": true, - "noUnusedLocals": true, - "allowJs": true, - "skipLibCheck": true, - "experimentalDecorators": true, - "strict": true, - "paths": { - "@/*": ["./src/*"], - "@@/*": ["./src/.umi/*"] - } - }, - "include": [ - "mock/**/*", - "src/**/*", - "playwright.config.ts", - "tests/**/*", - "test/**/*", - "__test__/**/*", - "typings/**/*", - "config/**/*", - ".eslintrc.js", - ".stylelintrc.js", - ".prettierrc.js", - "jest.config.js", - "mock/*" - ], - "exclude": ["node_modules", "build", "dist", "scripts", "src/.umi/*", "webpack", "jest"] -} From 860949e71c5eeba4ff61b3c952d803132697d26b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Mon, 27 Jun 2022 12:37:04 +0800 Subject: [PATCH 17/89] chore: change verison --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d2a27e01..7214c6e9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ant-design-pro", - "version": "6.0.0-beta.0", + "version": "6.0.0-beta.1", "private": true, "description": "An out-of-box UI solution for enterprise applications", "scripts": { From aee0be1c8728aaf4d6b87ff27ba3a63ad680c567 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Mon, 27 Jun 2022 13:30:56 +0800 Subject: [PATCH 18/89] chore: remove user files --- src/pages/user/Login/index.less | 48 ------ src/pages/user/Login/index.tsx | 290 -------------------------------- 2 files changed, 338 deletions(-) delete mode 100644 src/pages/user/Login/index.less delete mode 100644 src/pages/user/Login/index.tsx diff --git a/src/pages/user/Login/index.less b/src/pages/user/Login/index.less deleted file mode 100644 index 36eb7d63..00000000 --- a/src/pages/user/Login/index.less +++ /dev/null @@ -1,48 +0,0 @@ -@import (reference) '~antd/es/style/themes/index'; - -.container { - display: flex; - flex-direction: column; - height: 100vh; - overflow: auto; - background: @layout-body-background; -} - -.lang { - width: 100%; - height: 40px; - line-height: 44px; - text-align: right; - :global(.ant-dropdown-trigger) { - margin-right: 24px; - } -} - -.content { - flex: 1; - padding: 32px 0; -} - -@media (min-width: @screen-md-min) { - .container { - background-image: url('https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/V-_oS6r-i7wAAAAAAAAAAAAAFl94AQBr'); - background-size: cover; - } - - .content { - padding: 32px 0 24px; - } -} - -.icon { - margin-left: 8px; - color: rgba(0, 0, 0, 0.2); - font-size: 24px; - vertical-align: middle; - cursor: pointer; - transition: color 0.3s; - - &:hover { - color: @primary-color; - } -} diff --git a/src/pages/user/Login/index.tsx b/src/pages/user/Login/index.tsx deleted file mode 100644 index 080d6faa..00000000 --- a/src/pages/user/Login/index.tsx +++ /dev/null @@ -1,290 +0,0 @@ -import Footer from '@/components/Footer'; -import { login } from '@/services/ant-design-pro/api'; -import { getFakeCaptcha } from '@/services/ant-design-pro/login'; -import { - AlipayCircleOutlined, - LockOutlined, - MobileOutlined, - TaobaoCircleOutlined, - UserOutlined, - WeiboCircleOutlined, -} from '@ant-design/icons'; -import { - LoginForm, - ProFormCaptcha, - ProFormCheckbox, - ProFormText, -} from '@ant-design/pro-components'; -import { FormattedMessage, history, SelectLang, useIntl, useModel } from '@umijs/max'; -import { Alert, message, Tabs } from 'antd'; -import React, { useState } from 'react'; -import styles from './index.less'; - -const LoginMessage: React.FC<{ - content: string; -}> = ({ content }) => { - return ( - - ); -}; - -const Login: React.FC = () => { - const [userLoginState, setUserLoginState] = useState({}); - const [type, setType] = useState('account'); - const { initialState, setInitialState } = useModel('@@initialState'); - - const intl = useIntl(); - - const fetchUserInfo = async () => { - const userInfo = await initialState?.fetchUserInfo?.(); - if (userInfo) { - await setInitialState((s) => ({ - ...s, - currentUser: userInfo, - })); - } - }; - - const handleSubmit = async (values: API.LoginParams) => { - try { - // 登录 - const msg = await login({ ...values, type }); - if (msg.status === 'ok') { - const defaultLoginSuccessMessage = intl.formatMessage({ - id: 'pages.login.success', - defaultMessage: '登录成功!', - }); - message.success(defaultLoginSuccessMessage); - await fetchUserInfo(); - const urlParams = new URL(window.location.href).searchParams; - history.push(urlParams.get('redirect') || '/'); - return; - } - console.log(msg); - // 如果失败去设置用户错误信息 - setUserLoginState(msg); - } catch (error) { - const defaultLoginFailureMessage = intl.formatMessage({ - id: 'pages.login.failure', - defaultMessage: '登录失败,请重试!', - }); - console.log(error); - message.error(defaultLoginFailureMessage); - } - }; - const { status, type: loginType } = userLoginState; - - return ( -
    -
    - {SelectLang && } -
    -
    - } - title="Ant Design" - subTitle={intl.formatMessage({ id: 'pages.layouts.userLayout.title' })} - initialValues={{ - autoLogin: true, - }} - actions={[ - , - , - , - , - ]} - onFinish={async (values) => { - await handleSubmit(values as API.LoginParams); - }} - > - - - - - - {status === 'error' && loginType === 'account' && ( - - )} - {type === 'account' && ( - <> - , - }} - placeholder={intl.formatMessage({ - id: 'pages.login.username.placeholder', - defaultMessage: '用户名: admin or user', - })} - rules={[ - { - required: true, - message: ( - - ), - }, - ]} - /> - , - }} - placeholder={intl.formatMessage({ - id: 'pages.login.password.placeholder', - defaultMessage: '密码: ant.design', - })} - rules={[ - { - required: true, - message: ( - - ), - }, - ]} - /> - - )} - - {status === 'error' && loginType === 'mobile' && } - {type === 'mobile' && ( - <> - , - }} - name="mobile" - placeholder={intl.formatMessage({ - id: 'pages.login.phoneNumber.placeholder', - defaultMessage: '手机号', - })} - rules={[ - { - required: true, - message: ( - - ), - }, - { - pattern: /^1\d{10}$/, - message: ( - - ), - }, - ]} - /> - , - }} - captchaProps={{ - size: 'large', - }} - placeholder={intl.formatMessage({ - id: 'pages.login.captcha.placeholder', - defaultMessage: '请输入验证码', - })} - captchaTextRender={(timing, count) => { - if (timing) { - return `${count} ${intl.formatMessage({ - id: 'pages.getCaptchaSecondText', - defaultMessage: '获取验证码', - })}`; - } - return intl.formatMessage({ - id: 'pages.login.phoneLogin.getVerificationCode', - defaultMessage: '获取验证码', - }); - }} - name="captcha" - rules={[ - { - required: true, - message: ( - - ), - }, - ]} - onGetCaptcha={async (phone) => { - const result = await getFakeCaptcha({ - phone, - }); - if (result === false) { - return; - } - message.success('获取验证码成功!验证码为:1234'); - }} - /> - - )} -
    - - - - - - -
    -
    -
    -
    -
    - ); -}; - -export default Login; From b5ec33c2af0733d492b74a77db04041fc145d6ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Mon, 27 Jun 2022 13:31:40 +0800 Subject: [PATCH 19/89] chore: add User files --- package.json | 2 - src/pages/User/Login/index.less | 48 ++++++ src/pages/User/Login/index.tsx | 290 ++++++++++++++++++++++++++++++++ tsconfig.json | 1 - 4 files changed, 338 insertions(+), 3 deletions(-) create mode 100644 src/pages/User/Login/index.less create mode 100644 src/pages/User/Login/index.tsx diff --git a/package.json b/package.json index 7214c6e9..1ccaae20 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,6 @@ "tsc": "tsc --noEmit" }, "lint-staged": { - "**/*.less": "stylelint --syntax less", "**/*.{js,jsx,ts,tsx}": "npm run lint-staged:js", "**/*.{js,jsx,tsx,ts,less,md,json}": [ "prettier --write" @@ -84,7 +83,6 @@ "lint-staged": "^10.0.0", "mockjs": "^1.1.0", "prettier": "^2.5.0", - "stylelint": "^13.0.0", "swagger-ui-dist": "^4.12.0", "typescript": "^4.5.0", "umi-presets-pro": "1.0.1", diff --git a/src/pages/User/Login/index.less b/src/pages/User/Login/index.less new file mode 100644 index 00000000..36eb7d63 --- /dev/null +++ b/src/pages/User/Login/index.less @@ -0,0 +1,48 @@ +@import (reference) '~antd/es/style/themes/index'; + +.container { + display: flex; + flex-direction: column; + height: 100vh; + overflow: auto; + background: @layout-body-background; +} + +.lang { + width: 100%; + height: 40px; + line-height: 44px; + text-align: right; + :global(.ant-dropdown-trigger) { + margin-right: 24px; + } +} + +.content { + flex: 1; + padding: 32px 0; +} + +@media (min-width: @screen-md-min) { + .container { + background-image: url('https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/V-_oS6r-i7wAAAAAAAAAAAAAFl94AQBr'); + background-size: cover; + } + + .content { + padding: 32px 0 24px; + } +} + +.icon { + margin-left: 8px; + color: rgba(0, 0, 0, 0.2); + font-size: 24px; + vertical-align: middle; + cursor: pointer; + transition: color 0.3s; + + &:hover { + color: @primary-color; + } +} diff --git a/src/pages/User/Login/index.tsx b/src/pages/User/Login/index.tsx new file mode 100644 index 00000000..080d6faa --- /dev/null +++ b/src/pages/User/Login/index.tsx @@ -0,0 +1,290 @@ +import Footer from '@/components/Footer'; +import { login } from '@/services/ant-design-pro/api'; +import { getFakeCaptcha } from '@/services/ant-design-pro/login'; +import { + AlipayCircleOutlined, + LockOutlined, + MobileOutlined, + TaobaoCircleOutlined, + UserOutlined, + WeiboCircleOutlined, +} from '@ant-design/icons'; +import { + LoginForm, + ProFormCaptcha, + ProFormCheckbox, + ProFormText, +} from '@ant-design/pro-components'; +import { FormattedMessage, history, SelectLang, useIntl, useModel } from '@umijs/max'; +import { Alert, message, Tabs } from 'antd'; +import React, { useState } from 'react'; +import styles from './index.less'; + +const LoginMessage: React.FC<{ + content: string; +}> = ({ content }) => { + return ( + + ); +}; + +const Login: React.FC = () => { + const [userLoginState, setUserLoginState] = useState({}); + const [type, setType] = useState('account'); + const { initialState, setInitialState } = useModel('@@initialState'); + + const intl = useIntl(); + + const fetchUserInfo = async () => { + const userInfo = await initialState?.fetchUserInfo?.(); + if (userInfo) { + await setInitialState((s) => ({ + ...s, + currentUser: userInfo, + })); + } + }; + + const handleSubmit = async (values: API.LoginParams) => { + try { + // 登录 + const msg = await login({ ...values, type }); + if (msg.status === 'ok') { + const defaultLoginSuccessMessage = intl.formatMessage({ + id: 'pages.login.success', + defaultMessage: '登录成功!', + }); + message.success(defaultLoginSuccessMessage); + await fetchUserInfo(); + const urlParams = new URL(window.location.href).searchParams; + history.push(urlParams.get('redirect') || '/'); + return; + } + console.log(msg); + // 如果失败去设置用户错误信息 + setUserLoginState(msg); + } catch (error) { + const defaultLoginFailureMessage = intl.formatMessage({ + id: 'pages.login.failure', + defaultMessage: '登录失败,请重试!', + }); + console.log(error); + message.error(defaultLoginFailureMessage); + } + }; + const { status, type: loginType } = userLoginState; + + return ( +
    +
    + {SelectLang && } +
    +
    + } + title="Ant Design" + subTitle={intl.formatMessage({ id: 'pages.layouts.userLayout.title' })} + initialValues={{ + autoLogin: true, + }} + actions={[ + , + , + , + , + ]} + onFinish={async (values) => { + await handleSubmit(values as API.LoginParams); + }} + > + + + + + + {status === 'error' && loginType === 'account' && ( + + )} + {type === 'account' && ( + <> + , + }} + placeholder={intl.formatMessage({ + id: 'pages.login.username.placeholder', + defaultMessage: '用户名: admin or user', + })} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + , + }} + placeholder={intl.formatMessage({ + id: 'pages.login.password.placeholder', + defaultMessage: '密码: ant.design', + })} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + + )} + + {status === 'error' && loginType === 'mobile' && } + {type === 'mobile' && ( + <> + , + }} + name="mobile" + placeholder={intl.formatMessage({ + id: 'pages.login.phoneNumber.placeholder', + defaultMessage: '手机号', + })} + rules={[ + { + required: true, + message: ( + + ), + }, + { + pattern: /^1\d{10}$/, + message: ( + + ), + }, + ]} + /> + , + }} + captchaProps={{ + size: 'large', + }} + placeholder={intl.formatMessage({ + id: 'pages.login.captcha.placeholder', + defaultMessage: '请输入验证码', + })} + captchaTextRender={(timing, count) => { + if (timing) { + return `${count} ${intl.formatMessage({ + id: 'pages.getCaptchaSecondText', + defaultMessage: '获取验证码', + })}`; + } + return intl.formatMessage({ + id: 'pages.login.phoneLogin.getVerificationCode', + defaultMessage: '获取验证码', + }); + }} + name="captcha" + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + onGetCaptcha={async (phone) => { + const result = await getFakeCaptcha({ + phone, + }); + if (result === false) { + return; + } + message.success('获取验证码成功!验证码为:1234'); + }} + /> + + )} +
    + + + + + + +
    +
    +
    +
    +
    + ); +}; + +export default Login; diff --git a/tsconfig.json b/tsconfig.json index e7a27859..56ba13c6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -33,7 +33,6 @@ "typings/**/*", "config/**/*", ".eslintrc.js", - ".stylelintrc.js", ".prettierrc.js", "jest.config.js", "mock/*" From d275684222421474950d519711d0b69fddb08978 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Tue, 28 Jun 2022 18:24:57 +0800 Subject: [PATCH 20/89] chore: update deps version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1ccaae20..738494d9 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "prettier": "^2.5.0", "swagger-ui-dist": "^4.12.0", "typescript": "^4.5.0", - "umi-presets-pro": "1.0.1", + "umi-presets-pro": "^1.0.1", "umi-serve": "^1.9.10" }, "engines": { From 2ba0a62ff5a29fc4cf81cb56a079a4a9e4cef769 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Wed, 29 Jun 2022 10:25:07 +0800 Subject: [PATCH 21/89] fix: fix build fail error --- config/routes.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/routes.ts b/config/routes.ts index e903002b..a1eaa1a9 100644 --- a/config/routes.ts +++ b/config/routes.ts @@ -6,7 +6,7 @@ { name: 'login', path: '/user/login', - component: './user/Login', + component: './User/Login', }, { component: './404', From f82338dc6236e8a16359537b5d1aa3a8f288857a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Wed, 29 Jun 2022 15:11:19 +0800 Subject: [PATCH 24/89] chore: update code style --- src/app.tsx | 20 ++++++++++++++++++++ src/components/index.md | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/app.tsx b/src/app.tsx index 9d49faf6..72028844 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -61,6 +61,26 @@ export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) = history.push(loginPath); } }, + layoutBgImgList: [ + { + src: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/D2LWSqNny4sAAAAAAAAAAAAAFl94AQBr', + left: 85, + bottom: 100, + height: '303px', + }, + { + src: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/C2TWRpJpiC0AAAAAAAAAAAAAFl94AQBr', + bottom: -68, + right: -45, + height: '303px', + }, + { + src: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/F6vSTbj8KpYAAAAAAAAAAAAAFl94AQBr', + bottom: 0, + left: 0, + width: '331px', + }, + ], links: isDev ? [ diff --git a/src/components/index.md b/src/components/index.md index eca94508..8b645090 100644 --- a/src/components/index.md +++ b/src/components/index.md @@ -206,7 +206,7 @@ export default () => { ### NoticeIconData ```tsx | pure -export interface NoticeIconData { +export type NoticeIconData { id: string; key: string; avatar: string; From dc6a04874b173661abd5b1d1c13b1c039e0a145f Mon Sep 17 00:00:00 2001 From: chenshuai2144 Date: Sun, 3 Jul 2022 18:18:35 +0800 Subject: [PATCH 25/89] ci: add pnpm ci --- .github/workflows/pnpm.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/pnpm.yml diff --git a/.github/workflows/pnpm.yml b/.github/workflows/pnpm.yml new file mode 100644 index 00000000..d34f60cb --- /dev/null +++ b/.github/workflows/pnpm.yml @@ -0,0 +1,31 @@ +name: Node pnpm CI + +on: [push, pull_request] + +permissions: + contents: read + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + matrix: + node_version: [16.x, 14.x] + os: [ubuntu-latest, windows-latest, macOS-latest] + steps: + - uses: actions/checkout@v1 + - name: Use Node.js ${{ matrix.node_version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node_version }} + - run: echo ${{github.ref}} + - run: npm install pnpm -g + - run: pnpm run lint + - run: pnpm run tsc + - run: pnpm run build + - run: pnpm run test:e2e + env: + CI: true + PROGRESS: none + NODE_ENV: test + NODE_OPTIONS: --max_old_space_size=4096 From 549381f39ee3641c37159f966a8d1f1fa8bdddba Mon Sep 17 00:00:00 2001 From: chenshuai2144 Date: Sun, 3 Jul 2022 21:00:57 +0800 Subject: [PATCH 26/89] fix: fix pnpm ci build --- .github/workflows/pnpm.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/pnpm.yml b/.github/workflows/pnpm.yml index d34f60cb..5fae5b00 100644 --- a/.github/workflows/pnpm.yml +++ b/.github/workflows/pnpm.yml @@ -20,6 +20,7 @@ jobs: node-version: ${{ matrix.node_version }} - run: echo ${{github.ref}} - run: npm install pnpm -g + - run: pnpm -i - run: pnpm run lint - run: pnpm run tsc - run: pnpm run build From 17a05794e2f8ff3e441cb36809d7e8b49ee6ce4e Mon Sep 17 00:00:00 2001 From: chenshuai2144 Date: Sun, 3 Jul 2022 21:31:42 +0800 Subject: [PATCH 27/89] doc: add more docs --- config/config.ts | 118 ++++++++++++++++++++++++++++++-------- config/defaultSettings.ts | 3 + config/routes.ts | 12 +++- 3 files changed, 107 insertions(+), 26 deletions(-) diff --git a/config/config.ts b/config/config.ts index c5c306b0..72b32770 100644 --- a/config/config.ts +++ b/config/config.ts @@ -8,47 +8,115 @@ import routes from './routes'; const { REACT_APP_ENV } = process.env; export default defineConfig({ + /** + * @name 开启 hash 模式 + * @description 让 build 之后的产物包含 hash 后缀。通常用于增量发布和避免浏览器加载缓存。 + * @doc https://umijs.org/docs/api/config#hash + */ hash: true, - antd: {}, - request: {}, - initialState: {}, - model: {}, - layout: { - // https://umijs.org/zh-CN/plugins/plugin-layout - locale: true, - siderWidth: 208, - ...defaultSettings, - }, - // https://umijs.org/zh-CN/plugins/plugin-locale - locale: { - // default zh-CN - default: 'zh-CN', - antd: true, - // default true, when it is true, will use `navigator.language` overwrite default - baseNavigator: true, - }, + /** + * @name 兼容性设置 + * @description 设置 ie11 不一定完美兼容,需要检查自己使用的所有以来 + * @doc https://umijs.org/docs/api/config#targets + */ targets: { ie: 11, }, + /** + * @name 路由的配置,不在路由中引入的文件不会编译 + * @description 只支持 path,component,routes,redirect,wrappers,title 的配置 + * @doc https://umijs.org/docs/guides/routes + */ // umi routes: https://umijs.org/docs/routing routes, - access: {}, - // Theme for antd: https://ant.design/docs/react/customize-theme-cn + /** + * @name 主题的配置 + * @description 虽然叫主题,但是其实只是 less 的变量设置 + * @doc antd的主题设置 https://ant.design/docs/react/customize-theme-cn + * @doc umi 的theme 配置 https://umijs.org/docs/api/config#theme + */ theme: { // 如果不想要 configProvide 动态设置主题需要把这个设置为 default // 只有设置为 variable, 才能使用 configProvide 动态设置主色调 - // https://ant.design/docs/react/customize-theme-variable-cn 'root-entry-name': 'variable', }, + /** + * @name moment 的国际化配置 + * @description 如果对国际化没有要求,打开之后能减少js的包大小 + * @doc https://umijs.org/docs/api/config#ignoremomentlocale + */ ignoreMomentLocale: true, + /** + * @name 代理配置 + * @description 可以让你的本地服务器代理到你的服务器上,这样你就可以访问服务器的数据了 + * @see 要注意以下 代理只能在本地开发时使用,build 之后就无法使用了。 + * @doc 代理介绍 https://umijs.org/docs/guides/proxy + * @doc 代理配置 https://umijs.org/docs/api/config#proxy + */ proxy: proxy[REACT_APP_ENV || 'dev'], - manifest: { - basePath: '/', - }, - // Fast Refresh 热更新 + /** + * @name 快速热更新配置 + * @description 一个不错的热更新组件,更新时可以保留 state + */ fastRefresh: true, + //============== 以下都是max的插件配置 =============== + /** + * @name 数据流插件 + * @@doc https://umijs.org/docs/max/data-flow + */ + model: {}, + /** + * 一个全局的初始数据流,可以用它在插件之间共享数据 + * @description 可以用来存放一些全局的数据,比如用户信息,或者一些全局的状态,全局初始状态在整个 Umi 项目的最开始创建。 + * @doc https://umijs.org/docs/max/data-flow#%E5%85%A8%E5%B1%80%E5%88%9D%E5%A7%8B%E7%8A%B6%E6%80%81 + */ + initialState: {}, + /** + * @name layout 插件 + * @doc https://umijs.org/docs/max/layout-menu + */ + layout: { + locale: true, + siderWidth: 208, + ...defaultSettings, + }, + /** + * @name 国际化插件 + * @doc https://umijs.org/docs/max/i18n + */ + locale: { + // default zh-CN + default: 'zh-CN', + antd: true, + // default true, when it is true, will use `navigator.language` overwrite default + baseNavigator: true, + }, + /** + * @name antd 插件 + * @description 内置了 babel import 插件 + * @doc https://umijs.org/docs/max/antd#antd + */ + antd: {}, + /** + * @name 网络请求配置 + * @description 它基于 axios 和 ahooks 的 useRequest 提供了一套统一的网络请求和错误处理方案。 + * @doc https://umijs.org/docs/max/request + */ + request: {}, + /** + * @name 权限插件 + * @description 基于 initialState 的权限插件,必须先打开 initialState + * @doc https://umijs.org/docs/max/access + */ + access: {}, + //================ pro 插件配置 ================= presets: ['umi-presets-pro'], + /** + * @name openAPI 插件的配置 + * @description 基于 openapi 的规范生成serve 和mock,能减少很多样板代码 + * @doc https://pro.ant.design/zh-cn/docs/openapi/ + */ openAPI: [ { requestLibPath: "import { request } from '@umijs/max'", diff --git a/config/defaultSettings.ts b/config/defaultSettings.ts index e2b22e1f..4d5f64d2 100644 --- a/config/defaultSettings.ts +++ b/config/defaultSettings.ts @@ -1,5 +1,8 @@ import { Settings as LayoutSettings } from '@ant-design/pro-components'; +/** + * @name + */ const Settings: LayoutSettings & { pwa?: boolean; logo?: string; diff --git a/config/routes.ts b/config/routes.ts index a1eaa1a9..efa35d90 100644 --- a/config/routes.ts +++ b/config/routes.ts @@ -1,4 +1,14 @@ -export default [ +/** + * @name umi 的路由配置 + * @description 只支持 path,component,routes,redirect,wrappers,title 的配置 + * @param path path 只支持两种占位符配置,第一种是动态参数 :id 的形式,第二种是 * 通配符,通配符只能出现路由字符串的最后。 + * @param component 配置 location 和 path 匹配后用于渲染的 React 组件路径。可以是绝对路径,也可以是相对路径,如果是相对路径,会从 src/pages 开始找起。 + * @param routes 配置子路由,通常在需要为多个路径增加 layout 组件时使用。 + * @param redirect 配置路由跳转 + * @param wrappers 配置路由组件的包装组件,通过包装组件可以为当前的路由组件组合进更多的功能。 比如,可以用于路由级别的权限校验 + * @doc https://umijs.org/docs/guides/routes + */ +export default [ { path: '/user', layout: false, From 5f833745cf2bad25bfa4be76814787a6093c7f3c Mon Sep 17 00:00:00 2001 From: chenshuai2144 Date: Sun, 3 Jul 2022 21:32:46 +0800 Subject: [PATCH 28/89] doc: add more docs --- config/proxy.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/config/proxy.ts b/config/proxy.ts index a8194b7e..4c7f6dba 100644 --- a/config/proxy.ts +++ b/config/proxy.ts @@ -1,10 +1,13 @@ /** - * 在生产环境 代理是无法生效的,所以这里没有生产环境的配置 + * @name 代理的配置 + * @see 在生产环境 代理是无法生效的,所以这里没有生产环境的配置 * ------------------------------- * The agent cannot take effect in the production environment * so there is no configuration of the production environment * For details, please see * https://pro.ant.design/docs/deploy + * + * @doc https://umijs.org/docs/guides/proxy */ export default { dev: { From 0898152f8e361e9d463907bd39dc55b6e9e34c14 Mon Sep 17 00:00:00 2001 From: chenshuai2144 Date: Sun, 3 Jul 2022 21:33:31 +0800 Subject: [PATCH 29/89] doc: add more docs --- config/proxy.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config/proxy.ts b/config/proxy.ts index 4c7f6dba..170e55d9 100644 --- a/config/proxy.ts +++ b/config/proxy.ts @@ -20,6 +20,10 @@ export default { changeOrigin: true, }, }, + /** + * @name 详细的代理配置 + * @doc https://github.com/chimurai/http-proxy-middleware + */ test: { '/api/': { target: 'https://proapi.azurewebsites.net', From 75b403414756eca9c174d1d1f82b2d9ac9e8df84 Mon Sep 17 00:00:00 2001 From: chenshuai2144 Date: Sun, 3 Jul 2022 22:41:29 +0800 Subject: [PATCH 30/89] chore: remove unuse code --- .github/workflows/issue-open-check.yml | 2 +- .github/workflows/preview-deploy.yml | 12 ++++++------ .github/workflows/rebase.yml | 4 ++-- src/app.tsx | 1 - 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.github/workflows/issue-open-check.yml b/.github/workflows/issue-open-check.yml index 3d6f017c..2932023b 100644 --- a/.github/workflows/issue-open-check.yml +++ b/.github/workflows/issue-open-check.yml @@ -28,7 +28,7 @@ jobs: - if: steps.check.outputs.check-result == 'true' uses: actions-cool/issues-similarity-analysis@v1.1.0 with: - filter-threshold: 0.6 + filter-threshold: 0.4 title-excludes: '🐛[BUG], 👑 [需求], 🧐[问题]' comment-title: '### 以下的 Issues 可能会帮助到你 / The following issues may help you' show-footer: false diff --git a/.github/workflows/preview-deploy.yml b/.github/workflows/preview-deploy.yml index 5fc642fb..e9a699ff 100644 --- a/.github/workflows/preview-deploy.yml +++ b/.github/workflows/preview-deploy.yml @@ -12,9 +12,9 @@ permissions: jobs: success: permissions: - actions: read # for dawidd6/action-download-artifact to query and download artifacts - issues: write # for actions-cool/maintain-one-comment to modify or create issue comments - pull-requests: write # for actions-cool/maintain-one-comment to modify or create PR comments + actions: read # for dawidd6/action-download-artifact to query and download artifacts + issues: write # for actions-cool/maintain-one-comment to modify or create issue comments + pull-requests: write # for actions-cool/maintain-one-comment to modify or create PR comments runs-on: ubuntu-latest if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success' steps: @@ -70,9 +70,9 @@ jobs: failed: permissions: - actions: read # for dawidd6/action-download-artifact to query and download artifacts - issues: write # for actions-cool/maintain-one-comment to modify or create issue comments - pull-requests: write # for actions-cool/maintain-one-comment to modify or create PR comments + actions: read # for dawidd6/action-download-artifact to query and download artifacts + issues: write # for actions-cool/maintain-one-comment to modify or create issue comments + pull-requests: write # for actions-cool/maintain-one-comment to modify or create PR comments runs-on: ubuntu-latest if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'failure' steps: diff --git a/.github/workflows/rebase.yml b/.github/workflows/rebase.yml index a5bbc4c6..6d605e9d 100644 --- a/.github/workflows/rebase.yml +++ b/.github/workflows/rebase.yml @@ -8,8 +8,8 @@ permissions: jobs: rebase: permissions: - contents: write # for cirrus-actions/rebase to push code to rebase - pull-requests: read # for cirrus-actions/rebase to get info about PR + contents: write # for cirrus-actions/rebase to push code to rebase + pull-requests: read # for cirrus-actions/rebase to get info about PR name: Rebase if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/rebase') runs-on: ubuntu-latest diff --git a/src/app.tsx b/src/app.tsx index 72028844..38a8f2d9 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -55,7 +55,6 @@ export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) = footerRender: () =>
    , onPageChange: () => { const { location } = history; - console.log(history); // 如果没有登录,重定向到 login if (!initialState?.currentUser && location.pathname !== loginPath) { history.push(loginPath); From 444ad944c2b39661d0b95d6d028f1564a8fcd9d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Mon, 4 Jul 2022 11:28:26 +0800 Subject: [PATCH 31/89] doc: update welcom page --- package.json | 2 +- src/pages/Welcome.less | 8 -- src/pages/Welcome.tsx | 171 +++++++++++++++++++++++++++++++++-------- 3 files changed, 139 insertions(+), 42 deletions(-) delete mode 100644 src/pages/Welcome.less diff --git a/package.json b/package.json index 738494d9..34c2e875 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "dependencies": { "@ant-design/icons": "^4.7.0", "@ant-design/pro-components": "1.1.1", - "@umijs/route-utils": "^2.0.0", + "@umijs/route-utils": "2.1.3", "antd": "^4.20.0", "classnames": "^2.3.0", "lodash": "^4.17.0", diff --git a/src/pages/Welcome.less b/src/pages/Welcome.less deleted file mode 100644 index 224a7932..00000000 --- a/src/pages/Welcome.less +++ /dev/null @@ -1,8 +0,0 @@ -@import (reference) '~antd/es/style/themes/index'; - -.pre { - margin: 12px 0; - padding: 12px 20px; - background: @input-bg; - box-shadow: @card-shadow; -} diff --git a/src/pages/Welcome.tsx b/src/pages/Welcome.tsx index 23d40cd7..3b5730ca 100644 --- a/src/pages/Welcome.tsx +++ b/src/pages/Welcome.tsx @@ -1,46 +1,151 @@ import { PageContainer } from '@ant-design/pro-components'; -import { FormattedMessage, useIntl } from '@umijs/max'; -import { Alert, Card, Typography } from 'antd'; +import { Card } from 'antd'; import React from 'react'; -import styles from './Welcome.less'; -const CodePreview: React.FC = ({ children }) => ( -
    -    
    -      {children}
    -    
    -  
    -); +/** + * 每个单独的卡片,为了复用样式抽成了组件 + * @param param0 + * @returns + */ +const InfoCard: React.FC<{ + title: string; + index: number; + desc: string; + href: string; +}> = ({ title, href, index, desc }) => { + return ( +
    +
    +
    + {index} +
    +
    + {title} +
    +
    +
    + {desc} +
    + + 了解更多 {'>'} + +
    + ); +}; const Welcome: React.FC = () => { - const intl = useIntl(); - return ( - - + ); From 89485358547a40a623e2f2c3ba1f2e096bba8e75 Mon Sep 17 00:00:00 2001 From: HongJian Date: Mon, 4 Jul 2022 13:18:49 +0800 Subject: [PATCH 32/89] docs: fix typo (#9986) --- config/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/config.ts b/config/config.ts index 72b32770..29504c13 100644 --- a/config/config.ts +++ b/config/config.ts @@ -17,7 +17,7 @@ export default defineConfig({ /** * @name 兼容性设置 - * @description 设置 ie11 不一定完美兼容,需要检查自己使用的所有以来 + * @description 设置 ie11 不一定完美兼容,需要检查自己使用的所有依赖 * @doc https://umijs.org/docs/api/config#targets */ targets: { From 3c19ae654ae89124c01f580a8b88d3599ded6bbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Mon, 11 Jul 2022 10:15:08 +0800 Subject: [PATCH 33/89] ci: fix pnpm ci --- .github/workflows/pnpm.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pnpm.yml b/.github/workflows/pnpm.yml index 5fae5b00..09c3585c 100644 --- a/.github/workflows/pnpm.yml +++ b/.github/workflows/pnpm.yml @@ -19,8 +19,9 @@ jobs: with: node-version: ${{ matrix.node_version }} - run: echo ${{github.ref}} - - run: npm install pnpm -g - - run: pnpm -i + - run: curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm@7 + - run: pnpm config set store-dir ~/.pnpm-store + - run: pnpm install - run: pnpm run lint - run: pnpm run tsc - run: pnpm run build From 86bc6d855e3e7f2d3c41c4b7f876ba668d794dd5 Mon Sep 17 00:00:00 2001 From: minisola Date: Mon, 11 Jul 2022 10:38:40 +0800 Subject: [PATCH 34/89] =?UTF-8?q?fix:=20route=E5=8C=B9=E9=85=8D404?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=20(#10007)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/routes.ts | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/config/routes.ts b/config/routes.ts index efa35d90..671b453e 100644 --- a/config/routes.ts +++ b/config/routes.ts @@ -18,9 +18,6 @@ export default [ path: '/user/login', component: './User/Login', }, - { - component: './404', - }, ], }, { @@ -41,9 +38,6 @@ export default [ icon: 'smile', component: './Welcome', }, - { - component: './404', - }, ], }, { @@ -57,6 +51,7 @@ export default [ redirect: '/welcome', }, { + path: '*', component: './404', }, ]; From dab9fd9cf147dbe33bfc43a253932c4475f1b663 Mon Sep 17 00:00:00 2001 From: "Water.Li" Date: Mon, 11 Jul 2022 10:38:54 +0800 Subject: [PATCH 35/89] =?UTF-8?q?fix=EF=BC=9A=E7=82=B9=E5=87=BB=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E4=B8=8D=E4=BC=9A=E8=81=9A=E7=84=A6=E7=9A=84bug=20(#1?= =?UTF-8?q?0005)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit state变化会有延时,这个判断没用,删掉 --- src/components/HeaderSearch/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/HeaderSearch/index.tsx b/src/components/HeaderSearch/index.tsx index 2a03b4e2..211014a1 100644 --- a/src/components/HeaderSearch/index.tsx +++ b/src/components/HeaderSearch/index.tsx @@ -51,7 +51,7 @@ const HeaderSearch: React.FC = (props) => { className={classNames(className, styles.headerSearch)} onClick={() => { setSearchMode(true); - if (searchMode && inputRef.current) { + if (inputRef.current) { inputRef.current.focus(); } }} From c390570f959ed092d77a489c06395a6fa9691c68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Mon, 11 Jul 2022 10:42:01 +0800 Subject: [PATCH 36/89] ci: fix pnpm ci --- .github/workflows/pnpm.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pnpm.yml b/.github/workflows/pnpm.yml index 09c3585c..c0d031fc 100644 --- a/.github/workflows/pnpm.yml +++ b/.github/workflows/pnpm.yml @@ -21,7 +21,7 @@ jobs: - run: echo ${{github.ref}} - run: curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm@7 - run: pnpm config set store-dir ~/.pnpm-store - - run: pnpm install + - run: pnpm install --strict-peer-dependencies=false - run: pnpm run lint - run: pnpm run tsc - run: pnpm run build From 9edc9ccadbddf4b59cca0c03d5ec8977ac16abaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Mon, 11 Jul 2022 11:23:09 +0800 Subject: [PATCH 37/89] feat: add errorConfig close https://github.com/ant-design/ant-design-pro/issues/10008 --- src/app.tsx | 14 ++++- src/requestErrorConfig.ts | 107 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 src/requestErrorConfig.ts diff --git a/src/app.tsx b/src/app.tsx index 38a8f2d9..a7007d79 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -6,6 +6,7 @@ import { SettingDrawer } from '@ant-design/pro-components'; import type { RunTimeLayoutConfig } from '@umijs/max'; import { history, Link } from '@umijs/max'; import defaultSettings from '../config/defaultSettings'; +import { errorConfig } from './requestErrorConfig'; import { currentUser as queryCurrentUser } from './services/ant-design-pro/api'; const isDev = process.env.NODE_ENV === 'development'; @@ -22,7 +23,9 @@ export async function getInitialState(): Promise<{ }> { const fetchUserInfo = async () => { try { - const msg = await queryCurrentUser(); + const msg = await queryCurrentUser({ + skipErrorHandler: true, + }); return msg.data; } catch (error) { history.push(loginPath); @@ -116,3 +119,12 @@ export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) = ...initialState?.settings, }; }; + +/** + * @name request 配置,可以配置错误处理 + * 它基于 axios 和 ahooks 的 useRequest 提供了一套统一的网络请求和错误处理方案。 + * @doc https://umijs.org/docs/max/request#配置 + */ +export const request = { + ...errorConfig, +}; diff --git a/src/requestErrorConfig.ts b/src/requestErrorConfig.ts new file mode 100644 index 00000000..c7be46a5 --- /dev/null +++ b/src/requestErrorConfig.ts @@ -0,0 +1,107 @@ +import type { RequestConfig } from '@umijs/max'; +import { message, notification } from 'antd'; + +// 错误处理方案: 错误类型 +enum ErrorShowType { + SILENT = 0, + WARN_MESSAGE = 1, + ERROR_MESSAGE = 2, + NOTIFICATION = 3, + REDIRECT = 9, +} +// 与后端约定的响应数据格式 +interface ResponseStructure { + success: boolean; + data: any; + errorCode?: number; + errorMessage?: string; + showType?: ErrorShowType; +} + +/** + * @name 错误处理 + * pro 自带的错误处理, 可以在这里做自己的改动 + * @doc https://umijs.org/docs/max/request#配置 + */ +export const errorConfig: RequestConfig = { + // 错误处理: umi@3 的错误处理方案。 + errorConfig: { + // 错误抛出 + errorThrower: (res) => { + const { success, data, errorCode, errorMessage, showType } = + res as unknown as ResponseStructure; + if (!success) { + const error: any = new Error(errorMessage); + error.name = 'BizError'; + error.info = { errorCode, errorMessage, showType, data }; + throw error; // 抛出自制的错误 + } + }, + // 错误接收及处理 + errorHandler: (error: any, opts: any) => { + if (opts?.skipErrorHandler) throw error; + // 我们的 errorThrower 抛出的错误。 + if (error.name === 'BizError') { + const errorInfo: ResponseStructure | undefined = error.info; + if (errorInfo) { + const { errorMessage, errorCode } = errorInfo; + switch (errorInfo.showType) { + case ErrorShowType.SILENT: + // do nothing + break; + case ErrorShowType.WARN_MESSAGE: + message.warn(errorMessage); + break; + case ErrorShowType.ERROR_MESSAGE: + message.error(errorMessage); + break; + case ErrorShowType.NOTIFICATION: + notification.open({ + description: errorMessage, + message: errorCode, + }); + break; + case ErrorShowType.REDIRECT: + // TODO: redirect + break; + default: + message.error(errorMessage); + } + } + } else if (error.response) { + // Axios 的错误 + // 请求成功发出且服务器也响应了状态码,但状态代码超出了 2xx 的范围 + message.error('Response status:', error.response.status); + } else if (error.request) { + // 请求已经成功发起,但没有收到响应 + // \`error.request\` 在浏览器中是 XMLHttpRequest 的实例, + // 而在node.js中是 http.ClientRequest 的实例 + message.error('None response! Please retry.'); + } else { + // 发送请求时出了点问题 + message.error('Request error, please retry.'); + } + }, + }, + + // 请求拦截器 + requestInterceptors: [ + (config) => { + // 拦截请求配置,进行个性化处理。 + const url = config.url.concat('?token = 123'); + return { ...config, url }; + }, + ], + + // 响应拦截器 + responseInterceptors: [ + (response) => { + // 拦截响应数据,进行个性化处理 + const { data } = response as unknown as ResponseStructure; + if (!data.success) { + message.error('请求失败!'); + } + return response; + }, + ], +}; From cf3bbcffd3e30c713c7540fcee125da393907662 Mon Sep 17 00:00:00 2001 From: DaoYuan Date: Mon, 11 Jul 2022 11:25:25 +0800 Subject: [PATCH 38/89] =?UTF-8?q?feat:=20=E5=9B=BD=E9=99=85=E5=8C=96?= =?UTF-8?q?=E8=A1=A5=E5=85=85=E6=A8=A1=E5=BC=8F=E7=94=9F=E6=88=90=20(#1000?= =?UTF-8?q?0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 国际化补充模式生成 * chore: default close targrt close https://github.com/ant-design/ant-design-pro/issues/9989 Co-authored-by: 期贤 --- config/config.ts | 6 +-- src/locales/fa-IR/pages.ts | 2 + src/locales/id-ID/pages.ts | 2 + src/locales/ja-JP/pages.ts | 2 + src/locales/pt-BR/globalHeader.ts | 1 - src/locales/pt-BR/menu.ts | 2 +- src/locales/pt-BR/pages.ts | 2 + src/locales/zh-TW/menu.ts | 18 ++++----- src/locales/zh-TW/pages.ts | 65 +++++++++++++++++++++++++++++++ 9 files changed, 86 insertions(+), 14 deletions(-) create mode 100644 src/locales/zh-TW/pages.ts diff --git a/config/config.ts b/config/config.ts index 29504c13..5fd1f5de 100644 --- a/config/config.ts +++ b/config/config.ts @@ -20,9 +20,9 @@ export default defineConfig({ * @description 设置 ie11 不一定完美兼容,需要检查自己使用的所有依赖 * @doc https://umijs.org/docs/api/config#targets */ - targets: { - ie: 11, - }, + // targets: { + // ie: 11, + // }, /** * @name 路由的配置,不在路由中引入的文件不会编译 * @description 只支持 path,component,routes,redirect,wrappers,title 的配置 diff --git a/src/locales/fa-IR/pages.ts b/src/locales/fa-IR/pages.ts index f5926112..8b949b68 100644 --- a/src/locales/fa-IR/pages.ts +++ b/src/locales/fa-IR/pages.ts @@ -2,6 +2,8 @@ export default { 'pages.layouts.userLayout.title': 'طراحی مورچه تأثیرگذارترین مشخصات طراحی وب در منطقه Xihu است', 'pages.login.accountLogin.tab': 'ورود به حساب کاربری', 'pages.login.accountLogin.errorMessage': 'نام کاربری / رمزعبور نادرست (مدیر / ant.design)', + 'pages.login.failure': 'ورود به سیستم با شکست مواجه شد، لطفا دوباره سعی کنید!', + 'pages.login.success': 'ورود موفق!', 'pages.login.username.placeholder': 'نام کاربری: مدیر یا کاربر', 'pages.login.username.required': 'لطفا نام کاربری خود را وارد کنید!', 'pages.login.password.placeholder': 'رمز عبور: ant.design', diff --git a/src/locales/id-ID/pages.ts b/src/locales/id-ID/pages.ts index 9db23144..50b7e205 100644 --- a/src/locales/id-ID/pages.ts +++ b/src/locales/id-ID/pages.ts @@ -3,6 +3,8 @@ export default { 'Ant Design adalah spesifikasi desain Web yang paling berpengaruh di Kabupaten Xihu', 'pages.login.accountLogin.tab': 'Login dengan akun', 'pages.login.accountLogin.errorMessage': 'Nama pengguna dan kata sandi salah(admin/ant.design)', + 'pages.login.failure': 'Log masuk gagal, silakan coba lagi!', + 'pages.login.success': 'Login berhasil!', 'pages.login.username.placeholder': 'nama pengguna: admin atau user', 'pages.login.username.required': 'Nama pengguna harus diisi!', 'pages.login.password.placeholder': 'kata sandi: ant.design', diff --git a/src/locales/ja-JP/pages.ts b/src/locales/ja-JP/pages.ts index d8b21956..11b45147 100644 --- a/src/locales/ja-JP/pages.ts +++ b/src/locales/ja-JP/pages.ts @@ -3,6 +3,8 @@ export default { 'pages.login.accountLogin.tab': 'アカウントログイン', 'pages.login.accountLogin.errorMessage': 'ユーザー名/パスワードが正しくありません(admin/ant.design)', + 'pages.login.failure': 'ログインに失敗したら、もう一度試してください!', + 'pages.login.success': 'ログイン成功!', 'pages.login.username.placeholder': 'ユーザー名:adminまたはuser', 'pages.login.username.required': 'ユーザー名を入力してください!', 'pages.login.password.placeholder': 'パスワード:ant.design', diff --git a/src/locales/pt-BR/globalHeader.ts b/src/locales/pt-BR/globalHeader.ts index c9273991..d232ca79 100644 --- a/src/locales/pt-BR/globalHeader.ts +++ b/src/locales/pt-BR/globalHeader.ts @@ -13,6 +13,5 @@ export default { 'component.noticeIcon.clear': 'Limpar', 'component.noticeIcon.cleared': 'Limpo', 'component.noticeIcon.empty': 'Sem notificações', - 'component.noticeIcon.loaded': 'Carregado', 'component.noticeIcon.view-more': 'Veja mais', }; diff --git a/src/locales/pt-BR/menu.ts b/src/locales/pt-BR/menu.ts index 99d4d725..aded8ff0 100644 --- a/src/locales/pt-BR/menu.ts +++ b/src/locales/pt-BR/menu.ts @@ -2,9 +2,9 @@ export default { 'menu.welcome': 'Welcome', 'menu.more-blocks': 'More Blocks', 'menu.home': 'Início', - 'menu.login': 'Login', 'menu.admin': 'Admin', 'menu.admin.sub-page': 'Sub-Page', + 'menu.login': 'Login', 'menu.register': 'Registro', 'menu.register-result': 'Resultado de registro', 'menu.dashboard': 'Dashboard', diff --git a/src/locales/pt-BR/pages.ts b/src/locales/pt-BR/pages.ts index 6d297faa..01522ffa 100644 --- a/src/locales/pt-BR/pages.ts +++ b/src/locales/pt-BR/pages.ts @@ -3,6 +3,8 @@ export default { 'Ant Design é a especificação de web design mais influente no distrito de Xihu', 'pages.login.accountLogin.tab': 'Login da conta', 'pages.login.accountLogin.errorMessage': 'usuário/senha incorreto(admin/ant.design)', + 'pages.login.failure': 'Login falhou, por favor tente novamente!', + 'pages.login.success': 'Login efetuado com sucesso!', 'pages.login.username.placeholder': 'Usuário: admin or user', 'pages.login.username.required': 'Por favor insira seu usuário!', 'pages.login.password.placeholder': 'Senha: ant.design', diff --git a/src/locales/zh-TW/menu.ts b/src/locales/zh-TW/menu.ts index 6969ccc6..0ef54c95 100644 --- a/src/locales/zh-TW/menu.ts +++ b/src/locales/zh-TW/menu.ts @@ -2,18 +2,18 @@ export default { 'menu.welcome': '歡迎', 'menu.more-blocks': '更多區塊', 'menu.home': '首頁', - 'menu.login': '登錄', 'menu.admin': '权限', 'menu.admin.sub-page': '二级管理页', - 'menu.exception.403': '403', - 'menu.exception.404': '404', - 'menu.exception.500': '500', + 'menu.login': '登錄', 'menu.register': '註冊', 'menu.register-result': '註冊結果', 'menu.dashboard': 'Dashboard', 'menu.dashboard.analysis': '分析頁', 'menu.dashboard.monitor': '監控頁', 'menu.dashboard.workplace': '工作臺', + 'menu.exception.403': '403', + 'menu.exception.404': '404', + 'menu.exception.500': '500', 'menu.form': '表單頁', 'menu.form.basic-form': '基礎表單', 'menu.form.step-form': '分步表單', @@ -35,16 +35,16 @@ export default { 'menu.result': '結果頁', 'menu.result.success': '成功頁', 'menu.result.fail': '失敗頁', - 'menu.account': '個人頁', - 'menu.account.center': '個人中心', - 'menu.account.settings': '個人設置', - 'menu.account.trigger': '觸發報錯', - 'menu.account.logout': '退出登錄', 'menu.exception': '异常页', 'menu.exception.not-permission': '403', 'menu.exception.not-find': '404', 'menu.exception.server-error': '500', 'menu.exception.trigger': '触发错误', + 'menu.account': '個人頁', + 'menu.account.center': '個人中心', + 'menu.account.settings': '個人設置', + 'menu.account.trigger': '觸發報錯', + 'menu.account.logout': '退出登錄', 'menu.editor': '圖形編輯器', 'menu.editor.flow': '流程編輯器', 'menu.editor.mind': '腦圖編輯器', diff --git a/src/locales/zh-TW/pages.ts b/src/locales/zh-TW/pages.ts new file mode 100644 index 00000000..9027ed9c --- /dev/null +++ b/src/locales/zh-TW/pages.ts @@ -0,0 +1,65 @@ +export default { + 'pages.layouts.userLayout.title': 'Ant Design 是西湖區最具影響力的 Web 設計規範', + 'pages.login.accountLogin.tab': '賬戶密碼登錄', + 'pages.login.accountLogin.errorMessage': '錯誤的用戶名和密碼(admin/ant.design)', + 'pages.login.failure': '登錄失敗,請重試!', + 'pages.login.success': '登錄成功!', + 'pages.login.username.placeholder': '用戶名: admin or user', + 'pages.login.username.required': '用戶名是必填項!', + 'pages.login.password.placeholder': '密碼: ant.design', + 'pages.login.password.required': '密碼是必填項!', + 'pages.login.phoneLogin.tab': '手機號登錄', + 'pages.login.phoneLogin.errorMessage': '驗證碼錯誤', + 'pages.login.phoneNumber.placeholder': '請輸入手機號!', + 'pages.login.phoneNumber.required': '手機號是必填項!', + 'pages.login.phoneNumber.invalid': '不合法的手機號!', + 'pages.login.captcha.placeholder': '請輸入驗證碼!', + 'pages.login.captcha.required': '驗證碼是必填項!', + 'pages.login.phoneLogin.getVerificationCode': '獲取驗證碼', + 'pages.getCaptchaSecondText': '秒後重新獲取', + 'pages.login.rememberMe': '自動登錄', + 'pages.login.forgotPassword': '忘記密碼 ?', + 'pages.login.submit': '登錄', + 'pages.login.loginWith': '其他登錄方式 :', + 'pages.login.registerAccount': '註冊賬戶', + 'pages.welcome.link': '歡迎使用', + 'pages.welcome.alertMessage': '更快更強的重型組件,已經發布。', + 'pages.admin.subPage.title': '這個頁面只有 admin 權限才能查看', + 'pages.admin.subPage.alertMessage': 'umi ui 現已發佈,歡迎使用 npm run ui 啓動體驗。', + 'pages.searchTable.createForm.newRule': '新建規則', + 'pages.searchTable.updateForm.ruleConfig': '規則配置', + 'pages.searchTable.updateForm.basicConfig': '基本信息', + 'pages.searchTable.updateForm.ruleName.nameLabel': '規則名稱', + 'pages.searchTable.updateForm.ruleName.nameRules': '請輸入規則名稱!', + 'pages.searchTable.updateForm.ruleDesc.descLabel': '規則描述', + 'pages.searchTable.updateForm.ruleDesc.descPlaceholder': '請輸入至少五個字符', + 'pages.searchTable.updateForm.ruleDesc.descRules': '請輸入至少五個字符的規則描述!', + 'pages.searchTable.updateForm.ruleProps.title': '配置規則屬性', + 'pages.searchTable.updateForm.object': '監控對象', + 'pages.searchTable.updateForm.ruleProps.templateLabel': '規則模板', + 'pages.searchTable.updateForm.ruleProps.typeLabel': '規則類型', + 'pages.searchTable.updateForm.schedulingPeriod.title': '設定調度週期', + 'pages.searchTable.updateForm.schedulingPeriod.timeLabel': '開始時間', + 'pages.searchTable.updateForm.schedulingPeriod.timeRules': '請選擇開始時間!', + 'pages.searchTable.titleDesc': '描述', + 'pages.searchTable.ruleName': '規則名稱爲必填項', + 'pages.searchTable.titleCallNo': '服務調用次數', + 'pages.searchTable.titleStatus': '狀態', + 'pages.searchTable.nameStatus.default': '關閉', + 'pages.searchTable.nameStatus.running': '運行中', + 'pages.searchTable.nameStatus.online': '已上線', + 'pages.searchTable.nameStatus.abnormal': '異常', + 'pages.searchTable.titleUpdatedAt': '上次調度時間', + 'pages.searchTable.exception': '請輸入異常原因!', + 'pages.searchTable.titleOption': '操作', + 'pages.searchTable.config': '配置', + 'pages.searchTable.subscribeAlert': '訂閱警報', + 'pages.searchTable.title': '查詢表格', + 'pages.searchTable.new': '新建', + 'pages.searchTable.chosen': '已選擇', + 'pages.searchTable.item': '項', + 'pages.searchTable.totalServiceCalls': '服務調用次數總計', + 'pages.searchTable.tenThousand': '萬', + 'pages.searchTable.batchDeletion': '批量刪除', + 'pages.searchTable.batchApproval': '批量審批', +}; From c4009b64ecd517fe4e17fbf71a89de53197d24a7 Mon Sep 17 00:00:00 2001 From: DaoYuan Date: Mon, 18 Jul 2022 10:52:16 +0800 Subject: [PATCH 39/89] =?UTF-8?q?fix:=20=E4=BD=BF=E7=94=A86.0=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E5=8F=91=E7=8E=B0=E7=9A=84=E4=B8=80=E4=BA=9B=E9=97=AE?= =?UTF-8?q?=E9=A2=98=20(#10033)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: 没有必要的文件 * fix: can prettier pkg * chore: 有格式化后自动排序 --- .husky/.gitignore | 1 - .prettierignore | 3 +-- package.json | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) delete mode 100644 .husky/.gitignore diff --git a/.husky/.gitignore b/.husky/.gitignore deleted file mode 100644 index 31354ec1..00000000 --- a/.husky/.gitignore +++ /dev/null @@ -1 +0,0 @@ -_ diff --git a/.prettierignore b/.prettierignore index d17efb44..7999ccda 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,5 +1,4 @@ **/*.svg -package.json .umi .umi-production /dist @@ -20,4 +19,4 @@ yarn-error.log .history CNAME /build -/public \ No newline at end of file +/public diff --git a/package.json b/package.json index 34c2e875..020b1834 100644 --- a/package.json +++ b/package.json @@ -4,13 +4,13 @@ "private": true, "description": "An out-of-box UI solution for enterprise applications", "scripts": { - "postinstall": "max setup", "analyze": "cross-env ANALYZE=1 max build", "build": "max build", "deploy": "npm run build && npm run gh-pages", "dev": "npm run start:dev", "gh-pages": "gh-pages -d dist", "i18n-remove": "pro i18n-remove --locale=zh-CN --write", + "postinstall": "max setup", "lint": "npm run lint:js && npm run lint:prettier && npm run tsc", "lint-staged": "lint-staged", "lint-staged:js": "eslint --ext .js,.jsx,.ts,.tsx ", From 1052141e55f455c9e4b0813b0f1a162d0e4c92e3 Mon Sep 17 00:00:00 2001 From: DaoYuan Date: Thu, 21 Jul 2022 11:29:23 +0800 Subject: [PATCH 40/89] chore : unlock version (#10052) --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 020b1834..d17e23fa 100644 --- a/package.json +++ b/package.json @@ -45,8 +45,8 @@ ], "dependencies": { "@ant-design/icons": "^4.7.0", - "@ant-design/pro-components": "1.1.1", - "@umijs/route-utils": "2.1.3", + "@ant-design/pro-components": "^1.1.1", + "@umijs/route-utils": "^2.1.3", "antd": "^4.20.0", "classnames": "^2.3.0", "lodash": "^4.17.0", From 6474ea1ceec4df60af2d9a30e6aa418be5da3b5a Mon Sep 17 00:00:00 2001 From: DaoYuan Date: Thu, 21 Jul 2022 11:29:56 +0800 Subject: [PATCH 41/89] fix: fix location no found error (#10047) --- src/app.tsx | 2 +- src/components/RightContent/AvatarDropdown.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app.tsx b/src/app.tsx index a7007d79..16af7a77 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -33,7 +33,7 @@ export async function getInitialState(): Promise<{ return undefined; }; // 如果不是登录页面,执行 - if (history.location.pathname !== loginPath) { + if (window.location.pathname !== loginPath) { const currentUser = await fetchUserInfo(); return { fetchUserInfo, diff --git a/src/components/RightContent/AvatarDropdown.tsx b/src/components/RightContent/AvatarDropdown.tsx index 518961af..9e77f15b 100644 --- a/src/components/RightContent/AvatarDropdown.tsx +++ b/src/components/RightContent/AvatarDropdown.tsx @@ -18,7 +18,7 @@ export type GlobalHeaderRightProps = { */ const loginOut = async () => { await outLogin(); - const { search, pathname } = history.location; + const { search, pathname } = window.location; const urlParams = new URL(window.location.href).searchParams; /** 此方法会跳转到 redirect 参数所在的位置 */ const redirect = urlParams.get('redirect'); From fb0cb6bc9da7d0c076f87485408b68cac7b836f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=81=AA=E5=B0=8F=E9=99=88?= Date: Thu, 21 Jul 2022 11:30:06 +0800 Subject: [PATCH 42/89] chore: remove jest (#10038) Co-authored-by: xiaohuoni --- .gitignore | 1 + jest.config.js | 9 --------- package.json | 4 ---- 3 files changed, 1 insertion(+), 13 deletions(-) delete mode 100644 jest.config.js diff --git a/.gitignore b/.gitignore index 21ab9fb7..22f005ba 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,7 @@ functions/* # umi .umi .umi-production +.umi-test # screenshot screenshot diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 47295738..00000000 --- a/jest.config.js +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = { - testURL: 'http://localhost:8000', - verbose: false, - extraSetupFiles: ['./tests/setupTests.js'], - globals: { - ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION: false, - localStorage: null, - }, -}; diff --git a/package.json b/package.json index d17e23fa..e6ecabd9 100644 --- a/package.json +++ b/package.json @@ -27,8 +27,6 @@ "start:no-mock": "cross-env MOCK=none UMI_ENV=dev max dev", "start:pre": "cross-env REACT_APP_ENV=pre UMI_ENV=dev max dev", "start:test": "cross-env REACT_APP_ENV=test MOCK=none UMI_ENV=dev max dev", - "test": "max test", - "test:component": "max test ./src/components", "test:e2e": "node ./tests/run-tests.js", "tsc": "tsc --noEmit" }, @@ -65,7 +63,6 @@ "@types/classnames": "^2.3.1", "@types/express": "^4.17.0", "@types/history": "^4.7.0", - "@types/jest": "^26.0.0", "@types/lodash": "^4.14.0", "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", @@ -79,7 +76,6 @@ "eslint": "^7.32.0", "gh-pages": "^3.2.0", "husky": "^7.0.4", - "jsdom-global": "^3.0.0", "lint-staged": "^10.0.0", "mockjs": "^1.1.0", "prettier": "^2.5.0", From e574be874f2a9f1022bc41f439cbd3618d57b724 Mon Sep 17 00:00:00 2001 From: DaoYuan Date: Thu, 21 Jul 2022 11:30:25 +0800 Subject: [PATCH 43/89] =?UTF-8?q?fix:=20=E5=A4=9A=E4=BD=99=E7=9A=84?= =?UTF-8?q?=E6=96=87=E4=BB=B6=20(#10036)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .vscode/extensions.json | 3 --- .vscode/settings.json | 5 ----- 3 files changed, 1 insertion(+), 8 deletions(-) delete mode 100644 .vscode/extensions.json delete mode 100644 .vscode/settings.json diff --git a/.gitignore b/.gitignore index 22f005ba..36ce6987 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ yarn.lock package-lock.json pnpm-lock.yaml *bak +.vscode # visual studio code diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index 164b332d..00000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["esbenp.prettier-vscode", "dbaeumer.vscode-eslint", "wangzy.sneak-mark"] -} diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index a5d9d035..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "editor.formatOnSave": true, - "prettier.requireConfig": true, - "editor.defaultFormatter": "esbenp.prettier-vscode" -} From c77820812e215bdab149f5aae529f615790c33df Mon Sep 17 00:00:00 2001 From: chenshuai2144 Date: Thu, 21 Jul 2022 14:32:13 +0800 Subject: [PATCH 44/89] fix: remove docment.ejs --- src/pages/document.ejs | 236 ----------------------------------------- 1 file changed, 236 deletions(-) delete mode 100644 src/pages/document.ejs diff --git a/src/pages/document.ejs b/src/pages/document.ejs deleted file mode 100644 index 6db8355f..00000000 --- a/src/pages/document.ejs +++ /dev/null @@ -1,236 +0,0 @@ - - - - - - - - - - - Ant Design Pro - - - - -
    - -
    - logo -
    -
    - -
    -
    -
    - - Ant Design -
    -
    -
    - - From 730edecad4f11e92b843529e28a549bbc4cbf6fa Mon Sep 17 00:00:00 2001 From: xrkffgg Date: Fri, 22 Jul 2022 19:11:16 +0800 Subject: [PATCH 45/89] Update issue-open-check.yml --- .github/workflows/issue-open-check.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/issue-open-check.yml b/.github/workflows/issue-open-check.yml index 2932023b..eef609ee 100644 --- a/.github/workflows/issue-open-check.yml +++ b/.github/workflows/issue-open-check.yml @@ -26,9 +26,9 @@ jobs: The title of the current issue is not detected, please fill in according to the specifications, thank you! - if: steps.check.outputs.check-result == 'true' - uses: actions-cool/issues-similarity-analysis@v1.1.0 + uses: actions-cool/issues-similarity-analysis@v1 with: - filter-threshold: 0.4 + filter-threshold: 0.5 title-excludes: '🐛[BUG], 👑 [需求], 🧐[问题]' comment-title: '### 以下的 Issues 可能会帮助到你 / The following issues may help you' show-footer: false From 339511c085b23873d1e7fd946d598d1da37386bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Tue, 2 Aug 2022 02:10:57 +0800 Subject: [PATCH 46/89] fix: add present to LICENSE (#10092) --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index c17ba2fb..b65958eb 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 Alipay.inc +Copyright (c) 2019-present Alipay.inc Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From d5808b442facc5d50fde882f9b4f90c1c1ca0d5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yunus=20E=C5=9E?= Date: Mon, 8 Aug 2022 05:10:48 +0300 Subject: [PATCH 47/89] You might not need lodash (#10108) Lodash used only here. So you can replace uniq function by Set and you can remove lodash. --- src/e2e/baseLayout.e2e.spec.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/e2e/baseLayout.e2e.spec.ts b/src/e2e/baseLayout.e2e.spec.ts index cb14fd57..d2c2008d 100644 --- a/src/e2e/baseLayout.e2e.spec.ts +++ b/src/e2e/baseLayout.e2e.spec.ts @@ -1,6 +1,5 @@ -import type { Page } from '@playwright/test'; +import type { Page } from '@playwright/test'; import { expect, test } from '@playwright/test'; -const { uniq } = require('lodash'); const RouterConfig = require('../../config/routes').default; const BASE_URL = `http://localhost:${process.env.PORT || 8001}`; @@ -21,7 +20,7 @@ function formatter(routes: any, parentPath = ''): string[] { ); } }); - return uniq(result.filter((item) => !!item)); + return [...new Set(result.filter((item) => !!item))]; } const testPage = (path: string, page: Page) => async () => { From 4e78664e121b573474558a27a8efe85df8bb9b10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yunus=20E=C5=9E?= Date: Mon, 8 Aug 2022 05:18:03 +0300 Subject: [PATCH 48/89] Ant Design Pro 5 Turkish translation (#10109) --- README.tr-TR.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.tr-TR.md b/README.tr-TR.md index 9e6c1772..6364d2b9 100644 --- a/README.tr-TR.md +++ b/README.tr-TR.md @@ -6,7 +6,9 @@ Language : [🇺🇸](./README.md) | [🇨🇳](./README.zh-CN.md) | [🇷🇺]( React ile kurumsal uygulamalar için taslak olarak geliştirilmiş kullanıma hazır bir UI çözümü. -[![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) [![Build Status](https://dev.azure.com/ant-design/ant-design-pro/_apis/build/status/ant-design.ant-design-pro?branchName=master)](https://dev.azure.com/ant-design/ant-design-pro/_build/latest?definitionId=1?branchName=master) [![Dependencies](https://img.shields.io/david/ant-design/ant-design-pro.svg)](https://david-dm.org/ant-design/ant-design-pro) [![DevDependencies](https://img.shields.io/david/dev/ant-design/ant-design-pro.svg)](https://david-dm.org/ant-design/ant-design-pro?type=dev) [![Gitter](https://img.shields.io/gitter/room/ant-design/pro-english.svg?style=flat-square&logoWidth=20&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEyMzUiIGhlaWdodD0iNjUwIiB2aWV3Qm94PSIwIDAgNzQxMCAzOTAwIj4NCjxyZWN0IHdpZHRoPSI3NDEwIiBoZWlnaHQ9IjM5MDAiIGZpbGw9IiNiMjIyMzQiLz4NCjxwYXRoIGQ9Ik0wLDQ1MEg3NDEwbTAsNjAwSDBtMCw2MDBINzQxMG0wLDYwMEgwbTAsNjAwSDc0MTBtMCw2MDBIMCIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMwMCIvPg0KPHJlY3Qgd2lkdGg9IjI5NjQiIGhlaWdodD0iMjEwMCIgZmlsbD0iIzNjM2I2ZSIvPg0KPGcgZmlsbD0iI2ZmZiI%2BDQo8ZyBpZD0iczE4Ij4NCjxnIGlkPSJzOSI%2BDQo8ZyBpZD0iczUiPg0KPGcgaWQ9InM0Ij4NCjxwYXRoIGlkPSJzIiBkPSJNMjQ3LDkwIDMxNy41MzQyMzAsMzA3LjA4MjAzOSAxMzIuODczMjE4LDE3Mi45MTc5NjFIMzYxLjEyNjc4MkwxNzYuNDY1NzcwLDMwNy4wODIwMzl6Ii8%2BDQo8dXNlIHhsaW5rOmhyZWY9IiNzIiB5PSI0MjAiLz4NCjx1c2UgeGxpbms6aHJlZj0iI3MiIHk9Ijg0MCIvPg0KPHVzZSB4bGluazpocmVmPSIjcyIgeT0iMTI2MCIvPg0KPC9nPg0KPHVzZSB4bGluazpocmVmPSIjcyIgeT0iMTY4MCIvPg0KPC9nPg0KPHVzZSB4bGluazpocmVmPSIjczQiIHg9IjI0NyIgeT0iMjEwIi8%2BDQo8L2c%2BDQo8dXNlIHhsaW5rOmhyZWY9IiNzOSIgeD0iNDk0Ii8%2BDQo8L2c%2BDQo8dXNlIHhsaW5rOmhyZWY9IiNzMTgiIHg9Ijk4OCIvPg0KPHVzZSB4bGluazpocmVmPSIjczkiIHg9IjE5NzYiLz4NCjx1c2UgeGxpbms6aHJlZj0iI3M1IiB4PSIyNDcwIi8%2BDQo8L2c%2BDQo8L3N2Zz4%3D)](https://gitter.im/ant-design/pro-english?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![Join the chat at https://gitter.im/ant-design/ant-design-pro](https://img.shields.io/gitter/room/ant-design/ant-design-pro.svg?style=flat-square&logoWidth=20&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjkwMCIgaGVpZ2h0PSI2MDAiIHZpZXdCb3g9IjAgMCAzMCAyMCI%2BDQo8ZGVmcz4NCjxwYXRoIGlkPSJzIiBkPSJNMCwtMSAwLjU4Nzc4NSwwLjgwOTAxNyAtMC45NTEwNTcsLTAuMzA5MDE3SDAuOTUxMDU3TC0wLjU4Nzc4NSwwLjgwOTAxN3oiIGZpbGw9IiNmZmRlMDAiLz4NCjwvZGVmcz4NCjxyZWN0IHdpZHRoPSIzMCIgaGVpZ2h0PSIyMCIgZmlsbD0iI2RlMjkxMCIvPg0KPHVzZSB4bGluazpocmVmPSIjcyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNSw1KSBzY2FsZSgzKSIvPg0KPHVzZSB4bGluazpocmVmPSIjcyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAsMikgcm90YXRlKDIzLjAzNjI0MykiLz4NCjx1c2UgeGxpbms6aHJlZj0iI3MiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyLDQpIHJvdGF0ZSg0NS44Njk4OTgpIi8%2BDQo8dXNlIHhsaW5rOmhyZWY9IiNzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMiw3KSByb3RhdGUoNjkuOTQ1Mzk2KSIvPg0KPHVzZSB4bGluazpocmVmPSIjcyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAsOSkgcm90YXRlKDIwLjY1OTgwOCkiLz4NCjwvc3ZnPg%3D%3D)](https://gitter.im/ant-design/ant-design-pro?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) ![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label) ![Github Action](https://github.com/ant-design/ant-design-pro/workflows/Node%20CI/badge.svg) +[![Build Status](https://dev.azure.com/ant-design/ant-design-pro/_apis/build/status/ant-design.ant-design-pro?branchName=master)](https://dev.azure.com/ant-design/ant-design-pro/_build/latest?definitionId=1?branchName=master) ![Github Action](https://github.com/ant-design/ant-design-pro/workflows/Node%20CI/badge.svg) ![Deploy](https://github.com/ant-design/ant-design-pro/workflows/Deploy%20CI/badge.svg) + +[![Gitter](https://img.shields.io/gitter/room/ant-design/pro-english.svg?style=flat-square&logoWidth=20&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjEyMzUiIGhlaWdodD0iNjUwIiB2aWV3Qm94PSIwIDAgNzQxMCAzOTAwIj4NCjxyZWN0IHdpZHRoPSI3NDEwIiBoZWlnaHQ9IjM5MDAiIGZpbGw9IiNiMjIyMzQiLz4NCjxwYXRoIGQ9Ik0wLDQ1MEg3NDEwbTAsNjAwSDBtMCw2MDBINzQxMG0wLDYwMEgwbTAsNjAwSDc0MTBtMCw2MDBIMCIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lkdGg9IjMwMCIvPg0KPHJlY3Qgd2lkdGg9IjI5NjQiIGhlaWdodD0iMjEwMCIgZmlsbD0iIzNjM2I2ZSIvPg0KPGcgZmlsbD0iI2ZmZiI%2BDQo8ZyBpZD0iczE4Ij4NCjxnIGlkPSJzOSI%2BDQo8ZyBpZD0iczUiPg0KPGcgaWQ9InM0Ij4NCjxwYXRoIGlkPSJzIiBkPSJNMjQ3LDkwIDMxNy41MzQyMzAsMzA3LjA4MjAzOSAxMzIuODczMjE4LDE3Mi45MTc5NjFIMzYxLjEyNjc4MkwxNzYuNDY1NzcwLDMwNy4wODIwMzl6Ii8%2BDQo8dXNlIHhsaW5rOmhyZWY9IiNzIiB5PSI0MjAiLz4NCjx1c2UgeGxpbms6aHJlZj0iI3MiIHk9Ijg0MCIvPg0KPHVzZSB4bGluazpocmVmPSIjcyIgeT0iMTI2MCIvPg0KPC9nPg0KPHVzZSB4bGluazpocmVmPSIjcyIgeT0iMTY4MCIvPg0KPC9nPg0KPHVzZSB4bGluazpocmVmPSIjczQiIHg9IjI0NyIgeT0iMjEwIi8%2BDQo8L2c%2BDQo8dXNlIHhsaW5rOmhyZWY9IiNzOSIgeD0iNDk0Ii8%2BDQo8L2c%2BDQo8dXNlIHhsaW5rOmhyZWY9IiNzMTgiIHg9Ijk4OCIvPg0KPHVzZSB4bGluazpocmVmPSIjczkiIHg9IjE5NzYiLz4NCjx1c2UgeGxpbms6aHJlZj0iI3M1IiB4PSIyNDcwIi8%2BDQo8L2c%2BDQo8L3N2Zz4%3D)](https://gitter.im/ant-design/pro-english?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![Join the chat at https://gitter.im/ant-design/ant-design-pro](https://img.shields.io/gitter/room/ant-design/ant-design-pro.svg?style=flat-square&logoWidth=20&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjkwMCIgaGVpZ2h0PSI2MDAiIHZpZXdCb3g9IjAgMCAzMCAyMCI%2BDQo8ZGVmcz4NCjxwYXRoIGlkPSJzIiBkPSJNMCwtMSAwLjU4Nzc4NSwwLjgwOTAxNyAtMC45NTEwNTcsLTAuMzA5MDE3SDAuOTUxMDU3TC0wLjU4Nzc4NSwwLjgwOTAxN3oiIGZpbGw9IiNmZmRlMDAiLz4NCjwvZGVmcz4NCjxyZWN0IHdpZHRoPSIzMCIgaGVpZ2h0PSIyMCIgZmlsbD0iI2RlMjkxMCIvPg0KPHVzZSB4bGluazpocmVmPSIjcyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNSw1KSBzY2FsZSgzKSIvPg0KPHVzZSB4bGluazpocmVmPSIjcyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAsMikgcm90YXRlKDIzLjAzNjI0MykiLz4NCjx1c2UgeGxpbms6aHJlZj0iI3MiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyLDQpIHJvdGF0ZSg0NS44Njk4OTgpIi8%2BDQo8dXNlIHhsaW5rOmhyZWY9IiNzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMiw3KSByb3RhdGUoNjkuOTQ1Mzk2KSIvPg0KPHVzZSB4bGluazpocmVmPSIjcyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAsOSkgcm90YXRlKDIwLjY1OTgwOCkiLz4NCjwvc3ZnPg%3D%3D)](https://gitter.im/ant-design/ant-design-pro?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![Build With Umi](https://img.shields.io/badge/build%20with-umi-028fe4.svg?style=flat-square)](http://umijs.org/) ![](https://badgen.net/badge/icon/Ant%20Design?icon=https://gw.alipayobjects.com/zos/antfincdn/Pp4WPgVDB3/KDpgvguMpGfqaHPjicRK.svg&label) ![](https://user-images.githubusercontent.com/8186664/44953195-581e3d80-aec4-11e8-8dcb-54b9db38ec11.png) @@ -19,9 +21,9 @@ React ile kurumsal uygulamalar için taslak olarak geliştirilmiş kullanıma ha - SSS: http://pro.ant.design/docs/faq - Çinde barındırılan site: http://ant-design-pro.gitee.io -## 4.0 Versiyonu Şimdi Yayında! 🎉🎉🎉 +## 5.0 Versiyonu Şimdi Yayında! 🎉🎉🎉 -[Announcing Ant Design Pro 4.0.0](https://medium.com/ant-design/ant-design-pro-v4-is-here-6f23098ae9d9) +[Ant Design Pro 5.0.0](https://github.com/ant-design/ant-design-pro/issues/8656) ## Çeviri Desteği :loudspeaker: From 0fd1403f8658c715361e0f5c81eb9348ee176198 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Mon, 8 Aug 2022 14:04:11 +0800 Subject: [PATCH 49/89] fix tsc error --- src/requestErrorConfig.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/requestErrorConfig.ts b/src/requestErrorConfig.ts index c7be46a5..e845fce4 100644 --- a/src/requestErrorConfig.ts +++ b/src/requestErrorConfig.ts @@ -1,4 +1,5 @@ -import type { RequestConfig } from '@umijs/max'; +import type { RequestOptions } from '@@/plugin-request/request'; +import type { RequestConfig } from '@umijs/max'; import { message, notification } from 'antd'; // 错误处理方案: 错误类型 @@ -86,9 +87,9 @@ export const errorConfig: RequestConfig = { // 请求拦截器 requestInterceptors: [ - (config) => { + (config: RequestOptions) => { // 拦截请求配置,进行个性化处理。 - const url = config.url.concat('?token = 123'); + const url = config?.url?.concat('?token = 123'); return { ...config, url }; }, ], From f28188473de34fc9388eba2f2dcf11884d7a7992 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Tue, 23 Aug 2022 11:37:57 +0800 Subject: [PATCH 50/89] fix: fix login style error --- config/config.ts | 1 - src/pages/User/Login/index.tsx | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/config/config.ts b/config/config.ts index 5fd1f5de..08f40d11 100644 --- a/config/config.ts +++ b/config/config.ts @@ -78,7 +78,6 @@ export default defineConfig({ */ layout: { locale: true, - siderWidth: 208, ...defaultSettings, }, /** diff --git a/src/pages/User/Login/index.tsx b/src/pages/User/Login/index.tsx index 080d6faa..1acb5bc4 100644 --- a/src/pages/User/Login/index.tsx +++ b/src/pages/User/Login/index.tsx @@ -108,7 +108,7 @@ const Login: React.FC = () => { await handleSubmit(values as API.LoginParams); }} > - + Date: Tue, 23 Aug 2022 20:24:41 +0800 Subject: [PATCH 51/89] fix: fix name style --- src/app.tsx | 2 +- src/components/HeaderDropdown/index.tsx | 6 +++++- src/components/RightContent/index.less | 9 +++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/app.tsx b/src/app.tsx index 16af7a77..b16a4d91 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -49,9 +49,9 @@ export async function getInitialState(): Promise<{ // ProLayout 支持的api https://procomponents.ant.design/components/layout export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) => { + console.log(initialState?.settings); return { rightContentRender: () => , - disableContentMargin: false, waterMarkProps: { content: initialState?.currentUser?.name, }, diff --git a/src/components/HeaderDropdown/index.tsx b/src/components/HeaderDropdown/index.tsx index 714ff761..07df291b 100644 --- a/src/components/HeaderDropdown/index.tsx +++ b/src/components/HeaderDropdown/index.tsx @@ -11,7 +11,11 @@ export type HeaderDropdownProps = { } & Omit; const HeaderDropdown: React.FC = ({ overlayClassName: cls, ...restProps }) => ( - + target.parentElement || document.body} + {...restProps} + /> ); export default HeaderDropdown; diff --git a/src/components/RightContent/index.less b/src/components/RightContent/index.less index 79fec19d..0719f76a 100644 --- a/src/components/RightContent/index.less +++ b/src/components/RightContent/index.less @@ -17,6 +17,15 @@ height: 48px; margin-left: auto; overflow: hidden; + + .name { + width: 40px; + height: 48px; + overflow: hidden; + line-height: 48px; + white-space: nowrap; + text-overflow: ellipsis; + } .action { display: flex; align-items: center; From b28bc59969cfb88643930576914c246536d0ae93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Thu, 1 Sep 2022 15:47:40 +0800 Subject: [PATCH 52/89] use latest version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e6ecabd9..2f4ff519 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ ], "dependencies": { "@ant-design/icons": "^4.7.0", - "@ant-design/pro-components": "^1.1.1", + "@ant-design/pro-components": "^2.0.0", "@umijs/route-utils": "^2.1.3", "antd": "^4.20.0", "classnames": "^2.3.0", From e02aa4ed2f2e209fd50c31568d9d24f1f3c8d501 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Tue, 6 Sep 2022 15:46:31 +0800 Subject: [PATCH 53/89] fix PageContainer error --- src/pages/Admin.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/Admin.tsx b/src/pages/Admin.tsx index b4943a94..2f93986b 100644 --- a/src/pages/Admin.tsx +++ b/src/pages/Admin.tsx @@ -1,5 +1,5 @@ import { HeartTwoTone, SmileTwoTone } from '@ant-design/icons'; -import { PageHeaderWrapper } from '@ant-design/pro-components'; +import { PageContainer } from '@ant-design/pro-components'; import { useIntl } from '@umijs/max'; import { Alert, Card, Typography } from 'antd'; import React from 'react'; @@ -7,7 +7,7 @@ import React from 'react'; const Admin: React.FC = () => { const intl = useIntl(); return ( - { 。

    -
    + ); }; From 7c3f45f6eec3177ae66f59629c0cafd44fcecbe5 Mon Sep 17 00:00:00 2001 From: CN-traveler <55753029+CN-traveler@users.noreply.github.com> Date: Tue, 6 Sep 2022 15:48:42 +0800 Subject: [PATCH 54/89] =?UTF-8?q?=E8=A7=A3=E5=86=B3=20404=20=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E5=87=BA=E7=8E=B0=E6=A8=AA=E5=90=91=E6=BB=9A=E5=8A=A8?= =?UTF-8?q?=E6=9D=A1=20(#10194)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/routes.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/config/routes.ts b/config/routes.ts index 671b453e..b5a7b748 100644 --- a/config/routes.ts +++ b/config/routes.ts @@ -52,6 +52,7 @@ export default [ }, { path: '*', + layout: false, component: './404', }, ]; From 7d51aeb221f5c206e7342cb53d7e2ceb08a6b156 Mon Sep 17 00:00:00 2001 From: CN-traveler <55753029+CN-traveler@users.noreply.github.com> Date: Tue, 6 Sep 2022 15:50:03 +0800 Subject: [PATCH 55/89] =?UTF-8?q?feat:=20=E6=9B=BF=E6=8D=A2=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E9=A1=B5=E7=BB=84=E4=BB=B6=20&=20=E6=9B=B4=E6=AD=A3?= =?UTF-8?q?=E8=B7=AF=E7=94=B1=20(#10195)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 替换组件 * 更新管理页面路由 --- config/routes.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/config/routes.ts b/config/routes.ts index b5a7b748..f4d076a4 100644 --- a/config/routes.ts +++ b/config/routes.ts @@ -32,11 +32,14 @@ export default [ icon: 'crown', access: 'canAdmin', routes: [ + { + path: '/admin', + redirect: '/admin/sub-page', + }, { path: '/admin/sub-page', name: 'sub-page', - icon: 'smile', - component: './Welcome', + component: './Admin', }, ], }, From c96a2f15d43141b4286dc0bdae7b65ec9373e8a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Tue, 20 Sep 2022 16:53:18 +0800 Subject: [PATCH 56/89] fix: fix default setting error --- config/defaultSettings.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/defaultSettings.ts b/config/defaultSettings.ts index 4d5f64d2..6bd3ddf8 100644 --- a/config/defaultSettings.ts +++ b/config/defaultSettings.ts @@ -9,7 +9,7 @@ const Settings: LayoutSettings & { } = { navTheme: 'light', // 拂晓蓝 - primaryColor: '#1890ff', + colorPrimary: '#1890ff', layout: 'mix', contentWidth: 'Fluid', fixedHeader: false, From da301fa212853a528318619c282f7080a3c29a17 Mon Sep 17 00:00:00 2001 From: Yanghc Date: Thu, 22 Sep 2022 10:41:09 +0800 Subject: [PATCH 57/89] =?UTF-8?q?fix:=20RightContent=20=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=20navTheme=20=E6=9D=A1=E4=BB=B6=E5=80=BC=20(#10210)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit build (16.x, ubuntu-latest): src/components/RightContent/index.tsx#L1 This condition will always return 'false' since the types '"light" | "realDark" | undefined' and '"dark"' have no overlap. https://github.com/ant-design/ant-design-pro/pull/10209/files#annotation_4543727834 --- src/components/RightContent/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/RightContent/index.tsx b/src/components/RightContent/index.tsx index 7a36d385..7a3a6bf3 100644 --- a/src/components/RightContent/index.tsx +++ b/src/components/RightContent/index.tsx @@ -18,7 +18,7 @@ const GlobalHeaderRight: React.FC = () => { const { navTheme, layout } = initialState.settings; let className = styles.right; - if ((navTheme === 'dark' && layout === 'top') || layout === 'mix') { + if ((navTheme === 'realDark' && layout === 'top') || layout === 'mix') { className = `${styles.right} ${styles.dark}`; } return ( From 4c191edffe447527eb1c32ac2b513d804dffdf99 Mon Sep 17 00:00:00 2001 From: Yanghc Date: Thu, 22 Sep 2022 10:42:14 +0800 Subject: [PATCH 58/89] =?UTF-8?q?fix:=20requestErrorConfig=E5=9C=A8?= =?UTF-8?q?=E5=8F=91=E7=94=9F=E5=BC=82=E5=B8=B8=E6=97=B6=EF=BC=8Cmessage.e?= =?UTF-8?q?rror=E4=B8=8D=E8=87=AA=E5=8A=A8=E5=85=B3=E9=97=AD=20(#10209)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/requestErrorConfig.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/requestErrorConfig.ts b/src/requestErrorConfig.ts index e845fce4..8306b0c8 100644 --- a/src/requestErrorConfig.ts +++ b/src/requestErrorConfig.ts @@ -72,7 +72,7 @@ export const errorConfig: RequestConfig = { } else if (error.response) { // Axios 的错误 // 请求成功发出且服务器也响应了状态码,但状态代码超出了 2xx 的范围 - message.error('Response status:', error.response.status); + message.error(`Response status:${error.response.status}`); } else if (error.request) { // 请求已经成功发起,但没有收到响应 // \`error.request\` 在浏览器中是 XMLHttpRequest 的实例, From b2d8e0c710075195dfa41cd3070cd9106f678d14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Thu, 22 Sep 2022 11:31:44 +0800 Subject: [PATCH 59/89] fix: remove warning --- src/app.tsx | 1 - src/components/RightContent/index.less | 2 +- src/pages/User/Login/index.tsx | 37 +++++++++++++++----------- src/requestErrorConfig.ts | 3 ++- 4 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/app.tsx b/src/app.tsx index b16a4d91..f989ec33 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -49,7 +49,6 @@ export async function getInitialState(): Promise<{ // ProLayout 支持的api https://procomponents.ant.design/components/layout export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) => { - console.log(initialState?.settings); return { rightContentRender: () => , waterMarkProps: { diff --git a/src/components/RightContent/index.less b/src/components/RightContent/index.less index 0719f76a..d867d998 100644 --- a/src/components/RightContent/index.less +++ b/src/components/RightContent/index.less @@ -19,7 +19,7 @@ overflow: hidden; .name { - width: 40px; + width: 70px; height: 48px; overflow: hidden; line-height: 48px; diff --git a/src/pages/User/Login/index.tsx b/src/pages/User/Login/index.tsx index 1acb5bc4..3a687388 100644 --- a/src/pages/User/Login/index.tsx +++ b/src/pages/User/Login/index.tsx @@ -108,22 +108,27 @@ const Login: React.FC = () => { await handleSubmit(values as API.LoginParams); }} > - - - - + {status === 'error' && loginType === 'account' && ( { // 拦截响应数据,进行个性化处理 const { data } = response as unknown as ResponseStructure; - if (!data.success) { + + if (data?.success === false) { message.error('请求失败!'); } return response; From 23cfee4c98dee7e84080c61724538c975b91c2ad Mon Sep 17 00:00:00 2001 From: chenshuai2144 Date: Fri, 23 Sep 2022 17:02:53 +0800 Subject: [PATCH 60/89] docs: update readme close https://github.com/ant-design/ant-design-pro/issues/10248 --- README.md | 46 +++++++++++++++++++++++++++++++--------------- README.zh-CN.md | 46 +++++++++++++++++++++++++++++++--------------- 2 files changed, 62 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 4364f81f..2cf4d673 100644 --- a/README.md +++ b/README.md @@ -82,22 +82,38 @@ We need your help: https://github.com/ant-design/ant-design-pro/issues/120 ### Use bash +We provide pro-cli to quickly initialize scaffolding. + ```bash -$ mkdir -$ cd -$ yarn create umi # or npm create umi - -# Choose ant-design-pro: - Select the boilerplate type (Use arrow keys) -❯ ant-design-pro - Create project with an layout-only ant-design-pro boilerplate, use together with umi block. - app - Create project with a simple boilerplate, support typescript. - block - Create a umi block. - library - Create a library with umi. - plugin - Create a umi plugin. - -$ git init -$ npm install -$ npm start # visit http://localhost:8000 +# use npm +npm i @ant-design/pro-cli -g +pro create myapp +``` + +select umi version + +```shell +🐂 Use umi@4 or umi@3 ? (Use arrow keys) +❯ umi@4 + umi@3 +``` + +> If the umi@4 version is selected, full blocks are not yet supported. + +If you choose umi@3, you can also choose the pro template. Pro is the basic template, which only provides the basic content of the framework operation. Complete contains all blocks, which is not suitable for secondary development as a basic template. + +```shell +? 🚀 Full or a simple scaffold? (Use arrow keys) +❯ simple + complete +``` + +Install dependencies: + +```shell +$ cd myapp && tyarn +// or +$ cd myapp && npm install ``` ## Browsers support diff --git a/README.zh-CN.md b/README.zh-CN.md index 0cdd9df5..1e0febca 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -74,22 +74,38 @@ Language : [🇺🇸](./README.md) | 🇨🇳 | [🇷🇺](./README.ru-RU.md) | ## 使用 +我们提供了 pro-cli 来快速的初始化脚手架。 + ```bash -$ mkdir -$ cd -$ yarn create umi # or npm create umi - -# Choose ant-design-pro: - Select the boilerplate type (Use arrow keys) -❯ ant-design-pro - Create project with an layout-only ant-design-pro boilerplate, use together with umi block. - app - Create project with a simple boilerplate, support typescript. - block - Create a umi block. - library - Create a library with umi. - plugin - Create a umi plugin. - -$ git init -$ npm install -$ npm start # visit http://localhost:8000 +# 使用 npm +npm i @ant-design/pro-cli -g +pro create myapp +``` + +选择 umi 的版本 + +```shell +? 🐂 使用 umi@4 还是 umi@3 ? (Use arrow keys) +❯ umi@4 + umi@3 +``` + +> 如果选择了 umi@4 版本,暂时还不支持全量区块。 + +如果选择了 umi@3,还可以选择 pro 的模板,pro 是基础模板,只提供了框架运行的基本内容,complete 包含所有区块,不太适合当基础模板来进行二次开发 + +```shell +? 🚀 要全量的还是一个简单的脚手架? (Use arrow keys) +❯ simple + complete +``` + +安装依赖: + +```shell +$ cd myapp && tyarn +// 或 +$ cd myapp && npm install ``` 更多信息请参考 [使用文档](http://pro.ant.design/docs/getting-started)。 From b9163aeedd4d099b4af19bdb8378f6e9c0fad260 Mon Sep 17 00:00:00 2001 From: chenshuai2144 Date: Sat, 24 Sep 2022 14:00:18 +0800 Subject: [PATCH 61/89] fix: add refresh when login https://github.com/ant-design/ant-design-pro/issues/10222 --- src/pages/User/Login/index.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pages/User/Login/index.tsx b/src/pages/User/Login/index.tsx index 3a687388..70238b4b 100644 --- a/src/pages/User/Login/index.tsx +++ b/src/pages/User/Login/index.tsx @@ -38,7 +38,7 @@ const LoginMessage: React.FC<{ const Login: React.FC = () => { const [userLoginState, setUserLoginState] = useState({}); const [type, setType] = useState('account'); - const { initialState, setInitialState } = useModel('@@initialState'); + const { initialState, refresh, setInitialState } = useModel('@@initialState'); const intl = useIntl(); @@ -63,6 +63,7 @@ const Login: React.FC = () => { }); message.success(defaultLoginSuccessMessage); await fetchUserInfo(); + await refresh(); const urlParams = new URL(window.location.href).searchParams; history.push(urlParams.get('redirect') || '/'); return; From 065c912d3df3d615d6bc01e5e5c95c0558d6c457 Mon Sep 17 00:00:00 2001 From: chenshuai2144 Date: Sat, 24 Sep 2022 15:19:16 +0800 Subject: [PATCH 62/89] chore: update boot --- .github/ISSUE_TEMPLATE/feature_request.md | 2 +- .github/workflows/issue-open-check.yml | 6 +++--- .github/workflows/rebase.yml | 23 ----------------------- 3 files changed, 4 insertions(+), 27 deletions(-) delete mode 100644 .github/workflows/rebase.yml diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 545431d2..b2b866a8 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,7 +1,7 @@ --- name: '功能需求 | Feature Requirements ✨' about: 对 Ant Design Pro 的需求或建议 -title: '👑 [需求]' +title: '👑 [需求 | Feature]' labels: '👑 Feature Request' assignees: '' --- diff --git a/.github/workflows/issue-open-check.yml b/.github/workflows/issue-open-check.yml index eef609ee..36442132 100644 --- a/.github/workflows/issue-open-check.yml +++ b/.github/workflows/issue-open-check.yml @@ -13,7 +13,7 @@ jobs: with: actions: 'check-issue' issue-number: ${{ github.event.issue.number }} - title-excludes: '🐛[BUG], 👑 [需求], 🧐[问题]' + title-excludes: '🐛 [BUG], 👑 [需求 | Feature], 🧐[问题 | question]' - if: steps.check.outputs.check-result == 'false' && github.event.issue.state == 'open' uses: actions-cool/issues-helper@v2.2.0 @@ -28,7 +28,7 @@ jobs: - if: steps.check.outputs.check-result == 'true' uses: actions-cool/issues-similarity-analysis@v1 with: - filter-threshold: 0.5 - title-excludes: '🐛[BUG], 👑 [需求], 🧐[问题]' + filter-threshold: 0.8 + title-excludes: '🐛[BUG], 👑 [需求 | Feature], 🧐[问题 | question]' comment-title: '### 以下的 Issues 可能会帮助到你 / The following issues may help you' show-footer: false diff --git a/.github/workflows/rebase.yml b/.github/workflows/rebase.yml deleted file mode 100644 index 6d605e9d..00000000 --- a/.github/workflows/rebase.yml +++ /dev/null @@ -1,23 +0,0 @@ -on: - issue_comment: - types: [created] -name: Automatic Rebase -permissions: - contents: read - -jobs: - rebase: - permissions: - contents: write # for cirrus-actions/rebase to push code to rebase - pull-requests: read # for cirrus-actions/rebase to get info about PR - name: Rebase - if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/rebase') - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@master - with: - fetch-depth: 0 - - name: Automatic Rebase - uses: cirrus-actions/rebase@1.3 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 00151a634b3b13c712be2d9b4cfe4bf7369ee5da Mon Sep 17 00:00:00 2001 From: chenshuai2144 Date: Sat, 24 Sep 2022 15:34:42 +0800 Subject: [PATCH 63/89] fix: redirect use react router pathname --- .../RightContent/AvatarDropdown.tsx | 39 +++++++++---------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/src/components/RightContent/AvatarDropdown.tsx b/src/components/RightContent/AvatarDropdown.tsx index 9e77f15b..380d6bd0 100644 --- a/src/components/RightContent/AvatarDropdown.tsx +++ b/src/components/RightContent/AvatarDropdown.tsx @@ -13,27 +13,26 @@ export type GlobalHeaderRightProps = { menu?: boolean; }; -/** - * 退出登录,并且将当前的 url 保存 - */ -const loginOut = async () => { - await outLogin(); - const { search, pathname } = window.location; - const urlParams = new URL(window.location.href).searchParams; - /** 此方法会跳转到 redirect 参数所在的位置 */ - const redirect = urlParams.get('redirect'); - // Note: There may be security issues, please note - if (window.location.pathname !== '/user/login' && !redirect) { - history.replace({ - pathname: '/user/login', - search: stringify({ - redirect: pathname + search, - }), - }); - } -}; - const AvatarDropdown: React.FC = ({ menu }) => { + /** + * 退出登录,并且将当前的 url 保存 + */ + const loginOut = async () => { + await outLogin(); + const { search, pathname } = history.location; + const urlParams = new URL(history.location.search).searchParams; + /** 此方法会跳转到 redirect 参数所在的位置 */ + const redirect = urlParams.get('redirect'); + // Note: There may be security issues, please note + if (window.location.pathname !== '/user/login' && !redirect) { + history.replace({ + pathname: '/user/login', + search: stringify({ + redirect: pathname + search, + }), + }); + } + }; const { initialState, setInitialState } = useModel('@@initialState'); const onMenuClick = useCallback( From 84963741a6e3730d1588b35f7a437942fb4ede8b Mon Sep 17 00:00:00 2001 From: chenshuai2144 Date: Sat, 24 Sep 2022 15:35:28 +0800 Subject: [PATCH 64/89] =?UTF-8?q?fix=EF=BC=9A=20remove=20antd=20lib=20remo?= =?UTF-8?q?ve?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/RightContent/AvatarDropdown.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/RightContent/AvatarDropdown.tsx b/src/components/RightContent/AvatarDropdown.tsx index 380d6bd0..ac7f670c 100644 --- a/src/components/RightContent/AvatarDropdown.tsx +++ b/src/components/RightContent/AvatarDropdown.tsx @@ -2,7 +2,7 @@ import { outLogin } from '@/services/ant-design-pro/api'; import { LogoutOutlined, SettingOutlined, UserOutlined } from '@ant-design/icons'; import { history, useModel } from '@umijs/max'; import { Avatar, Menu, Spin } from 'antd'; -import type { ItemType } from 'antd/lib/menu/hooks/useItems'; +import type { ItemType } from 'antd/es/menu/hooks/useItems'; import { stringify } from 'querystring'; import type { MenuInfo } from 'rc-menu/lib/interface'; import React, { useCallback } from 'react'; From 6200e1dbeb64589620dfe42e687f4dee4771805b Mon Sep 17 00:00:00 2001 From: Kylin Date: Fri, 30 Sep 2022 11:17:58 +0800 Subject: [PATCH 65/89] fix: You may NOT need # b9163ae and # 00151a6 (#10257) --- src/components/RightContent/AvatarDropdown.tsx | 4 ++-- src/pages/User/Login/index.tsx | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/components/RightContent/AvatarDropdown.tsx b/src/components/RightContent/AvatarDropdown.tsx index ac7f670c..9f91b368 100644 --- a/src/components/RightContent/AvatarDropdown.tsx +++ b/src/components/RightContent/AvatarDropdown.tsx @@ -19,8 +19,8 @@ const AvatarDropdown: React.FC = ({ menu }) => { */ const loginOut = async () => { await outLogin(); - const { search, pathname } = history.location; - const urlParams = new URL(history.location.search).searchParams; + const { search, pathname } = window.location; + const urlParams = new URL(window.location.href).searchParams; /** 此方法会跳转到 redirect 参数所在的位置 */ const redirect = urlParams.get('redirect'); // Note: There may be security issues, please note diff --git a/src/pages/User/Login/index.tsx b/src/pages/User/Login/index.tsx index 70238b4b..3a687388 100644 --- a/src/pages/User/Login/index.tsx +++ b/src/pages/User/Login/index.tsx @@ -38,7 +38,7 @@ const LoginMessage: React.FC<{ const Login: React.FC = () => { const [userLoginState, setUserLoginState] = useState({}); const [type, setType] = useState('account'); - const { initialState, refresh, setInitialState } = useModel('@@initialState'); + const { initialState, setInitialState } = useModel('@@initialState'); const intl = useIntl(); @@ -63,7 +63,6 @@ const Login: React.FC = () => { }); message.success(defaultLoginSuccessMessage); await fetchUserInfo(); - await refresh(); const urlParams = new URL(window.location.href).searchParams; history.push(urlParams.get('redirect') || '/'); return; From 5963d69f904223ace1c2d579811b21e2daed5a7a Mon Sep 17 00:00:00 2001 From: SvenFE Date: Sun, 16 Oct 2022 09:58:50 +0800 Subject: [PATCH 66/89] chore: bump deps (#10274) --- package.json | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index 2f4ff519..1e4abea3 100644 --- a/package.json +++ b/package.json @@ -43,46 +43,46 @@ ], "dependencies": { "@ant-design/icons": "^4.7.0", - "@ant-design/pro-components": "^2.0.0", + "@ant-design/pro-components": "^2.3.13", "@umijs/route-utils": "^2.1.3", - "antd": "^4.20.0", - "classnames": "^2.3.0", - "lodash": "^4.17.0", - "moment": "^2.29.0", + "antd": "^4.23.3", + "classnames": "^2.3.2", + "lodash": "^4.17.21", + "moment": "^2.29.4", "omit.js": "^2.0.2", - "rc-menu": "^9.1.0", - "rc-util": "^5.16.0", + "rc-menu": "^9.6.4", + "rc-util": "^5.24.4", "react": "^17.0.0", - "react-dev-inspector": "^1.7.0", + "react-dev-inspector": "^1.8.1", "react-dom": "^17.0.0", - "react-helmet-async": "^1.2.0" + "react-helmet-async": "^1.3.0" }, "devDependencies": { "@ant-design/pro-cli": "^2.1.0", - "@playwright/test": "^1.17.0", + "@playwright/test": "^1.26.1", "@types/classnames": "^2.3.1", - "@types/express": "^4.17.0", - "@types/history": "^4.7.0", - "@types/lodash": "^4.14.0", + "@types/express": "^4.17.14", + "@types/history": "^4.7.11", + "@types/lodash": "^4.14.186", "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", - "@types/react-helmet": "^6.1.0", + "@types/react-helmet": "^6.1.5", "@umijs/fabric": "^2.11.1", - "@umijs/max": "^4.0.0-rc.22", - "@umijs/openapi": "^1.3.0", - "cross-env": "^7.0.0", - "cross-port-killer": "^1.3.0", - "detect-installer": "^1.0.0", + "@umijs/max": "^4.0.24", + "@umijs/openapi": "^1.7.0", + "cross-env": "^7.0.3", + "cross-port-killer": "^1.4.0", + "detect-installer": "^1.0.2", "eslint": "^7.32.0", "gh-pages": "^3.2.0", "husky": "^7.0.4", "lint-staged": "^10.0.0", "mockjs": "^1.1.0", - "prettier": "^2.5.0", - "swagger-ui-dist": "^4.12.0", - "typescript": "^4.5.0", - "umi-presets-pro": "^1.0.1", - "umi-serve": "^1.9.10" + "prettier": "^2.7.1", + "swagger-ui-dist": "^4.14.2", + "typescript": "^4.8.4", + "umi-presets-pro": "^1.0.5", + "umi-serve": "^1.9.11" }, "engines": { "node": ">=12.0.0" From c82145f2a6f9060abeda89a6dd0e7ec26eb4e780 Mon Sep 17 00:00:00 2001 From: chenshuai2144 Date: Sun, 16 Oct 2022 19:44:09 +0800 Subject: [PATCH 67/89] fix: fix setInitialState sync data error close https://github.com/ant-design/ant-design-pro/issues/10222#issuecomment-1279807915 --- src/components/RightContent/AvatarDropdown.tsx | 5 ++++- src/pages/User/Login/index.tsx | 11 +++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/components/RightContent/AvatarDropdown.tsx b/src/components/RightContent/AvatarDropdown.tsx index 9f91b368..6a789296 100644 --- a/src/components/RightContent/AvatarDropdown.tsx +++ b/src/components/RightContent/AvatarDropdown.tsx @@ -6,6 +6,7 @@ import type { ItemType } from 'antd/es/menu/hooks/useItems'; import { stringify } from 'querystring'; import type { MenuInfo } from 'rc-menu/lib/interface'; import React, { useCallback } from 'react'; +import { flushSync } from 'react-dom'; import HeaderDropdown from '../HeaderDropdown'; import styles from './index.less'; @@ -39,7 +40,9 @@ const AvatarDropdown: React.FC = ({ menu }) => { (event: MenuInfo) => { const { key } = event; if (key === 'logout') { - setInitialState((s) => ({ ...s, currentUser: undefined })); + flushSync(() => { + setInitialState((s) => ({ ...s, currentUser: undefined })); + }); loginOut(); return; } diff --git a/src/pages/User/Login/index.tsx b/src/pages/User/Login/index.tsx index 3a687388..6fd9b100 100644 --- a/src/pages/User/Login/index.tsx +++ b/src/pages/User/Login/index.tsx @@ -18,6 +18,7 @@ import { import { FormattedMessage, history, SelectLang, useIntl, useModel } from '@umijs/max'; import { Alert, message, Tabs } from 'antd'; import React, { useState } from 'react'; +import { flushSync } from 'react-dom'; import styles from './index.less'; const LoginMessage: React.FC<{ @@ -45,10 +46,12 @@ const Login: React.FC = () => { const fetchUserInfo = async () => { const userInfo = await initialState?.fetchUserInfo?.(); if (userInfo) { - await setInitialState((s) => ({ - ...s, - currentUser: userInfo, - })); + flushSync(() => { + setInitialState((s) => ({ + ...s, + currentUser: userInfo, + })); + }); } }; From 25d026ac827c873f2c8d8795dfc87e646477d074 Mon Sep 17 00:00:00 2001 From: pshu Date: Fri, 21 Oct 2022 10:29:44 +0800 Subject: [PATCH 68/89] =?UTF-8?q?=E9=81=BF=E5=85=8D=20mfsu=20=E7=BC=96?= =?UTF-8?q?=E8=AF=91=20playwright=20(#10311)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config/config.ts b/config/config.ts index 08f40d11..4a4067c5 100644 --- a/config/config.ts +++ b/config/config.ts @@ -130,4 +130,7 @@ export default defineConfig({ projectName: 'swagger', }, ], + mfsu: { + exclude :['@playwright/test'] + }, }); From 24840617ec7a9016bf962f4c1fc092d64427c9b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Thu, 27 Oct 2022 14:01:35 +0800 Subject: [PATCH 69/89] fix: remove dev proxy --- config/proxy.ts | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/config/proxy.ts b/config/proxy.ts index 170e55d9..59e3d82e 100644 --- a/config/proxy.ts +++ b/config/proxy.ts @@ -10,21 +10,13 @@ * @doc https://umijs.org/docs/guides/proxy */ export default { - dev: { - // localhost:8000/api/** -> https://preview.pro.ant.design/api/** - '/api/': { - // 要代理的地址 - target: 'https://preview.pro.ant.design', - // 配置了这个可以从 http 代理到 https - // 依赖 origin 的功能可能需要这个,比如 cookie - changeOrigin: true, - }, - }, + dev: {}, /** * @name 详细的代理配置 * @doc https://github.com/chimurai/http-proxy-middleware */ test: { + // localhost:8000/api/** -> https://preview.pro.ant.design/api/** '/api/': { target: 'https://proapi.azurewebsites.net', changeOrigin: true, From a5ed98360f131481fa8c4b43bf32cb758aff29c2 Mon Sep 17 00:00:00 2001 From: lijianan <574980606@qq.com> Date: Fri, 4 Nov 2022 17:30:51 +0800 Subject: [PATCH 70/89] Update README.zh-CN.md (#10336) --- README.zh-CN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.zh-CN.md b/README.zh-CN.md index 1e0febca..d9a0c0db 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -92,7 +92,7 @@ pro create myapp > 如果选择了 umi@4 版本,暂时还不支持全量区块。 -如果选择了 umi@3,还可以选择 pro 的模板,pro 是基础模板,只提供了框架运行的基本内容,complete 包含所有区块,不太适合当基础模板来进行二次开发 +如果选择了 umi@3,还可以选择 pro 的模板,simple 是基础模板,只提供了框架运行的基本内容,complete 包含所有区块,不太适合当基础模板来进行二次开发 ```shell ? 🚀 要全量的还是一个简单的脚手架? (Use arrow keys) From 6641f4424fa16f4306d0cb4c671c56b58107fc9a Mon Sep 17 00:00:00 2001 From: SHINCHVEN Date: Tue, 8 Nov 2022 17:47:53 +0800 Subject: [PATCH 71/89] Correct spelling (#10348) batch --- src/locales/en-US/pages.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locales/en-US/pages.ts b/src/locales/en-US/pages.ts index 3557341c..486f5e85 100644 --- a/src/locales/en-US/pages.ts +++ b/src/locales/en-US/pages.ts @@ -63,6 +63,6 @@ export default { 'pages.searchTable.item': 'item', 'pages.searchTable.totalServiceCalls': 'Total Number of Service Calls', 'pages.searchTable.tenThousand': '0000', - 'pages.searchTable.batchDeletion': 'bacth deletion', + 'pages.searchTable.batchDeletion': 'batch deletion', 'pages.searchTable.batchApproval': 'batch approval', }; From 9d018aae5cbb3be84d83e5d1617ffbdd9ba9439d Mon Sep 17 00:00:00 2001 From: SHINCHVEN Date: Sat, 19 Nov 2022 15:22:51 +0800 Subject: [PATCH 72/89] fix: Hash router was ignored in getInitialState() (#10352) Use `history.location.pathname` instead of `window.location.pathname` to support hash router. --- src/app.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/app.tsx b/src/app.tsx index f989ec33..65f1563c 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -33,7 +33,8 @@ export async function getInitialState(): Promise<{ return undefined; }; // 如果不是登录页面,执行 - if (window.location.pathname !== loginPath) { + const { location } = history; + if (location.pathname !== loginPath) { const currentUser = await fetchUserInfo(); return { fetchUserInfo, From 28ae430f16d9dc4ab0b91a095df6102be60af650 Mon Sep 17 00:00:00 2001 From: "lgtm-com[bot]" <43144390+lgtm-com[bot]@users.noreply.github.com> Date: Sat, 19 Nov 2022 15:23:10 +0800 Subject: [PATCH 73/89] Add CodeQL workflow for GitHub code scanning (#10359) Co-authored-by: LGTM Migrator --- .github/workflows/codeql.yml | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 .github/workflows/codeql.yml diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 00000000..705b30e3 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,41 @@ +name: "CodeQL" + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] + schedule: + - cron: "48 12 * * 2" + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ javascript ] + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + queries: +security-and-quality + + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 + with: + category: "/language:${{ matrix.language }}" From 0f4935f4d169caee99d335b1d5a665ca9638f229 Mon Sep 17 00:00:00 2001 From: Hexi <66669483+Hexi1997@users.noreply.github.com> Date: Wed, 30 Nov 2022 18:10:31 +0800 Subject: [PATCH 74/89] chore: update router params description (#10404) --- config/routes.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/config/routes.ts b/config/routes.ts index f4d076a4..9a68bcb2 100644 --- a/config/routes.ts +++ b/config/routes.ts @@ -1,11 +1,13 @@ /** * @name umi 的路由配置 - * @description 只支持 path,component,routes,redirect,wrappers,title 的配置 + * @description 只支持 path,component,routes,redirect,wrappers,name,icon 的配置 * @param path path 只支持两种占位符配置,第一种是动态参数 :id 的形式,第二种是 * 通配符,通配符只能出现路由字符串的最后。 * @param component 配置 location 和 path 匹配后用于渲染的 React 组件路径。可以是绝对路径,也可以是相对路径,如果是相对路径,会从 src/pages 开始找起。 * @param routes 配置子路由,通常在需要为多个路径增加 layout 组件时使用。 * @param redirect 配置路由跳转 * @param wrappers 配置路由组件的包装组件,通过包装组件可以为当前的路由组件组合进更多的功能。 比如,可以用于路由级别的权限校验 + * @param name 配置路由的标题,默认读取国际化文件 menu.ts 中 menu.xxxx 的值,如配置 name 为 login,则读取 menu.ts 中 menu.login 的取值作为标题 + * @param icon 配置路由的图标,取值参考 https://ant.design/components/icon-cn, 注意去除风格后缀和大小写,如想要配置图标为 则取值应为 stepBackward 或 StepBackward,如想要配置图标为 则取值应为 user 或者 User * @doc https://umijs.org/docs/guides/routes */ export default [ From 5177d3382c3dd71594c267501a23ecb6517e6d1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=B8=85?= Date: Tue, 13 Dec 2022 10:45:08 +0800 Subject: [PATCH 75/89] =?UTF-8?q?feat:=20=E5=8D=87=E7=BA=A7=E5=88=B0=20ant?= =?UTF-8?q?d@5=20(#10377)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add test lib * add more fix * prettier * prettier * prettier * fix(test):更好的类型优化 * chore: update lock * update * remove e2e * try remove less * update to antd@5 * chore: support antd@5 * fix: update snapshot * fix: update snapshot * remove fabric * feat: request record * fix: support jest * fix ci * fix ci * fix ci * fix ci * fix ci * fix ci * fix ci * fix ci * remove plugin Co-authored-by: xiefengnian.xfn --- .eslintrc.js | 3 +- .github/workflows/ci.yml | 1 - .github/workflows/coverage.yml | 27 + .github/workflows/pnpm.yml | 4 +- .gitignore | 1 - .prettierrc.js | 22 +- config/config.ts | 7 +- jest.config.ts | 23 + mock/listTableList.ts | 10 +- mock/notices.ts | 24 +- mock/requestRecord.mock.js | 324 + package.json | 44 +- playwright.config.ts | 22 - pnpm-lock.yaml | 16237 ++++++++++++++++ src/app.tsx | 28 +- src/components/Footer/index.tsx | 1 + src/components/HeaderDropdown/index.less | 16 - src/components/HeaderDropdown/index.tsx | 28 +- src/components/HeaderSearch/index.less | 25 - src/components/HeaderSearch/index.tsx | 101 - src/components/NoticeIcon/NoticeIcon.tsx | 126 - src/components/NoticeIcon/NoticeList.less | 103 - src/components/NoticeIcon/NoticeList.tsx | 112 - src/components/NoticeIcon/index.less | 35 - src/components/NoticeIcon/index.tsx | 152 - .../RightContent/AvatarDropdown.tsx | 83 +- src/components/RightContent/index.less | 82 - src/components/RightContent/index.tsx | 67 +- src/components/index.md | 267 - src/e2e/baseLayout.e2e.spec.ts | 44 - src/global.less | 9 +- src/global.tsx | 2 +- src/pages/TableList/components/UpdateForm.tsx | 4 +- src/pages/TableList/index.tsx | 22 +- .../Login/__snapshots__/login.test.tsx.snap | 1110 ++ src/pages/User/Login/index.less | 48 - src/pages/User/Login/index.tsx | 91 +- src/pages/User/Login/login.test.tsx | 95 + src/pages/Welcome.tsx | 32 +- src/requestErrorConfig.ts | 2 +- src/typings.d.ts | 4 - tests/run-tests.js | 47 - tests/setupTests.js | 10 - tests/setupTests.jsx | 64 + tsconfig.json | 40 +- types/cache/cache.json | 1 + types/cache/login.cache.json | 386 + types/cache/mock/login.mock.cache.js | 324 + types/cache/mock/mock.cache.js | 0 types/index.d.ts | 120 + 50 files changed, 19047 insertions(+), 1383 deletions(-) create mode 100644 .github/workflows/coverage.yml create mode 100644 jest.config.ts create mode 100644 mock/requestRecord.mock.js delete mode 100644 playwright.config.ts create mode 100644 pnpm-lock.yaml delete mode 100644 src/components/HeaderDropdown/index.less delete mode 100644 src/components/HeaderSearch/index.less delete mode 100644 src/components/HeaderSearch/index.tsx delete mode 100644 src/components/NoticeIcon/NoticeIcon.tsx delete mode 100755 src/components/NoticeIcon/NoticeList.less delete mode 100644 src/components/NoticeIcon/NoticeList.tsx delete mode 100644 src/components/NoticeIcon/index.less delete mode 100644 src/components/NoticeIcon/index.tsx delete mode 100644 src/components/RightContent/index.less delete mode 100644 src/components/index.md delete mode 100644 src/e2e/baseLayout.e2e.spec.ts create mode 100644 src/pages/User/Login/__snapshots__/login.test.tsx.snap delete mode 100644 src/pages/User/Login/index.less create mode 100644 src/pages/User/Login/login.test.tsx delete mode 100644 tests/run-tests.js delete mode 100644 tests/setupTests.js create mode 100644 tests/setupTests.jsx create mode 100644 types/cache/cache.json create mode 100644 types/cache/login.cache.json create mode 100644 types/cache/mock/login.mock.cache.js create mode 100644 types/cache/mock/mock.cache.js create mode 100644 types/index.d.ts diff --git a/.eslintrc.js b/.eslintrc.js index b882c20e..3ac39ef6 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,7 +1,6 @@ module.exports = { - extends: [require.resolve('@umijs/fabric/dist/eslint')], + extends: [require.resolve('@umijs/lint/dist/config/eslint')], globals: { - ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION: true, page: true, REACT_APP_ENV: true, }, diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 14883fb7..d6f5693b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,6 @@ jobs: - run: yarn run lint - run: yarn run tsc - run: yarn run build - - run: yarn run test:e2e env: CI: true PROGRESS: none diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml new file mode 100644 index 00000000..d1457535 --- /dev/null +++ b/.github/workflows/coverage.yml @@ -0,0 +1,27 @@ +name: coverage CI + +on: [push, pull_request] + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + - name: Use Node.js 16.x + uses: actions/setup-node@v1 + with: + node-version: 16.x + - run: echo ${{github.ref}} + - run: curl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm@7 + - run: pnpm config set store-dir ~/.pnpm-store + - run: pnpm install --strict-peer-dependencies=false + - run: yarn run test:coverage + env: + CI: true + PROGRESS: none + NODE_ENV: test + NODE_OPTIONS: --max_old_space_size=4096 + - run: bash <(curl -s https://codecov.io/bash) diff --git a/.github/workflows/pnpm.yml b/.github/workflows/pnpm.yml index c0d031fc..63bb2e45 100644 --- a/.github/workflows/pnpm.yml +++ b/.github/workflows/pnpm.yml @@ -10,7 +10,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - node_version: [16.x, 14.x] + node_version: [16.x] os: [ubuntu-latest, windows-latest, macOS-latest] steps: - uses: actions/checkout@v1 @@ -25,7 +25,7 @@ jobs: - run: pnpm run lint - run: pnpm run tsc - run: pnpm run build - - run: pnpm run test:e2e + - run: pnpm run test env: CI: true PROGRESS: none diff --git a/.gitignore b/.gitignore index 36ce6987..0fb36707 100644 --- a/.gitignore +++ b/.gitignore @@ -18,7 +18,6 @@ yarn-error.log .idea yarn.lock package-lock.json -pnpm-lock.yaml *bak .vscode diff --git a/.prettierrc.js b/.prettierrc.js index 7b597d78..3447a1af 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -1,5 +1,21 @@ -const fabric = require('@umijs/fabric'); - module.exports = { - ...fabric.prettier, + singleQuote: true, + trailingComma: 'all', + printWidth: 100, + proseWrap: 'never', + endOfLine: 'lf', + overrides: [ + { + files: '.prettierrc', + options: { + parser: 'json', + }, + }, + { + files: 'document.ejs', + options: { + parser: 'html', + }, + }, + ], }; diff --git a/config/config.ts b/config/config.ts index 4a4067c5..54c7d6d7 100644 --- a/config/config.ts +++ b/config/config.ts @@ -5,7 +5,7 @@ import defaultSettings from './defaultSettings'; import proxy from './proxy'; import routes from './routes'; -const { REACT_APP_ENV } = process.env; +const { REACT_APP_ENV = 'dev' } = process.env; export default defineConfig({ /** @@ -54,7 +54,7 @@ export default defineConfig({ * @doc 代理介绍 https://umijs.org/docs/guides/proxy * @doc 代理配置 https://umijs.org/docs/api/config#proxy */ - proxy: proxy[REACT_APP_ENV || 'dev'], + proxy: proxy[REACT_APP_ENV as keyof typeof proxy], /** * @name 快速热更新配置 * @description 一个不错的热更新组件,更新时可以保留 state @@ -131,6 +131,7 @@ export default defineConfig({ }, ], mfsu: { - exclude :['@playwright/test'] + strategy: 'normal', }, + requestRecord: {}, }); diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 00000000..1de2a1af --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,23 @@ +import { configUmiAlias, createConfig } from '@umijs/max/test'; + +export default async () => { + const config = await configUmiAlias({ + ...createConfig({ + target: 'browser', + }), + }); + + console.log(); + return { + ...config, + testEnvironmentOptions: { + ...(config?.testEnvironmentOptions || {}), + url: 'http://localhost:8000', + }, + setupFiles: [...(config.setupFiles || []), './tests/setupTests.jsx'], + globals: { + ...config.globals, + localStorage: null, + }, + }; +}; diff --git a/mock/listTableList.ts b/mock/listTableList.ts index 08ed86de..35ec3cec 100644 --- a/mock/listTableList.ts +++ b/mock/listTableList.ts @@ -52,16 +52,18 @@ function getRule(req: Request, res: Response, u: string) { const sorter = JSON.parse(params.sorter); dataSource = dataSource.sort((prev, next) => { let sortNumber = 0; - Object.keys(sorter).forEach((key) => { + (Object.keys(sorter) as Array).forEach((key) => { + let nextSort = next?.[key] as number; + let preSort = prev?.[key] as number; if (sorter[key] === 'descend') { - if (prev[key] - next[key] > 0) { + if (preSort - nextSort > 0) { sortNumber += -1; } else { sortNumber += 1; } return; } - if (prev[key] - next[key] > 0) { + if (preSort - nextSort > 0) { sortNumber += 1; } else { sortNumber += -1; @@ -76,7 +78,7 @@ function getRule(req: Request, res: Response, u: string) { }; if (Object.keys(filter).length > 0) { dataSource = dataSource.filter((item) => { - return Object.keys(filter).some((key) => { + return (Object.keys(filter) as Array).some((key) => { if (!filter[key]) { return true; } diff --git a/mock/notices.ts b/mock/notices.ts index 61858bdf..616c9218 100644 --- a/mock/notices.ts +++ b/mock/notices.ts @@ -5,21 +5,24 @@ const getNotices = (req: Request, res: Response) => { data: [ { id: '000000001', - avatar: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/MSbDR4FR2MUAAAAAAAAAAAAAFl94AQBr', + avatar: + 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/MSbDR4FR2MUAAAAAAAAAAAAAFl94AQBr', title: '你收到了 14 份新周报', datetime: '2017-08-09', type: 'notification', }, { id: '000000002', - avatar: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/hX-PTavYIq4AAAAAAAAAAAAAFl94AQBr', + avatar: + 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/hX-PTavYIq4AAAAAAAAAAAAAFl94AQBr', title: '你推荐的 曲妮妮 已通过第三轮面试', datetime: '2017-08-08', type: 'notification', }, { id: '000000003', - avatar: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/jHX5R5l3QjQAAAAAAAAAAAAAFl94AQBr', + avatar: + 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/jHX5R5l3QjQAAAAAAAAAAAAAFl94AQBr', title: '这种模板可以区分多种通知类型', datetime: '2017-08-07', read: true, @@ -27,21 +30,24 @@ const getNotices = (req: Request, res: Response) => { }, { id: '000000004', - avatar: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/Wr4mQqx6jfwAAAAAAAAAAAAAFl94AQBr', + avatar: + 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/Wr4mQqx6jfwAAAAAAAAAAAAAFl94AQBr', title: '左侧图标用于区分不同的类型', datetime: '2017-08-07', type: 'notification', }, { id: '000000005', - avatar: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/Mzj_TbcWUj4AAAAAAAAAAAAAFl94AQBr', + avatar: + 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/Mzj_TbcWUj4AAAAAAAAAAAAAFl94AQBr', title: '内容不要超过两行字,超出时自动截断', datetime: '2017-08-07', type: 'notification', }, { id: '000000006', - avatar: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/eXLzRbPqQE4AAAAAAAAAAAAAFl94AQBr', + avatar: + 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/eXLzRbPqQE4AAAAAAAAAAAAAFl94AQBr', title: '曲丽丽 评论了你', description: '描述信息描述信息描述信息', datetime: '2017-08-07', @@ -50,7 +56,8 @@ const getNotices = (req: Request, res: Response) => { }, { id: '000000007', - avatar: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/w5mRQY2AmEEAAAAAAAAAAAAAFl94AQBr', + avatar: + 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/w5mRQY2AmEEAAAAAAAAAAAAAFl94AQBr', title: '朱偏右 回复了你', description: '这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像', datetime: '2017-08-07', @@ -59,7 +66,8 @@ const getNotices = (req: Request, res: Response) => { }, { id: '000000008', - avatar: 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/wPadR5M9918AAAAAAAAAAAAAFl94AQBr', + avatar: + 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/wPadR5M9918AAAAAAAAAAAAAFl94AQBr', title: '标题', description: '这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像', datetime: '2017-08-07', diff --git a/mock/requestRecord.mock.js b/mock/requestRecord.mock.js new file mode 100644 index 00000000..6c59e198 --- /dev/null +++ b/mock/requestRecord.mock.js @@ -0,0 +1,324 @@ +module.exports = { + 'GET /api/currentUser': { + data: { + name: 'Serati Ma', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png', + userid: '00000001', + email: 'antdesign@alipay.com', + signature: '海纳百川,有容乃大', + title: '交互专家', + group: '蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED', + tags: [ + { key: '0', label: '很有想法的' }, + { key: '1', label: '专注设计' }, + { key: '2', label: '辣~' }, + { key: '3', label: '大长腿' }, + { key: '4', label: '川妹子' }, + { key: '5', label: '海纳百川' }, + ], + notifyCount: 12, + unreadCount: 11, + country: 'China', + geographic: { + province: { label: '浙江省', key: '330000' }, + city: { label: '杭州市', key: '330100' }, + }, + address: '西湖区工专路 77 号', + phone: '0752-268888888', + }, + }, + 'GET /api/rule': { + data: [ + { + key: 99, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 99', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 503, + status: '0', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 81, + }, + { + key: 98, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 98', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 164, + status: '0', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 12, + }, + { + key: 97, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 97', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 174, + status: '1', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 81, + }, + { + key: 96, + disabled: true, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 96', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 914, + status: '0', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 7, + }, + { + key: 95, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 95', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 698, + status: '2', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 82, + }, + { + key: 94, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 94', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 488, + status: '1', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 14, + }, + { + key: 93, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 93', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 580, + status: '2', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 77, + }, + { + key: 92, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 92', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 244, + status: '3', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 58, + }, + { + key: 91, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 91', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 959, + status: '0', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 66, + }, + { + key: 90, + disabled: true, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 90', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 958, + status: '0', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 72, + }, + { + key: 89, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 89', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 301, + status: '2', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 2, + }, + { + key: 88, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 88', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 277, + status: '1', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 12, + }, + { + key: 87, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 87', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 810, + status: '1', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 82, + }, + { + key: 86, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 86', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 780, + status: '3', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 22, + }, + { + key: 85, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 85', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 705, + status: '3', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 12, + }, + { + key: 84, + disabled: true, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 84', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 203, + status: '0', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 79, + }, + { + key: 83, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 83', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 491, + status: '2', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 59, + }, + { + key: 82, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 82', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 73, + status: '0', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 100, + }, + { + key: 81, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 81', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 406, + status: '3', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 61, + }, + { + key: 80, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 80', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 112, + status: '2', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 20, + }, + ], + total: 100, + success: true, + pageSize: 20, + current: 1, + }, + 'POST /api/login/outLogin': { data: {}, success: true }, + 'POST /api/login/account': { + status: 'ok', + type: 'account', + currentAuthority: 'admin', + }, +}; diff --git a/package.json b/package.json index 1e4abea3..2bf84187 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ant-design-pro", - "version": "6.0.0-beta.1", + "version": "6.0.0", "private": true, "description": "An out-of-box UI solution for enterprise applications", "scripts": { @@ -11,24 +11,28 @@ "gh-pages": "gh-pages -d dist", "i18n-remove": "pro i18n-remove --locale=zh-CN --write", "postinstall": "max setup", + "jest": "jest", "lint": "npm run lint:js && npm run lint:prettier && npm run tsc", "lint-staged": "lint-staged", "lint-staged:js": "eslint --ext .js,.jsx,.ts,.tsx ", "lint:fix": "eslint --fix --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src ", "lint:js": "eslint --cache --ext .js,.jsx,.ts,.tsx --format=pretty ./src", - "lint:prettier": "prettier -c --write \"src/**/*\" --end-of-line auto", + "lint:prettier": "prettier -c --write \"**/**.{js,jsx,tsx,ts,less,md,json}\" --end-of-line auto", "openapi": "max openapi", - "playwright": "playwright install && playwright test", "prepare": "husky install", - "prettier": "prettier -c --write \"src/**/*\"", + "prettier": "prettier -c --write \"**/**.{js,jsx,tsx,ts,less,md,json}\"", + "preview": "npm run build && max preview --port 8000", "serve": "umi-serve", "start": "cross-env UMI_ENV=dev max dev", "start:dev": "cross-env REACT_APP_ENV=dev MOCK=none UMI_ENV=dev max dev", "start:no-mock": "cross-env MOCK=none UMI_ENV=dev max dev", "start:pre": "cross-env REACT_APP_ENV=pre UMI_ENV=dev max dev", "start:test": "cross-env REACT_APP_ENV=test MOCK=none UMI_ENV=dev max dev", - "test:e2e": "node ./tests/run-tests.js", - "tsc": "tsc --noEmit" + "test": "jest", + "test:coverage": "npm run jest -- --coverage", + "test:update": "npm run jest -- -u", + "tsc": "tsc --noEmit", + "record": "cross-env NODE_ENV=development REACT_APP_ENV=test max record --scene=login" }, "lint-staged": { "**/*.{js,jsx,ts,tsx}": "npm run lint-staged:js", @@ -43,46 +47,48 @@ ], "dependencies": { "@ant-design/icons": "^4.7.0", - "@ant-design/pro-components": "^2.3.13", + "@ant-design/pro-components": "^2.3.37", + "@ant-design/use-emotion-css": "1.0.4", "@umijs/route-utils": "^2.1.3", - "antd": "^4.23.3", + "antd": "^5.0.0", "classnames": "^2.3.2", "lodash": "^4.17.21", "moment": "^2.29.4", "omit.js": "^2.0.2", "rc-menu": "^9.6.4", "rc-util": "^5.24.4", - "react": "^17.0.0", + "react": "^18.0.0", "react-dev-inspector": "^1.8.1", - "react-dom": "^17.0.0", + "react-dom": "^18.0.0", "react-helmet-async": "^1.3.0" }, "devDependencies": { "@ant-design/pro-cli": "^2.1.0", - "@playwright/test": "^1.26.1", + "@testing-library/react": "^13.4.0", "@types/classnames": "^2.3.1", "@types/express": "^4.17.14", "@types/history": "^4.7.11", + "@types/jest": "^29.2.1", "@types/lodash": "^4.14.186", "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", "@types/react-helmet": "^6.1.5", - "@umijs/fabric": "^2.11.1", - "@umijs/max": "^4.0.24", - "@umijs/openapi": "^1.7.0", + "@umijs/lint": "^4.0.34", + "@umijs/max": "^4.0.33", "cross-env": "^7.0.3", - "cross-port-killer": "^1.4.0", - "detect-installer": "^1.0.2", - "eslint": "^7.32.0", + "eslint": "^8.0.0", + "express": "^4.18.2", "gh-pages": "^3.2.0", "husky": "^7.0.4", + "jest": "^29.2.2", + "jest-environment-jsdom": "^29.2.2", "lint-staged": "^10.0.0", "mockjs": "^1.1.0", "prettier": "^2.7.1", "swagger-ui-dist": "^4.14.2", + "ts-node": "^10.9.1", "typescript": "^4.8.4", - "umi-presets-pro": "^1.0.5", - "umi-serve": "^1.9.11" + "umi-presets-pro": "^2.0.0" }, "engines": { "node": ">=12.0.0" diff --git a/playwright.config.ts b/playwright.config.ts deleted file mode 100644 index ec1b31db..00000000 --- a/playwright.config.ts +++ /dev/null @@ -1,22 +0,0 @@ -// playwright.config.ts -import type { PlaywrightTestConfig } from '@playwright/test'; -import { devices } from '@playwright/test'; - -const config: PlaywrightTestConfig = { - forbidOnly: !!process.env.CI, - retries: process.env.CI ? 2 : 0, - use: { - trace: 'on-first-retry', - }, - projects: [ - { - name: 'chromium', - use: { ...devices['Desktop Chrome'] }, - }, - { - name: 'firefox', - use: { ...devices['Desktop Firefox'] }, - }, - ], -}; -export default config; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..c7c567f0 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,16237 @@ +lockfileVersion: 5.4 + +specifiers: + '@ant-design/icons': ^4.7.0 + '@ant-design/pro-cli': ^2.1.0 + '@ant-design/pro-components': ^2.3.37 + '@ant-design/use-emotion-css': 1.0.4 + '@testing-library/react': ^13.4.0 + '@types/classnames': ^2.3.1 + '@types/express': ^4.17.14 + '@types/history': ^4.7.11 + '@types/jest': ^29.2.1 + '@types/lodash': ^4.14.186 + '@types/react': ^17.0.0 + '@types/react-dom': ^17.0.0 + '@types/react-helmet': ^6.1.5 + '@umijs/lint': ^4.0.34 + '@umijs/max': ^4.0.33 + '@umijs/route-utils': ^2.1.3 + antd: ^5.0.0 + classnames: ^2.3.2 + cross-env: ^7.0.3 + eslint: ^8.0.0 + express: ^4.18.2 + gh-pages: ^3.2.0 + husky: ^7.0.4 + jest: ^29.2.2 + jest-environment-jsdom: ^29.2.2 + lint-staged: ^10.0.0 + lodash: ^4.17.21 + mockjs: ^1.1.0 + moment: ^2.29.4 + omit.js: ^2.0.2 + prettier: ^2.7.1 + rc-menu: ^9.6.4 + rc-util: ^5.24.4 + react: ^18.0.0 + react-dev-inspector: ^1.8.1 + react-dom: ^18.0.0 + react-helmet-async: ^1.3.0 + swagger-ui-dist: ^4.14.2 + ts-node: ^10.9.1 + typescript: ^4.8.4 + umi-presets-pro: ^2.0.0 + +dependencies: + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-components': 2.3.44_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/use-emotion-css': 1.0.4_oyfmaw7obiocvtyvu3c64vlxvi + '@umijs/route-utils': 2.2.2 + antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + classnames: 2.3.2 + lodash: 4.17.21 + moment: 2.29.4 + omit.js: 2.0.2 + rc-menu: 9.8.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dev-inspector: 1.8.3_tn6ozhzi5twwqsvqh5iimryhr4 + react-dom: 18.2.0_react@18.2.0 + react-helmet-async: 1.3.0_biqbaboplfbrettd7655fr4n2y + +devDependencies: + '@ant-design/pro-cli': 2.1.5 + '@testing-library/react': 13.4.0_biqbaboplfbrettd7655fr4n2y + '@types/classnames': 2.3.1 + '@types/express': 4.17.14 + '@types/history': 4.7.11 + '@types/jest': 29.2.4 + '@types/lodash': 4.14.191 + '@types/react': 17.0.52 + '@types/react-dom': 17.0.18 + '@types/react-helmet': 6.1.6 + '@umijs/lint': 4.0.35_jig7mdlcju4lt57i33g5qicbgy + '@umijs/max': 4.0.35_6f5xgdrvtycvcwlwz2s4cplhka + cross-env: 7.0.3 + eslint: 8.29.0 + express: 4.18.2 + gh-pages: 3.2.3 + husky: 7.0.4 + jest: 29.3.1_ts-node@10.9.1 + jest-environment-jsdom: 29.3.1 + lint-staged: 10.5.4 + mockjs: 1.1.0 + prettier: 2.8.1 + swagger-ui-dist: 4.15.5 + ts-node: 10.9.1_typescript@4.9.4 + typescript: 4.9.4 + umi-presets-pro: 2.0.0_gz5lvdtqfbr75jwfu5jagggsw4 + +packages: + + /@ahooksjs/use-request/2.8.15_react@18.2.0: + resolution: {integrity: sha512-xhVaM4fyIiAMdVFuuU5i3CFUdFa/IblF+fvITVMFaUEO3w/V5tVCAF6WIA3T03n1/RPuzRkA7Ao1PFtSGtGelw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + dependencies: + lodash.debounce: 4.0.8 + lodash.throttle: 4.1.1 + react: 18.2.0 + dev: true + + /@alita/babel-transform-jsx-class/0.0.2: + resolution: {integrity: sha512-TW4KukvBsmMcebUWfquhFQ36Uo+wFrRB4NiimXhtQ+QXrYBmHoVm5GgVojQ3AJKIAjTVicYsz4lEo/MPN+ZgNw==} + dev: true + + /@alita/inspx/0.0.2_react@18.2.0: + resolution: {integrity: sha512-NylAZjHY1jIyO5a58WaPSzZbR39idg8tGyUl4YLBiSmU0lvkl/K9C77TexPQMUHhzauelmmhBht2FRoA77U0tQ==} + engines: {node: '>=10'} + peerDependencies: + react: '>=16' + dependencies: + '@radix-ui/popper': 0.0.10 + react: 18.2.0 + dev: true + + /@alita/plugins/3.2.6_gz5lvdtqfbr75jwfu5jagggsw4: + resolution: {integrity: sha512-XRhY2x07oVZ4s8PRIvVrcf7XXP7S2rfv4CvFd37oV2lOSM7mFvgagw1LGHdY2peBnT63r8yVfFPoRLmrZFjCjg==} + dependencies: + '@alita/babel-transform-jsx-class': 0.0.2 + '@alita/inspx': 0.0.2_react@18.2.0 + '@alita/request': 3.1.0 + '@alita/types': 3.1.0 + '@umijs/bundler-utils': 4.0.34 + '@umijs/plugins': 4.0.34_gz5lvdtqfbr75jwfu5jagggsw4 + '@umijs/utils': 4.0.34 + ahooks: 3.7.2_react@18.2.0 + antd-mobile-alita: 2.3.4_biqbaboplfbrettd7655fr4n2y + antd-mobile-icons: 0.2.2 + babel-plugin-import: 1.13.5 + babel-runtime-jsx-plus: 0.1.5 + classnames: 2.3.2 + dva-core: 2.0.4_redux@4.2.0 + dva-immer: 1.0.0 + dva-loading: 3.0.22_dva-core@2.0.4 + history: 5.3.0 + react-redux: 7.2.9_biqbaboplfbrettd7655fr4n2y + react-router-dom: 6.4.5_biqbaboplfbrettd7655fr4n2y + redux: 4.2.0 + semver: 7.3.5 + transitivePeerDependencies: + - '@babel/helper-module-imports' + - '@babel/types' + - '@types/lodash.merge' + - '@types/react' + - '@types/react-dom' + - antd + - aslemammad-vite-plugin-macro + - babel-plugin-macros + - debug + - dva + - rc-field-form + - react + - react-dom + - react-native + - supports-color + - vite + dev: true + + /@alita/request/3.1.0: + resolution: {integrity: sha512-KPJyf3UanGSI3UQzBNXNXBUdNKBOG2V3In4GwdhGQb7eSuOGTsIMPochbGEQSA3aGUDvxqaNVbcxKVBl4aGdhw==} + dependencies: + umi-request: 1.4.0 + dev: true + + /@alita/types/3.1.0: + resolution: {integrity: sha512-E9sUHMhFSlZsmj6ZQiDw6LxqtEdH0umWjOThiWY9ApH5YGA+yhR0jejRXCcc2j6nIPl+WfF5lHuFC9QIFMjZRg==} + dev: true + + /@ampproject/remapping/2.2.0: + resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.1.1 + '@jridgewell/trace-mapping': 0.3.17 + + /@ant-design/antd-theme-variable/1.0.0: + resolution: {integrity: sha512-0vr5GCwM7xlAl6NxG1lPbABO+SYioNJL3HVy2FA8wTlsIMoZvQwcwsxTw6eLQCiN9V2UQ8kBtfz8DW8utVVE5w==} + dev: true + + /@ant-design/colors/6.0.0: + resolution: {integrity: sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==} + dependencies: + '@ctrl/tinycolor': 3.5.0 + + /@ant-design/cssinjs/1.1.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-GtgALFUwwkOAwc8JundzcdLDckyrc+tgxpx4RGZQTDNOuh5VnngybpRfwvug8znt5/Zy9uNkzrSUPO05kBivcg==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.20.6 + '@emotion/hash': 0.8.0 + '@emotion/unitless': 0.7.5 + classnames: 2.3.2 + csstype: 3.1.1 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + stylis: 4.1.3 + + /@ant-design/icons-svg/4.2.1: + resolution: {integrity: sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw==} + + /@ant-design/icons/4.8.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-T89P2jG2vM7OJ0IfGx2+9FC5sQjtTzRSz+mCHTXkFn/ELZc2YpfStmYHmqzq2Jx55J0F7+O6i5/ZKFSVNWCKNg==} + engines: {node: '>=8'} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@ant-design/colors': 6.0.0 + '@ant-design/icons-svg': 4.2.1 + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /@ant-design/pro-card/2.1.4_64eqgvq3haz2hl2tk2jtpjblg4: + resolution: {integrity: sha512-AOyfT1aB+1alD4P3phy+5RM4vc3QGYy2g2Lq4BfM76LnNjp33ejTLA6E09yRI/DMw122mxgAL01cEJv6tNGWxw==} + peerDependencies: + antd: '>=4.23.0' + react: '>=16.9.0' + dependencies: + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-provider': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-utils': 2.4.4_64eqgvq3haz2hl2tk2jtpjblg4 + '@babel/runtime': 7.20.6 + antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + classnames: 2.3.2 + omit.js: 2.0.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + transitivePeerDependencies: + - react-dom + dev: true + + /@ant-design/pro-card/2.1.4_oyfmaw7obiocvtyvu3c64vlxvi: + resolution: {integrity: sha512-AOyfT1aB+1alD4P3phy+5RM4vc3QGYy2g2Lq4BfM76LnNjp33ejTLA6E09yRI/DMw122mxgAL01cEJv6tNGWxw==} + peerDependencies: + antd: '>=4.23.0' + react: '>=16.9.0' + dependencies: + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-provider': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-utils': 2.4.4_oyfmaw7obiocvtyvu3c64vlxvi + '@babel/runtime': 7.20.6 + antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + classnames: 2.3.2 + omit.js: 2.0.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + transitivePeerDependencies: + - react-dom + + /@ant-design/pro-cli/2.1.5: + resolution: {integrity: sha512-nFdVRlKRFh6UcjKmkEnpImCz3mOCMz1u6lo9IIVo2lwlbNInc5EZxXfJJm4tAXUSrOfsiIl/Iwc2bsQ5xJBLeA==} + hasBin: true + dependencies: + '@babel/core': 7.20.5 + '@babel/generator': 7.20.5 + '@babel/parser': 7.20.5 + '@babel/traverse': 7.20.5 + '@babel/types': 7.20.5 + '@umijs/fabric': 2.14.0 + babel-types: 6.26.0 + blink-diff: 1.0.13 + carlo: 0.9.46 + chalk: 4.1.2 + cross-port-killer: 1.4.0 + eslint: 7.32.0 + execa: 5.1.1 + getnpmregistry: 1.0.1 + glob: 7.2.3 + import-fresh: 3.3.0 + intl-messageformat: 9.13.0 + lodash.groupby: 4.6.0 + node-fetch: 2.6.7 + node-import-ts: 1.0.6 + ora: 5.4.1 + pngjs-image: 0.11.7 + prettier: 2.8.1 + rimraf: 3.0.2 + semver: 7.3.8 + typescript: 4.9.4 + umi-utils: 1.7.3 + yargs-parser: 20.2.9 + transitivePeerDependencies: + - bufferutil + - encoding + - postcss-jsx + - postcss-markdown + - supports-color + - utf-8-validate + dev: true + + /@ant-design/pro-components/2.3.44_64eqgvq3haz2hl2tk2jtpjblg4: + resolution: {integrity: sha512-dqlvlmuZ0KE5Nrw+1sHsMQJiPW0smjfEJGBF08aawsiBdLOMrkx1kmtcci5922oz5B5DBRyIwTI2GYnbZO7jNQ==} + peerDependencies: + antd: '>=4.23.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/pro-card': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-descriptions': 2.0.37_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-field': 2.1.28_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-form': 2.4.5_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-layout': 7.3.7_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-list': 2.0.38_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-provider': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-skeleton': 2.0.7_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-table': 3.2.5_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-utils': 2.4.4_64eqgvq3haz2hl2tk2jtpjblg4 + '@babel/runtime': 7.20.6 + antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + transitivePeerDependencies: + - '@types/lodash.merge' + - rc-field-form + dev: true + + /@ant-design/pro-components/2.3.44_oyfmaw7obiocvtyvu3c64vlxvi: + resolution: {integrity: sha512-dqlvlmuZ0KE5Nrw+1sHsMQJiPW0smjfEJGBF08aawsiBdLOMrkx1kmtcci5922oz5B5DBRyIwTI2GYnbZO7jNQ==} + peerDependencies: + antd: '>=4.23.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/pro-card': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-descriptions': 2.0.37_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-field': 2.1.28_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-form': 2.4.5_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-layout': 7.3.7_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-list': 2.0.38_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-provider': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-skeleton': 2.0.7_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-table': 3.2.5_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-utils': 2.4.4_oyfmaw7obiocvtyvu3c64vlxvi + '@babel/runtime': 7.20.6 + antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + transitivePeerDependencies: + - '@types/lodash.merge' + - rc-field-form + + /@ant-design/pro-descriptions/2.0.37_64eqgvq3haz2hl2tk2jtpjblg4: + resolution: {integrity: sha512-U5AVUR8vQU0IWECmQ5wTQZB+qKte+ojNNz5J8aA/qGGQ6b0deNXA1+Mf3QUzoNWXZ1JGOnfc4UgTHZTAEl513g==} + peerDependencies: + antd: '>=4.23.0' + react: '>=16.9.0' + dependencies: + '@ant-design/pro-field': 2.1.28_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-form': 2.4.5_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-skeleton': 2.0.7_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-utils': 2.4.4_64eqgvq3haz2hl2tk2jtpjblg4 + '@babel/runtime': 7.20.6 + antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + use-json-comparison: 1.0.6_react@18.2.0 + transitivePeerDependencies: + - '@types/lodash.merge' + - rc-field-form + - react-dom + dev: true + + /@ant-design/pro-descriptions/2.0.37_oyfmaw7obiocvtyvu3c64vlxvi: + resolution: {integrity: sha512-U5AVUR8vQU0IWECmQ5wTQZB+qKte+ojNNz5J8aA/qGGQ6b0deNXA1+Mf3QUzoNWXZ1JGOnfc4UgTHZTAEl513g==} + peerDependencies: + antd: '>=4.23.0' + react: '>=16.9.0' + dependencies: + '@ant-design/pro-field': 2.1.28_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-form': 2.4.5_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-skeleton': 2.0.7_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-utils': 2.4.4_oyfmaw7obiocvtyvu3c64vlxvi + '@babel/runtime': 7.20.6 + antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + use-json-comparison: 1.0.6_react@18.2.0 + transitivePeerDependencies: + - '@types/lodash.merge' + - rc-field-form + - react-dom + + /@ant-design/pro-field/2.1.28_64eqgvq3haz2hl2tk2jtpjblg4: + resolution: {integrity: sha512-8dGoBuDvEqAoEeMFb8j5FCwYDXO2wEoHtYuoKkuDnMZ/BDUWjuNChxthZPZk9TCedxVsT7PdPDK3t7dgrif85Q==} + peerDependencies: + antd: '>=4.23.0' + react: '>=16.9.0' + dependencies: + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-provider': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-utils': 2.4.4_64eqgvq3haz2hl2tk2jtpjblg4 + '@babel/runtime': 7.20.6 + '@chenshuai2144/sketch-color': 1.0.8_react@18.2.0 + antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + classnames: 2.3.2 + dayjs: 1.11.7 + lodash.tonumber: 4.0.3 + omit.js: 2.0.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + swr: 1.3.0_react@18.2.0 + transitivePeerDependencies: + - react-dom + dev: true + + /@ant-design/pro-field/2.1.28_oyfmaw7obiocvtyvu3c64vlxvi: + resolution: {integrity: sha512-8dGoBuDvEqAoEeMFb8j5FCwYDXO2wEoHtYuoKkuDnMZ/BDUWjuNChxthZPZk9TCedxVsT7PdPDK3t7dgrif85Q==} + peerDependencies: + antd: '>=4.23.0' + react: '>=16.9.0' + dependencies: + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-provider': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-utils': 2.4.4_oyfmaw7obiocvtyvu3c64vlxvi + '@babel/runtime': 7.20.6 + '@chenshuai2144/sketch-color': 1.0.8_react@18.2.0 + antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + classnames: 2.3.2 + dayjs: 1.11.7 + lodash.tonumber: 4.0.3 + omit.js: 2.0.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + swr: 1.3.0_react@18.2.0 + transitivePeerDependencies: + - react-dom + + /@ant-design/pro-form/2.4.5_64eqgvq3haz2hl2tk2jtpjblg4: + resolution: {integrity: sha512-4ILEj7Gcj096GVyjNFuq98dEe89hNUuxG0fhSg8Gk/sxjvudk6uolC+jmwve1F7Qmg3r4AILTIwD+sz/ZJXOMQ==} + peerDependencies: + '@types/lodash.merge': ^4.6.7 + antd: '>=4.23.0' + rc-field-form: ^1.22.0 + react: '>=16.9.0' + react-dom: '>=16.9.0' + peerDependenciesMeta: + '@types/lodash.merge': + optional: true + dependencies: + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-field': 2.1.28_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-provider': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-utils': 2.4.4_64eqgvq3haz2hl2tk2jtpjblg4 + '@babel/runtime': 7.20.6 + '@umijs/use-params': 1.0.9_react@18.2.0 + antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + classnames: 2.3.2 + lodash.merge: 4.6.2 + omit.js: 2.0.2 + rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + use-json-comparison: 1.0.6_react@18.2.0 + use-media-antd-query: 1.1.0_react@18.2.0 + dev: true + + /@ant-design/pro-form/2.4.5_oyfmaw7obiocvtyvu3c64vlxvi: + resolution: {integrity: sha512-4ILEj7Gcj096GVyjNFuq98dEe89hNUuxG0fhSg8Gk/sxjvudk6uolC+jmwve1F7Qmg3r4AILTIwD+sz/ZJXOMQ==} + peerDependencies: + '@types/lodash.merge': ^4.6.7 + antd: '>=4.23.0' + rc-field-form: ^1.22.0 + react: '>=16.9.0' + react-dom: '>=16.9.0' + peerDependenciesMeta: + '@types/lodash.merge': + optional: true + dependencies: + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-field': 2.1.28_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-provider': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-utils': 2.4.4_oyfmaw7obiocvtyvu3c64vlxvi + '@babel/runtime': 7.20.6 + '@umijs/use-params': 1.0.9_react@18.2.0 + antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + classnames: 2.3.2 + lodash.merge: 4.6.2 + omit.js: 2.0.2 + rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + use-json-comparison: 1.0.6_react@18.2.0 + use-media-antd-query: 1.1.0_react@18.2.0 + + /@ant-design/pro-layout/7.3.7_64eqgvq3haz2hl2tk2jtpjblg4: + resolution: {integrity: sha512-uNPAwbpoxKy+wj0UWh8OGRLYv4eaBI/eS+A4oGpeNdXpsZnuYeO0sfMwRhdhb9QdJTNqy8AaddpCbL8cf1e6Iw==} + peerDependencies: + antd: '>=4.23.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-provider': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-utils': 2.4.4_64eqgvq3haz2hl2tk2jtpjblg4 + '@babel/runtime': 7.20.6 + '@umijs/route-utils': 2.2.2 + '@umijs/use-params': 1.0.9_react@18.2.0 + antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + classnames: 2.3.2 + lodash.merge: 4.6.2 + omit.js: 2.0.2 + path-to-regexp: 2.4.0 + rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + swr: 1.3.0_react@18.2.0 + unstated-next: 1.1.0 + use-json-comparison: 1.0.6_react@18.2.0 + use-media-antd-query: 1.1.0_react@18.2.0 + warning: 4.0.3 + dev: true + + /@ant-design/pro-layout/7.3.7_oyfmaw7obiocvtyvu3c64vlxvi: + resolution: {integrity: sha512-uNPAwbpoxKy+wj0UWh8OGRLYv4eaBI/eS+A4oGpeNdXpsZnuYeO0sfMwRhdhb9QdJTNqy8AaddpCbL8cf1e6Iw==} + peerDependencies: + antd: '>=4.23.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-provider': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-utils': 2.4.4_oyfmaw7obiocvtyvu3c64vlxvi + '@babel/runtime': 7.20.6 + '@umijs/route-utils': 2.2.2 + '@umijs/use-params': 1.0.9_react@18.2.0 + antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + classnames: 2.3.2 + lodash.merge: 4.6.2 + omit.js: 2.0.2 + path-to-regexp: 2.4.0 + rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + swr: 1.3.0_react@18.2.0 + unstated-next: 1.1.0 + use-json-comparison: 1.0.6_react@18.2.0 + use-media-antd-query: 1.1.0_react@18.2.0 + warning: 4.0.3 + + /@ant-design/pro-list/2.0.38_64eqgvq3haz2hl2tk2jtpjblg4: + resolution: {integrity: sha512-/0mNG2E4nJSWuYDVXtmg/jPIJtUSYRniCkagmQPgxhhqaSO+fHOMKdeLnzDgSAmVuVWjAIQ464xqE1JBV9bl5A==} + peerDependencies: + antd: '>=4.23.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-card': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-field': 2.1.28_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-table': 3.2.5_64eqgvq3haz2hl2tk2jtpjblg4 + '@babel/runtime': 7.20.6 + antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + classnames: 2.3.2 + dayjs: 1.11.7 + rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-util: 4.21.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + unstated-next: 1.1.0 + use-media-antd-query: 1.1.0_react@18.2.0 + transitivePeerDependencies: + - '@types/lodash.merge' + - rc-field-form + dev: true + + /@ant-design/pro-list/2.0.38_oyfmaw7obiocvtyvu3c64vlxvi: + resolution: {integrity: sha512-/0mNG2E4nJSWuYDVXtmg/jPIJtUSYRniCkagmQPgxhhqaSO+fHOMKdeLnzDgSAmVuVWjAIQ464xqE1JBV9bl5A==} + peerDependencies: + antd: '>=4.23.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-card': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-field': 2.1.28_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-table': 3.2.5_oyfmaw7obiocvtyvu3c64vlxvi + '@babel/runtime': 7.20.6 + antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + classnames: 2.3.2 + dayjs: 1.11.7 + rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-util: 4.21.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + unstated-next: 1.1.0 + use-media-antd-query: 1.1.0_react@18.2.0 + transitivePeerDependencies: + - '@types/lodash.merge' + - rc-field-form + + /@ant-design/pro-provider/2.1.4_64eqgvq3haz2hl2tk2jtpjblg4: + resolution: {integrity: sha512-XjXiIDwxbH2G/jvjBWr5cQ2V5ZgLeP+D+Y8WLcfikTqG6wfoptsqxSkgrfYvioO6Va/wQOWLx36IXbo7rrk7bw==} + peerDependencies: + antd: '>=4.23.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/cssinjs': 1.1.1_biqbaboplfbrettd7655fr4n2y + '@babel/runtime': 7.20.6 + '@ctrl/tinycolor': 3.5.0 + antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + swr: 1.3.0_react@18.2.0 + dev: true + + /@ant-design/pro-provider/2.1.4_oyfmaw7obiocvtyvu3c64vlxvi: + resolution: {integrity: sha512-XjXiIDwxbH2G/jvjBWr5cQ2V5ZgLeP+D+Y8WLcfikTqG6wfoptsqxSkgrfYvioO6Va/wQOWLx36IXbo7rrk7bw==} + peerDependencies: + antd: '>=4.23.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/cssinjs': 1.1.1_biqbaboplfbrettd7655fr4n2y + '@babel/runtime': 7.20.6 + '@ctrl/tinycolor': 3.5.0 + antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + swr: 1.3.0_react@18.2.0 + + /@ant-design/pro-skeleton/2.0.7_64eqgvq3haz2hl2tk2jtpjblg4: + resolution: {integrity: sha512-7RoCUVgWDTGrWeNuFlscsxrrXc5jshYXk6gjkQKospR0hQ1AK/aWlkttAAaqDFZlvPxSyLu8w11TmquRuYcNcg==} + peerDependencies: + antd: '>=4.23.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + use-media-antd-query: 1.1.0_react@18.2.0 + dev: true + + /@ant-design/pro-skeleton/2.0.7_oyfmaw7obiocvtyvu3c64vlxvi: + resolution: {integrity: sha512-7RoCUVgWDTGrWeNuFlscsxrrXc5jshYXk6gjkQKospR0hQ1AK/aWlkttAAaqDFZlvPxSyLu8w11TmquRuYcNcg==} + peerDependencies: + antd: '>=4.23.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + use-media-antd-query: 1.1.0_react@18.2.0 + + /@ant-design/pro-table/3.2.5_64eqgvq3haz2hl2tk2jtpjblg4: + resolution: {integrity: sha512-uko+GIi4o9JlrZtanXX3TGOCseCPM9z8wNPC3G7ZPsnlOK5q7G+0hGJJmQ6ZZUFcfbDtbHQpVtNxiKfoQDEP3Q==} + peerDependencies: + antd: '>=4.23.0' + rc-field-form: ^1.22.0 + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-card': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-field': 2.1.28_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-form': 2.4.5_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-provider': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 + '@ant-design/pro-utils': 2.4.4_64eqgvq3haz2hl2tk2jtpjblg4 + '@babel/runtime': 7.20.6 + antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + classnames: 2.3.2 + dayjs: 1.11.7 + omit.js: 2.0.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-sortable-hoc: 2.0.0_biqbaboplfbrettd7655fr4n2y + unstated-next: 1.1.0 + use-json-comparison: 1.0.6_react@18.2.0 + use-media-antd-query: 1.1.0_react@18.2.0 + transitivePeerDependencies: + - '@types/lodash.merge' + dev: true + + /@ant-design/pro-table/3.2.5_oyfmaw7obiocvtyvu3c64vlxvi: + resolution: {integrity: sha512-uko+GIi4o9JlrZtanXX3TGOCseCPM9z8wNPC3G7ZPsnlOK5q7G+0hGJJmQ6ZZUFcfbDtbHQpVtNxiKfoQDEP3Q==} + peerDependencies: + antd: '>=4.23.0' + rc-field-form: ^1.22.0 + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-card': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-field': 2.1.28_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-form': 2.4.5_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-provider': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-utils': 2.4.4_oyfmaw7obiocvtyvu3c64vlxvi + '@babel/runtime': 7.20.6 + antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + classnames: 2.3.2 + dayjs: 1.11.7 + omit.js: 2.0.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-sortable-hoc: 2.0.0_biqbaboplfbrettd7655fr4n2y + unstated-next: 1.1.0 + use-json-comparison: 1.0.6_react@18.2.0 + use-media-antd-query: 1.1.0_react@18.2.0 + transitivePeerDependencies: + - '@types/lodash.merge' + + /@ant-design/pro-utils/2.4.4_64eqgvq3haz2hl2tk2jtpjblg4: + resolution: {integrity: sha512-VIX95ax2rfDIU5JURAhjcffzrSEbgie0sN6rKjsLvhTc9FcwEzSD2efCc5wyNisVA8VlX3XqRZ+ugEJs3blMFQ==} + peerDependencies: + antd: '>=4.23.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-provider': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 + '@babel/runtime': 7.20.6 + antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + classnames: 2.3.2 + dayjs: 1.11.7 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-sortable-hoc: 2.0.0_biqbaboplfbrettd7655fr4n2y + swr: 1.3.0_react@18.2.0 + dev: true + + /@ant-design/pro-utils/2.4.4_oyfmaw7obiocvtyvu3c64vlxvi: + resolution: {integrity: sha512-VIX95ax2rfDIU5JURAhjcffzrSEbgie0sN6rKjsLvhTc9FcwEzSD2efCc5wyNisVA8VlX3XqRZ+ugEJs3blMFQ==} + peerDependencies: + antd: '>=4.23.0' + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-provider': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi + '@babel/runtime': 7.20.6 + antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + classnames: 2.3.2 + dayjs: 1.11.7 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-sortable-hoc: 2.0.0_biqbaboplfbrettd7655fr4n2y + swr: 1.3.0_react@18.2.0 + + /@ant-design/react-slick/0.29.2_react@18.2.0: + resolution: {integrity: sha512-kgjtKmkGHa19FW21lHnAfyyH9AAoh35pBdcJ53rHmQ3O+cfFHGHnUbj/HFrRNJ5vIts09FKJVAD8RpaC+RaWfA==} + peerDependencies: + react: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + json2mq: 0.2.0 + lodash: 4.17.21 + react: 18.2.0 + resize-observer-polyfill: 1.5.1 + + /@ant-design/use-emotion-css/1.0.4_oyfmaw7obiocvtyvu3c64vlxvi: + resolution: {integrity: sha512-PekXeeHCpSNi6ziV62gy2Yy2MijssiVMaCJbbyOmPbeZJYQmB4FecJwlB+e2WuIbSHQdM3O9pyN4Cx3GJKxJkA==} + peerDependencies: + antd: '>=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@emotion/css': 11.10.5 + antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + transitivePeerDependencies: + - '@babel/core' + dev: false + + /@babel/cli/7.19.3_@babel+core@7.20.5: + resolution: {integrity: sha512-643/TybmaCAe101m2tSVHi9UKpETXP9c/Ff4mD2tAwkdP6esKIfaauZFc67vGEM6r9fekbEGid+sZhbEnSe3dg==} + engines: {node: '>=6.9.0'} + hasBin: true + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@jridgewell/trace-mapping': 0.3.17 + commander: 4.1.1 + convert-source-map: 1.9.0 + fs-readdir-recursive: 1.1.0 + glob: 7.2.3 + make-dir: 2.1.0 + slash: 2.0.0 + optionalDependencies: + '@nicolo-ribaudo/chokidar-2': 2.1.8-no-fsevents.3 + chokidar: 3.5.3 + dev: true + + /@babel/code-frame/7.12.11: + resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} + dependencies: + '@babel/highlight': 7.18.6 + dev: true + + /@babel/code-frame/7.18.6: + resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + + /@babel/compat-data/7.20.5: + resolution: {integrity: sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==} + engines: {node: '>=6.9.0'} + + /@babel/core/7.18.9: + resolution: {integrity: sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.0 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.20.5 + '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.18.9 + '@babel/helper-module-transforms': 7.20.2 + '@babel/helpers': 7.20.6 + '@babel/parser': 7.20.5 + '@babel/template': 7.18.10 + '@babel/traverse': 7.20.5 + '@babel/types': 7.20.5 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/core/7.20.5: + resolution: {integrity: sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.0 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.20.5 + '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 + '@babel/helper-module-transforms': 7.20.2 + '@babel/helpers': 7.20.6 + '@babel/parser': 7.20.5 + '@babel/template': 7.18.10 + '@babel/traverse': 7.20.5 + '@babel/types': 7.20.5 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + + /@babel/eslint-parser/7.18.9_bpusarfwcbgnjqmbezm4jkv5ie: + resolution: {integrity: sha512-KzSGpMBggz4fKbRbWLNyPVTuQr6cmCcBhOyXTw/fieOVaw5oYAwcAj4a7UKcDYCPxQq+CG1NCDZH9e2JTXquiQ==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': '>=7.11.0' + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/core': 7.18.9 + eslint: 8.15.0 + eslint-scope: 5.1.1 + eslint-visitor-keys: 2.1.0 + semver: 6.3.0 + dev: true + + /@babel/eslint-parser/7.18.9_hg4qcldqpmcuk4hxtccjaseevy: + resolution: {integrity: sha512-KzSGpMBggz4fKbRbWLNyPVTuQr6cmCcBhOyXTw/fieOVaw5oYAwcAj4a7UKcDYCPxQq+CG1NCDZH9e2JTXquiQ==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': '>=7.11.0' + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/core': 7.18.9 + eslint: 8.29.0 + eslint-scope: 5.1.1 + eslint-visitor-keys: 2.1.0 + semver: 6.3.0 + dev: true + + /@babel/eslint-parser/7.19.1_q7hszagzy73il6awuziitdhqxe: + resolution: {integrity: sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': '>=7.11.0' + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/core': 7.20.5 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 7.32.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.0 + dev: true + + /@babel/generator/7.20.5: + resolution: {integrity: sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.5 + '@jridgewell/gen-mapping': 0.3.2 + jsesc: 2.5.2 + + /@babel/helper-annotate-as-pure/7.18.6: + resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.5 + dev: true + + /@babel/helper-builder-binary-assignment-operator-visitor/7.18.9: + resolution: {integrity: sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-explode-assignable-expression': 7.18.6 + '@babel/types': 7.20.5 + dev: true + + /@babel/helper-compilation-targets/7.20.0_@babel+core@7.18.9: + resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.20.5 + '@babel/core': 7.18.9 + '@babel/helper-validator-option': 7.18.6 + browserslist: 4.21.4 + semver: 6.3.0 + dev: true + + /@babel/helper-compilation-targets/7.20.0_@babel+core@7.20.5: + resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.20.5 + '@babel/core': 7.20.5 + '@babel/helper-validator-option': 7.18.6 + browserslist: 4.21.4 + semver: 6.3.0 + + /@babel/helper-create-class-features-plugin/7.20.5_@babel+core@7.20.5: + resolution: {integrity: sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-member-expression-to-functions': 7.18.9 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-replace-supers': 7.19.1 + '@babel/helper-split-export-declaration': 7.18.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-create-regexp-features-plugin/7.20.5_@babel+core@7.20.5: + resolution: {integrity: sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-annotate-as-pure': 7.18.6 + regexpu-core: 5.2.2 + dev: true + + /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.20.5: + resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-environment-visitor/7.18.9: + resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} + engines: {node: '>=6.9.0'} + + /@babel/helper-explode-assignable-expression/7.18.6: + resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.5 + dev: true + + /@babel/helper-function-name/7.19.0: + resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.18.10 + '@babel/types': 7.20.5 + + /@babel/helper-hoist-variables/7.18.6: + resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.5 + + /@babel/helper-member-expression-to-functions/7.18.9: + resolution: {integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.5 + dev: true + + /@babel/helper-module-imports/7.18.6: + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.5 + + /@babel/helper-module-transforms/7.20.2: + resolution: {integrity: sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-simple-access': 7.20.2 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 + '@babel/template': 7.18.10 + '@babel/traverse': 7.20.5 + '@babel/types': 7.20.5 + transitivePeerDependencies: + - supports-color + + /@babel/helper-optimise-call-expression/7.18.6: + resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.5 + dev: true + + /@babel/helper-plugin-utils/7.20.2: + resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.20.5: + resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-wrap-function': 7.20.5 + '@babel/types': 7.20.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-replace-supers/7.19.1: + resolution: {integrity: sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-member-expression-to-functions': 7.18.9 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/traverse': 7.20.5 + '@babel/types': 7.20.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-simple-access/7.20.2: + resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.5 + + /@babel/helper-skip-transparent-expression-wrappers/7.20.0: + resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.5 + dev: true + + /@babel/helper-split-export-declaration/7.18.6: + resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.20.5 + + /@babel/helper-string-parser/7.19.4: + resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier/7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option/7.18.6: + resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} + engines: {node: '>=6.9.0'} + + /@babel/helper-wrap-function/7.20.5: + resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.19.0 + '@babel/template': 7.18.10 + '@babel/traverse': 7.20.5 + '@babel/types': 7.20.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helpers/7.20.6: + resolution: {integrity: sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.18.10 + '@babel/traverse': 7.20.5 + '@babel/types': 7.20.5 + transitivePeerDependencies: + - supports-color + + /@babel/highlight/7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + chalk: 2.4.2 + js-tokens: 4.0.0 + + /@babel/parser/7.20.5: + resolution: {integrity: sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.20.5 + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.20.5: + resolution: {integrity: sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.20.5 + dev: true + + /@babel/plugin-external-helpers/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-wNqc87qjLvsD1PIMQBzLn1bMuTlGzqLzM/1VGQ22Wm51cbCWS9k71ydp5iZS4hjwQNuTWSn/xbZkkusNENwtZg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-proposal-async-generator-functions/7.20.1_@babel+core@7.20.5: + resolution: {integrity: sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.5 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-create-class-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-create-class-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-decorators/7.20.5_@babel+core@7.20.5: + resolution: {integrity: sha512-Lac7PpRJXcC3s9cKsBfl+uc+DYXU5FD06BrTFunQO6QIQT+DwyzDPURAowI3bcvD1dZF/ank1Z5rstUJn3Hn4Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-create-class-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.19.1 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/plugin-syntax-decorators': 7.19.0_@babel+core@7.20.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.5 + dev: true + + /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.20.5: + resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.5 + dev: true + + /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.5 + dev: true + + /@babel/plugin-proposal-logical-assignment-operators/7.18.9_@babel+core@7.20.5: + resolution: {integrity: sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.5 + dev: true + + /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.5 + dev: true + + /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.5 + dev: true + + /@babel/plugin-proposal-object-rest-spread/7.20.2_@babel+core@7.20.5: + resolution: {integrity: sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.20.5 + '@babel/core': 7.20.5 + '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-transform-parameters': 7.20.5_@babel+core@7.20.5 + dev: true + + /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.5 + dev: true + + /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.20.5: + resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.5 + dev: true + + /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-create-class-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-private-property-in-object/7.20.5_@babel+core@7.20.5: + resolution: {integrity: sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} + engines: {node: '>=4'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-async-generators/7.8.4: + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.5: + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-bigint/7.8.3: + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.20.5: + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-class-properties/7.12.13: + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.5: + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.20.5: + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-decorators/7.19.0_@babel+core@7.20.5: + resolution: {integrity: sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.20.5: + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.20.5: + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.20.5: + resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-import-meta/7.10.4: + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.20.5: + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-json-strings/7.8.3: + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.5: + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-jsx/7.18.6: + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-plugin-utils': 7.20.2 + dev: false + + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators/7.10.4: + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.5: + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3: + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.5: + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-numeric-separator/7.10.4: + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.5: + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-object-rest-spread/7.8.3: + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.5: + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-optional-catch-binding/7.8.3: + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.5: + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-optional-chaining/7.8.3: + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.5: + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.20.5: + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-top-level-await/7.14.5: + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.5: + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.20.5: + resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-block-scoping/7.20.5_@babel+core@7.20.5: + resolution: {integrity: sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-classes/7.20.2_@babel+core@7.20.5: + resolution: {integrity: sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.19.1 + '@babel/helper-split-export-declaration': 7.18.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.20.5: + resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-destructuring/7.20.2_@babel+core@7.20.5: + resolution: {integrity: sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.20.5: + resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.20.5: + resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.20.5: + resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-literals/7.18.9_@babel+core@7.20.5: + resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-modules-amd/7.19.6_@babel+core@7.20.5: + resolution: {integrity: sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-module-transforms': 7.20.2 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-commonjs/7.18.6: + resolution: {integrity: sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-module-transforms': 7.20.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-simple-access': 7.20.2 + babel-plugin-dynamic-import-node: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-commonjs/7.19.6_@babel+core@7.20.5: + resolution: {integrity: sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-module-transforms': 7.20.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-simple-access': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-systemjs/7.19.6_@babel+core@7.20.5: + resolution: {integrity: sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-module-transforms': 7.20.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-identifier': 7.19.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-module-transforms': 7.20.2 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex/7.20.5_@babel+core@7.20.5: + resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.19.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-parameters/7.20.5_@babel+core@7.20.5: + resolution: {integrity: sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.20.5 + dev: true + + /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.20.5: + resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-react-jsx/7.19.0_@babel+core@7.20.5: + resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.5 + '@babel/types': 7.20.5 + dev: true + + /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-regenerator/7.20.5_@babel+core@7.20.5: + resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + regenerator-transform: 0.15.1 + dev: true + + /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-spread/7.19.0_@babel+core@7.20.5: + resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + dev: true + + /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.20.5: + resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.20.5: + resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-typescript/7.20.2_@babel+core@7.20.5: + resolution: {integrity: sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-create-class-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.20.5: + resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/preset-env/7.20.2_@babel+core@7.20.5: + resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.20.5 + '@babel/core': 7.20.5 + '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-option': 7.18.6 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9_@babel+core@7.20.5 + '@babel/plugin-proposal-async-generator-functions': 7.20.1_@babel+core@7.20.5 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.20.5 + '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-proposal-logical-assignment-operators': 7.18.9_@babel+core@7.20.5 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-proposal-object-rest-spread': 7.20.2_@babel+core@7.20.5 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.20.5 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-proposal-private-property-in-object': 7.20.5_@babel+core@7.20.5 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.5 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.5 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.20.5 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.5 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.5 + '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-transform-block-scoping': 7.20.5_@babel+core@7.20.5 + '@babel/plugin-transform-classes': 7.20.2_@babel+core@7.20.5 + '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.20.5 + '@babel/plugin-transform-destructuring': 7.20.2_@babel+core@7.20.5 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.20.5 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.20.5 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.20.5 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.20.5 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-transform-modules-amd': 7.19.6_@babel+core@7.20.5 + '@babel/plugin-transform-modules-commonjs': 7.19.6_@babel+core@7.20.5 + '@babel/plugin-transform-modules-systemjs': 7.19.6_@babel+core@7.20.5 + '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5_@babel+core@7.20.5 + '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-transform-parameters': 7.20.5_@babel+core@7.20.5 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-transform-regenerator': 7.20.5_@babel+core@7.20.5 + '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.20.5 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.20.5 + '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.20.5 + '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.20.5 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.20.5 + '@babel/preset-modules': 0.1.5_@babel+core@7.20.5 + '@babel/types': 7.20.5 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.20.5 + babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.20.5 + babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.20.5 + core-js-compat: 3.26.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-modules/0.1.5_@babel+core@7.20.5: + resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.5 + '@babel/types': 7.20.5 + esutils: 2.0.3 + dev: true + + /@babel/preset-react/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-option': 7.18.6 + '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.20.5 + '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.20.5 + dev: true + + /@babel/preset-typescript/7.18.6_@babel+core@7.20.5: + resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-option': 7.18.6 + '@babel/plugin-transform-typescript': 7.20.2_@babel+core@7.20.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/runtime/7.18.9: + resolution: {integrity: sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + dev: true + + /@babel/runtime/7.20.6: + resolution: {integrity: sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + + /@babel/template/7.18.10: + resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/parser': 7.20.5 + '@babel/types': 7.20.5 + + /@babel/traverse/7.20.5: + resolution: {integrity: sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.20.5 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.20.5 + '@babel/types': 7.20.5 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/types/7.20.5: + resolution: {integrity: sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + + /@bcoe/v8-coverage/0.2.3: + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + dev: true + + /@bloomberg/record-tuple-polyfill/0.0.4: + resolution: {integrity: sha512-h0OYmPR3A5Dfbetra/GzxBAzQk8sH7LhRkRUTdagX6nrtlUgJGYCTv4bBK33jsTQw9HDd8PE2x1Ma+iRKEDUsw==} + dev: true + + /@chenshuai2144/sketch-color/1.0.8_react@18.2.0: + resolution: {integrity: sha512-dPAzzWc+w7zyTAi71WXYZpiTYyIS80MxYyy2E/7jufhnJI1Z29wCPL35VvuJ/gs5zYpF2+w/B7BizWa2zKXpGw==} + peerDependencies: + react: '>=16.12.0' + dependencies: + react: 18.2.0 + reactcss: 1.2.3_react@18.2.0 + tinycolor2: 1.4.2 + + /@cspotcode/source-map-support/0.8.1: + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + dev: true + + /@csstools/postcss-color-function/1.1.1: + resolution: {integrity: sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-color-function/1.1.1_postcss@8.4.19: + resolution: {integrity: sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.19 + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-font-format-keywords/1.0.1: + resolution: {integrity: sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-font-format-keywords/1.0.1_postcss@8.4.19: + resolution: {integrity: sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-hwb-function/1.0.2: + resolution: {integrity: sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-hwb-function/1.0.2_postcss@8.4.19: + resolution: {integrity: sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-ic-unit/1.0.1: + resolution: {integrity: sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-ic-unit/1.0.1_postcss@8.4.19: + resolution: {integrity: sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.19 + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-is-pseudo-class/2.0.7: + resolution: {integrity: sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/selector-specificity': 2.0.2_laljekdltgzr3kfi7r4exvsr5a + postcss-selector-parser: 6.0.11 + dev: true + + /@csstools/postcss-is-pseudo-class/2.0.7_postcss@8.4.19: + resolution: {integrity: sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/selector-specificity': 2.0.2_tbwh2mpcdwdeb2slx6bobindua + postcss: 8.4.19 + postcss-selector-parser: 6.0.11 + dev: true + + /@csstools/postcss-normalize-display-values/1.0.1: + resolution: {integrity: sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-normalize-display-values/1.0.1_postcss@8.4.19: + resolution: {integrity: sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-oklab-function/1.1.1: + resolution: {integrity: sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-oklab-function/1.1.1_postcss@8.4.19: + resolution: {integrity: sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.19 + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-progressive-custom-properties/1.3.0: + resolution: {integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-progressive-custom-properties/1.3.0_postcss@8.4.19: + resolution: {integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-stepped-value-functions/1.0.1: + resolution: {integrity: sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-stepped-value-functions/1.0.1_postcss@8.4.19: + resolution: {integrity: sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-unset-value/1.0.2: + resolution: {integrity: sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dev: true + + /@csstools/postcss-unset-value/1.0.2_postcss@8.4.19: + resolution: {integrity: sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.19 + dev: true + + /@csstools/selector-specificity/2.0.2_laljekdltgzr3kfi7r4exvsr5a: + resolution: {integrity: sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + postcss-selector-parser: ^6.0.10 + dependencies: + postcss-selector-parser: 6.0.11 + dev: true + + /@csstools/selector-specificity/2.0.2_tbwh2mpcdwdeb2slx6bobindua: + resolution: {integrity: sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + postcss-selector-parser: ^6.0.10 + dependencies: + postcss: 8.4.19 + postcss-selector-parser: 6.0.11 + dev: true + + /@ctrl/tinycolor/3.5.0: + resolution: {integrity: sha512-tlJpwF40DEQcfR/QF+wNMVyGMaO9FQp6Z1Wahj4Gk3CJQYHwA2xVG7iKDFdW6zuxZY9XWOpGcfNCTsX4McOsOg==} + engines: {node: '>=10'} + + /@emotion/babel-plugin/11.10.5: + resolution: {integrity: sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-syntax-jsx': 7.18.6 + '@babel/runtime': 7.20.6 + '@emotion/hash': 0.9.0 + '@emotion/memoize': 0.8.0 + '@emotion/serialize': 1.1.1 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.1.3 + dev: false + + /@emotion/cache/11.10.5: + resolution: {integrity: sha512-dGYHWyzTdmK+f2+EnIGBpkz1lKc4Zbj2KHd4cX3Wi8/OWr5pKslNjc3yABKH4adRGCvSX4VDC0i04mrrq0aiRA==} + dependencies: + '@emotion/memoize': 0.8.0 + '@emotion/sheet': 1.2.1 + '@emotion/utils': 1.2.0 + '@emotion/weak-memoize': 0.3.0 + stylis: 4.1.3 + dev: false + + /@emotion/css/11.10.5: + resolution: {integrity: sha512-maJy0wG82hWsiwfJpc3WrYsyVwUbdu+sdIseKUB+/OLjB8zgc3tqkT6eO0Yt0AhIkJwGGnmMY/xmQwEAgQ4JHA==} + peerDependencies: + '@babel/core': ^7.0.0 + peerDependenciesMeta: + '@babel/core': + optional: true + dependencies: + '@emotion/babel-plugin': 11.10.5 + '@emotion/cache': 11.10.5 + '@emotion/serialize': 1.1.1 + '@emotion/sheet': 1.2.1 + '@emotion/utils': 1.2.0 + dev: false + + /@emotion/hash/0.8.0: + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + + /@emotion/hash/0.9.0: + resolution: {integrity: sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==} + dev: false + + /@emotion/memoize/0.8.0: + resolution: {integrity: sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==} + dev: false + + /@emotion/serialize/1.1.1: + resolution: {integrity: sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==} + dependencies: + '@emotion/hash': 0.9.0 + '@emotion/memoize': 0.8.0 + '@emotion/unitless': 0.8.0 + '@emotion/utils': 1.2.0 + csstype: 3.1.1 + dev: false + + /@emotion/sheet/1.2.1: + resolution: {integrity: sha512-zxRBwl93sHMsOj4zs+OslQKg/uhF38MB+OMKoCrVuS0nyTkqnau+BM3WGEoOptg9Oz45T/aIGs1qbVAsEFo3nA==} + dev: false + + /@emotion/unitless/0.7.5: + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + + /@emotion/unitless/0.8.0: + resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} + dev: false + + /@emotion/utils/1.2.0: + resolution: {integrity: sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==} + dev: false + + /@emotion/weak-memoize/0.3.0: + resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} + dev: false + + /@esbuild-kit/cjs-loader/2.4.1: + resolution: {integrity: sha512-lhc/XLith28QdW0HpHZvZKkorWgmCNT7sVelMHDj3HFdTfdqkwEKvT+aXVQtNAmCC39VJhunDkWhONWB7335mg==} + dependencies: + '@esbuild-kit/core-utils': 3.0.0 + get-tsconfig: 4.2.0 + dev: true + + /@esbuild-kit/core-utils/3.0.0: + resolution: {integrity: sha512-TXmwH9EFS3DC2sI2YJWJBgHGhlteK0Xyu1VabwetMULfm3oYhbrsWV5yaSr2NTWZIgDGVLHbRf0inxbjXqAcmQ==} + dependencies: + esbuild: 0.15.18 + source-map-support: 0.5.21 + dev: true + + /@esbuild-kit/esm-loader/2.5.4: + resolution: {integrity: sha512-afmtLf6uqxD5IgwCzomtqCYIgz/sjHzCWZFvfS5+FzeYxOURPUo4QcHtqJxbxWOMOogKriZanN/1bJQE/ZL93A==} + dependencies: + '@esbuild-kit/core-utils': 3.0.0 + get-tsconfig: 4.2.0 + dev: true + + /@esbuild/android-arm/0.15.14: + resolution: {integrity: sha512-+Rb20XXxRGisNu2WmNKk+scpanb7nL5yhuI1KR9wQFiC43ddPj/V1fmNyzlFC9bKiG4mYzxW7egtoHVcynr+OA==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm/0.15.18: + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64/0.15.14: + resolution: {integrity: sha512-eQi9rosGNVQFJyJWV0HCA5WZae/qWIQME7s8/j8DMvnylfBv62Pbu+zJ2eUDqNf2O4u3WB+OEXyfkpBoe194sg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64/0.15.18: + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@eslint/eslintrc/0.4.3: + resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 7.3.1 + globals: 13.18.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + js-yaml: 3.14.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/eslintrc/1.3.3: + resolution: {integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.4.1 + globals: 13.18.0 + ignore: 5.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + /@exodus/schemasafe/1.0.0-rc.9: + resolution: {integrity: sha512-dGGHpb61hLwifAu7sotuHFDBw6GTdpG8aKC0fsK17EuTzMRvUrH7lEAr6LTJ+sx3AZYed9yZ77rltVDHyg2hRg==} + dev: true + + /@floating-ui/core/0.6.2: + resolution: {integrity: sha512-jktYRmZwmau63adUG3GKOAVCofBXkk55S/zQ94XOorAHhwqFIOFAy1rSp2N0Wp6/tGbe9V3u/ExlGZypyY17rg==} + dev: true + + /@floating-ui/dom/0.4.5: + resolution: {integrity: sha512-b+prvQgJt8pieaKYMSJBXHxX/DYwdLsAWxKYqnO5dO2V4oo/TYBZJAUQCVNjTWWsrs6o4VDrNcP9+E70HAhJdw==} + dependencies: + '@floating-ui/core': 0.6.2 + dev: true + + /@floating-ui/react-dom-interactions/0.3.1_bynveq746y3g6trbvbqtemqkhe: + resolution: {integrity: sha512-tP2KEh7EHJr5hokSBHcPGojb+AorDNUf0NYfZGg/M+FsMvCOOsSEeEF0O1NDfETIzDnpbHnCs0DuvCFhSMSStg==} + dependencies: + '@floating-ui/react-dom': 0.6.3_bynveq746y3g6trbvbqtemqkhe + aria-hidden: 1.2.2_nik5kfrnrsctffq6o6vr6ceura + point-in-polygon: 1.1.0 + use-isomorphic-layout-effect: 1.1.2_nik5kfrnrsctffq6o6vr6ceura + transitivePeerDependencies: + - '@types/react' + - react + - react-dom + dev: true + + /@floating-ui/react-dom/0.6.3_bynveq746y3g6trbvbqtemqkhe: + resolution: {integrity: sha512-hC+pS5D6AgS2wWjbmSQ6UR6Kpy+drvWGJIri6e1EDGADTPsCaa4KzCgmCczHrQeInx9tqs81EyDmbKJYY2swKg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@floating-ui/dom': 0.4.5 + react: 18.1.0 + react-dom: 18.1.0_react@18.1.0 + use-isomorphic-layout-effect: 1.1.2_nik5kfrnrsctffq6o6vr6ceura + transitivePeerDependencies: + - '@types/react' + dev: true + + /@formatjs/ecma402-abstract/1.11.4: + resolution: {integrity: sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==} + dependencies: + '@formatjs/intl-localematcher': 0.2.25 + tslib: 2.4.1 + dev: true + + /@formatjs/fast-memoize/1.2.1: + resolution: {integrity: sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==} + dependencies: + tslib: 2.4.1 + dev: true + + /@formatjs/icu-messageformat-parser/2.1.0: + resolution: {integrity: sha512-Qxv/lmCN6hKpBSss2uQ8IROVnta2r9jd3ymUEIjm2UyIkUCHVcbUVRGL/KS/wv7876edvsPe+hjHVJ4z8YuVaw==} + dependencies: + '@formatjs/ecma402-abstract': 1.11.4 + '@formatjs/icu-skeleton-parser': 1.3.6 + tslib: 2.4.1 + dev: true + + /@formatjs/icu-skeleton-parser/1.3.6: + resolution: {integrity: sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==} + dependencies: + '@formatjs/ecma402-abstract': 1.11.4 + tslib: 2.4.1 + dev: true + + /@formatjs/intl-displaynames/1.2.10: + resolution: {integrity: sha512-GROA2RP6+7Ouu0WnHFF78O5XIU7pBfI19WM1qm93l6MFWibUk67nCfVCK3VAYJkLy8L8ZxjkYT11VIAfvSz8wg==} + dependencies: + '@formatjs/intl-utils': 2.3.0 + dev: true + + /@formatjs/intl-listformat/1.4.8: + resolution: {integrity: sha512-WNMQlEg0e50VZrGIkgD5n7+DAMGt3boKi1GJALfhFMymslJb5i+5WzWxyj/3a929Z6MAFsmzRIJjKuv+BxKAOQ==} + dependencies: + '@formatjs/intl-utils': 2.3.0 + dev: true + + /@formatjs/intl-localematcher/0.2.25: + resolution: {integrity: sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==} + dependencies: + tslib: 2.4.1 + dev: true + + /@formatjs/intl-relativetimeformat/4.5.16: + resolution: {integrity: sha512-IQ0haY97oHAH5OYUdykNiepdyEWj3SAT+Fp9ZpR85ov2JNiFx+12WWlxlVS8ehdyncC2ZMt/SwFIy2huK2+6/A==} + dependencies: + '@formatjs/intl-utils': 2.3.0 + dev: true + + /@formatjs/intl-unified-numberformat/3.3.7: + resolution: {integrity: sha512-KnWgLRHzCAgT9eyt3OS34RHoyD7dPDYhRcuKn+/6Kv2knDF8Im43J6vlSW6Hm1w63fNq3ZIT1cFk7RuVO3Psag==} + deprecated: We have renamed the package to @formatjs/intl-numberformat + dependencies: + '@formatjs/intl-utils': 2.3.0 + dev: true + + /@formatjs/intl-utils/2.3.0: + resolution: {integrity: sha512-KWk80UPIzPmUg+P0rKh6TqspRw0G6eux1PuJr+zz47ftMaZ9QDwbGzHZbtzWkl5hgayM/qrKRutllRC7D/vVXQ==} + deprecated: the package is rather renamed to @formatjs/ecma-abstract with some changes in functionality (primarily selectUnit is removed and we don't plan to make any further changes to this package + dev: true + + /@humanwhocodes/config-array/0.11.7: + resolution: {integrity: sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + /@humanwhocodes/config-array/0.5.0: + resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/config-array/0.9.5: + resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer/1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + /@humanwhocodes/object-schema/1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + + /@istanbuljs/load-nyc-config/1.1.0: + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + dev: true + + /@istanbuljs/schema/0.1.3: + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + dev: true + + /@jest/console/29.3.1: + resolution: {integrity: sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.3.1 + '@types/node': 18.11.11 + chalk: 4.1.2 + jest-message-util: 29.3.1 + jest-util: 29.3.1 + slash: 3.0.0 + dev: true + + /@jest/core/29.3.1_ts-node@10.9.1: + resolution: {integrity: sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/console': 29.3.1 + '@jest/reporters': 29.3.1 + '@jest/test-result': 29.3.1 + '@jest/transform': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 18.11.11 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.7.0 + exit: 0.1.2 + graceful-fs: 4.2.10 + jest-changed-files: 29.2.0 + jest-config: 29.3.1_k7quxe733nexnlgzi4yxvxoplq + jest-haste-map: 29.3.1 + jest-message-util: 29.3.1 + jest-regex-util: 29.2.0 + jest-resolve: 29.3.1 + jest-resolve-dependencies: 29.3.1 + jest-runner: 29.3.1 + jest-runtime: 29.3.1 + jest-snapshot: 29.3.1 + jest-util: 29.3.1 + jest-validate: 29.3.1 + jest-watcher: 29.3.1 + micromatch: 4.0.5 + pretty-format: 29.3.1 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /@jest/environment/29.3.1: + resolution: {integrity: sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 18.11.11 + jest-mock: 29.3.1 + dev: true + + /@jest/expect-utils/29.3.1: + resolution: {integrity: sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.2.0 + dev: true + + /@jest/expect/29.3.1: + resolution: {integrity: sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.3.1 + jest-snapshot: 29.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers/29.3.1: + resolution: {integrity: sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.3.1 + '@sinonjs/fake-timers': 9.1.2 + '@types/node': 18.11.11 + jest-message-util: 29.3.1 + jest-mock: 29.3.1 + jest-util: 29.3.1 + dev: true + + /@jest/globals/29.3.1: + resolution: {integrity: sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.3.1 + '@jest/expect': 29.3.1 + '@jest/types': 29.3.1 + jest-mock: 29.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters/29.3.1: + resolution: {integrity: sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 29.3.1 + '@jest/test-result': 29.3.1 + '@jest/transform': 29.3.1 + '@jest/types': 29.3.1 + '@jridgewell/trace-mapping': 0.3.17 + '@types/node': 18.11.11 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + istanbul-lib-coverage: 3.2.0 + istanbul-lib-instrument: 5.2.1 + istanbul-lib-report: 3.0.0 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.5 + jest-message-util: 29.3.1 + jest-util: 29.3.1 + jest-worker: 29.3.1 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/schemas/28.1.3: + resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@sinclair/typebox': 0.24.51 + dev: true + + /@jest/schemas/29.0.0: + resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.24.51 + dev: true + + /@jest/source-map/29.2.0: + resolution: {integrity: sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jridgewell/trace-mapping': 0.3.17 + callsites: 3.1.0 + graceful-fs: 4.2.10 + dev: true + + /@jest/test-result/29.3.1: + resolution: {integrity: sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.3.1 + '@jest/types': 29.3.1 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 + dev: true + + /@jest/test-sequencer/29.3.1: + resolution: {integrity: sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.3.1 + graceful-fs: 4.2.10 + jest-haste-map: 29.3.1 + slash: 3.0.0 + dev: true + + /@jest/transform/28.1.3: + resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@babel/core': 7.20.5 + '@jest/types': 28.1.3 + '@jridgewell/trace-mapping': 0.3.17 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.10 + jest-haste-map: 28.1.3 + jest-regex-util: 28.0.2 + jest-util: 28.1.3 + micromatch: 4.0.5 + pirates: 4.0.5 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/transform/29.3.1: + resolution: {integrity: sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.20.5 + '@jest/types': 29.3.1 + '@jridgewell/trace-mapping': 0.3.17 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.10 + jest-haste-map: 29.3.1 + jest-regex-util: 29.2.0 + jest-util: 29.3.1 + micromatch: 4.0.5 + pirates: 4.0.5 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/types/27.5.1: + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 18.11.11 + '@types/yargs': 16.0.4 + chalk: 4.1.2 + dev: true + + /@jest/types/28.1.3: + resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/schemas': 28.1.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 18.11.11 + '@types/yargs': 17.0.17 + chalk: 4.1.2 + dev: true + + /@jest/types/29.3.1: + resolution: {integrity: sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.0.0 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 18.11.11 + '@types/yargs': 17.0.17 + chalk: 4.1.2 + dev: true + + /@jridgewell/gen-mapping/0.1.1: + resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + + /@jridgewell/gen-mapping/0.3.2: + resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/trace-mapping': 0.3.17 + + /@jridgewell/resolve-uri/3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array/1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + /@jridgewell/source-map/0.3.2: + resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==} + dependencies: + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 + dev: true + + /@jridgewell/sourcemap-codec/1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + + /@jridgewell/trace-mapping/0.3.17: + resolution: {integrity: sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + + /@jridgewell/trace-mapping/0.3.9: + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@loadable/component/5.15.2_react@18.1.0: + resolution: {integrity: sha512-ryFAZOX5P2vFkUdzaAtTG88IGnr9qxSdvLRvJySXcUA4B4xVWurUNADu3AnKPksxOZajljqTrDEDcYjeL4lvLw==} + engines: {node: '>=8'} + peerDependencies: + react: '>=16.3.0' + dependencies: + '@babel/runtime': 7.18.9 + hoist-non-react-statics: 3.3.2 + react: 18.1.0 + react-is: 16.13.1 + dev: true + + /@loadable/component/5.15.2_react@18.2.0: + resolution: {integrity: sha512-ryFAZOX5P2vFkUdzaAtTG88IGnr9qxSdvLRvJySXcUA4B4xVWurUNADu3AnKPksxOZajljqTrDEDcYjeL4lvLw==} + engines: {node: '>=8'} + peerDependencies: + react: '>=16.3.0' + dependencies: + '@babel/runtime': 7.18.9 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + react-is: 16.13.1 + dev: true + + /@nicolo-ribaudo/chokidar-2/2.1.8-no-fsevents.3: + resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==} + requiresBuild: true + dev: true + optional: true + + /@nicolo-ribaudo/eslint-scope-5-internals/5.1.1-v1: + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + dependencies: + eslint-scope: 5.1.1 + dev: true + + /@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + /@nodelib/fs.walk/1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.14.0 + + /@parcel/css-darwin-arm64/1.9.0: + resolution: {integrity: sha512-f/guZseS2tNKtKw94LgpNTItZqdVA0mnznqPsmQaR5lSB+cM3IPrSV8cgOOpAS7Vwo9ggxuJartToxBBN+dWSw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@parcel/css-darwin-x64/1.9.0: + resolution: {integrity: sha512-4SpuwiM/4ayOgKflqSLd87XT7YwyC3wd2QuzOOkasjbe38UU+tot/87l2lQYEB538YinLdfwFQuFLDY0x9MxgA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@parcel/css-linux-arm-gnueabihf/1.9.0: + resolution: {integrity: sha512-KxCyX5fFvX5636Y8LSXwCxXMtIncgP7Lkw8nLsqd24C5YqMokmuOtAcHb/vQ9zQG6YiUWTv0MybqDuL7dBDfVw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/css-linux-arm64-gnu/1.9.0: + resolution: {integrity: sha512-wZ6Gsn6l+lSuvRdfWoyr7TdY24l29eGCD8QhXcqA1ALnFI7+KOTMBJ6aV3tjWUjMw3sg5qkosMHVqlWZzvrgXw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/css-linux-arm64-musl/1.9.0: + resolution: {integrity: sha512-N6n5HhMzcNR5oXWr0Md91gKYtuDhqDlp+aGDb3VT21uSCNLOvijOUz248v/VaPoRno1BPFYlMxn0fYYTTReB3A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/css-linux-x64-gnu/1.9.0: + resolution: {integrity: sha512-QufawDkaiOjsh6jcZk/dgDBPMqBtIs+LGTOgcJDM6XL4mcbDNxO6VkDANssRUgPnbG66YYy419CUWFta9aeVOg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/css-linux-x64-musl/1.9.0: + resolution: {integrity: sha512-s528buicSd83/5M5DN31JqwefZ8tqx4Jm97srkLDVBCZg+XEe9P0bO7q1Ngz5ZVFqfwvv8OYLPOtAtBmEppG3g==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@parcel/css-win32-x64-msvc/1.9.0: + resolution: {integrity: sha512-L4s84iK4PXnO/SzZyTsazAuzadtEYLGHgi1dyKYxMMGCjToCDjuwsn5K8bykeewZxjoL7RaunQGqCBRt5dfB5Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@parcel/css/1.9.0: + resolution: {integrity: sha512-egCetUQ1H6pgYxOIxVQ8X/YT5e8G0R8eq6aVaUHrqnZ7A8cc6FYgknl9XRmoy2Xxo9h1htrbzdaEShQ5gROwvw==} + engines: {node: '>= 12.0.0'} + dependencies: + detect-libc: 1.0.3 + optionalDependencies: + '@parcel/css-darwin-arm64': 1.9.0 + '@parcel/css-darwin-x64': 1.9.0 + '@parcel/css-linux-arm-gnueabihf': 1.9.0 + '@parcel/css-linux-arm64-gnu': 1.9.0 + '@parcel/css-linux-arm64-musl': 1.9.0 + '@parcel/css-linux-x64-gnu': 1.9.0 + '@parcel/css-linux-x64-musl': 1.9.0 + '@parcel/css-win32-x64-msvc': 1.9.0 + dev: true + + /@pmmmwh/react-refresh-webpack-plugin/0.5.7_react-refresh@0.14.0: + resolution: {integrity: sha512-bcKCAzF0DV2IIROp9ZHkRJa6O4jy7NlnHdWL3GmcUxYWNjLXkK5kfELELwEfSP5hXPfVL/qOGMAROuMQb9GG8Q==} + engines: {node: '>= 10.13'} + peerDependencies: + '@types/webpack': 4.x || 5.x + react-refresh: '>=0.10.0 <1.0.0' + sockjs-client: ^1.4.0 + type-fest: '>=0.17.0 <3.0.0' + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x || 4.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + dependencies: + ansi-html-community: 0.0.8 + common-path-prefix: 3.0.0 + core-js-pure: 3.26.1 + error-stack-parser: 2.1.4 + find-up: 5.0.0 + html-entities: 2.3.3 + loader-utils: 2.0.4 + react-refresh: 0.14.0 + schema-utils: 3.1.1 + source-map: 0.7.4 + dev: true + + /@qixian.cs/path-to-regexp/6.1.0: + resolution: {integrity: sha512-2jIiLiVZB1jnY7IIRQKtoV8Gnr7XIhk4mC88ONGunZE3hYt5IHUG4BE/6+JiTBjjEWQLBeWnZB8hGpppkufiVw==} + + /@radix-ui/popper/0.0.10: + resolution: {integrity: sha512-YFKuPqQPKscreQid7NuB4it3PMzSwGg03vgrud6sVliHkI43QNAOHyrHyMNo015jg6QK5GVDn+7J2W5uygqSGA==} + dependencies: + '@babel/runtime': 7.20.6 + csstype: 3.1.1 + dev: true + + /@rc-component/mini-decimal/1.0.1: + resolution: {integrity: sha512-9N8nRk0oKj1qJzANKl+n9eNSMUGsZtjwNuDCiZ/KA+dt1fE3zq5x2XxclRcAbOIXnZcJ53ozP2Pa60gyELXagA==} + engines: {node: '>=8.x'} + dependencies: + '@babel/runtime': 7.20.6 + + /@rc-component/portal/1.0.3_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-rG9j7OMiI9eLFLF6G0B4OcfLac9W8Z7Vjeizbjt/A6R+zzw7vhHbJ4GIkrDpUqXDvFdEEzdxfICpb8/noLwG+w==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /@rc-component/tour/1.0.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-yFTUjqQdlG+S7k9yVM+QwxsW6t/kaJ850EUihbTTGPCv65hJwm+c5TO0uO5qhc/Ro+YhE6nwdfu4Wt5EDJcNFw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + '@rc-component/portal': 1.0.3_biqbaboplfbrettd7655fr4n2y + classnames: 2.3.2 + rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /@remix-run/router/1.0.5: + resolution: {integrity: sha512-my0Mycd+jruq/1lQuO5LBB6WTlL/e8DTCYWp44DfMTDcXz8DcTlgF0ISaLsGewt+ctHN+yA8xMq3q/N7uWJPug==} + engines: {node: '>=14'} + dev: true + + /@rollup/pluginutils/4.2.1: + resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} + engines: {node: '>= 8.0.0'} + dependencies: + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: true + + /@sinclair/typebox/0.24.51: + resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} + dev: true + + /@sinonjs/commons/1.8.6: + resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers/9.1.2: + resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} + dependencies: + '@sinonjs/commons': 1.8.6 + dev: true + + /@stylelint/postcss-css-in-js/0.37.3_j55xdkkcxc32kvnyvx3y7casfm: + resolution: {integrity: sha512-scLk3cSH1H9KggSniseb2KNAU5D9FWc3H7BxCSAIdtU9OWIyw0zkEZ9qEKHryRM+SExYXRKNb7tOOVNAsQ3iwg==} + peerDependencies: + postcss: '>=7.0.0' + postcss-syntax: '>=0.36.2' + dependencies: + '@babel/core': 7.20.5 + postcss: 7.0.39 + postcss-syntax: 0.36.2_kei4jy7wdgbhc236h4oijypxom + transitivePeerDependencies: + - supports-color + dev: true + + /@stylelint/postcss-css-in-js/0.38.0_2kvscvrvsi2imdv3wm7he2jef4: + resolution: {integrity: sha512-XOz5CAe49kS95p5yRd+DAIWDojTjfmyAQ4bbDlXMdbZTQ5t0ThjSLvWI6JI2uiS7MFurVBkZ6zUqcimzcLTBoQ==} + peerDependencies: + postcss: '>=7.0.0' + postcss-syntax: '>=0.36.2' + dependencies: + '@babel/core': 7.18.9 + postcss: 8.4.19 + postcss-syntax: 0.36.2_postcss@8.4.19 + transitivePeerDependencies: + - supports-color + dev: true + + /@stylelint/postcss-markdown/0.36.2_j55xdkkcxc32kvnyvx3y7casfm: + resolution: {integrity: sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==} + deprecated: 'Use the original unforked package instead: postcss-markdown' + peerDependencies: + postcss: '>=7.0.0' + postcss-syntax: '>=0.36.2' + dependencies: + postcss: 7.0.39 + postcss-syntax: 0.36.2_kei4jy7wdgbhc236h4oijypxom + remark: 13.0.0 + unist-util-find-all-after: 3.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@svgr/babel-plugin-add-jsx-attribute/6.5.1_@babel+core@7.20.5: + resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + dev: true + + /@svgr/babel-plugin-remove-jsx-attribute/6.5.0_@babel+core@7.20.5: + resolution: {integrity: sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + dev: true + + /@svgr/babel-plugin-remove-jsx-empty-expression/6.5.0_@babel+core@7.20.5: + resolution: {integrity: sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + dev: true + + /@svgr/babel-plugin-replace-jsx-attribute-value/6.5.1_@babel+core@7.20.5: + resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + dev: true + + /@svgr/babel-plugin-svg-dynamic-title/6.5.1_@babel+core@7.20.5: + resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + dev: true + + /@svgr/babel-plugin-svg-em-dimensions/6.5.1_@babel+core@7.20.5: + resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + dev: true + + /@svgr/babel-plugin-transform-react-native-svg/6.5.1_@babel+core@7.20.5: + resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + dev: true + + /@svgr/babel-plugin-transform-svg-component/6.5.1_@babel+core@7.20.5: + resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} + engines: {node: '>=12'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + dev: true + + /@svgr/babel-preset/6.5.1_@babel+core@7.20.5: + resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1_@babel+core@7.20.5 + '@svgr/babel-plugin-remove-jsx-attribute': 6.5.0_@babel+core@7.20.5 + '@svgr/babel-plugin-remove-jsx-empty-expression': 6.5.0_@babel+core@7.20.5 + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1_@babel+core@7.20.5 + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1_@babel+core@7.20.5 + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1_@babel+core@7.20.5 + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1_@babel+core@7.20.5 + '@svgr/babel-plugin-transform-svg-component': 6.5.1_@babel+core@7.20.5 + dev: true + + /@svgr/core/6.2.1: + resolution: {integrity: sha512-NWufjGI2WUyrg46mKuySfviEJ6IxHUOm/8a3Ph38VCWSp+83HBraCQrpEM3F3dB6LBs5x8OElS8h3C0oOJaJAA==} + engines: {node: '>=10'} + dependencies: + '@svgr/plugin-jsx': 6.5.1_@svgr+core@6.2.1 + camelcase: 6.3.0 + cosmiconfig: 7.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@svgr/hast-util-to-babel-ast/6.5.1: + resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} + engines: {node: '>=10'} + dependencies: + '@babel/types': 7.20.5 + entities: 4.4.0 + dev: true + + /@svgr/plugin-jsx/6.5.1_@svgr+core@6.2.1: + resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} + engines: {node: '>=10'} + peerDependencies: + '@svgr/core': ^6.0.0 + dependencies: + '@babel/core': 7.20.5 + '@svgr/babel-preset': 6.5.1_@babel+core@7.20.5 + '@svgr/core': 6.2.1 + '@svgr/hast-util-to-babel-ast': 6.5.1 + svg-parser: 2.0.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@svgr/plugin-svgo/6.5.1_@svgr+core@6.2.1: + resolution: {integrity: sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==} + engines: {node: '>=10'} + peerDependencies: + '@svgr/core': '*' + dependencies: + '@svgr/core': 6.2.1 + cosmiconfig: 7.1.0 + deepmerge: 4.2.2 + svgo: 2.8.0 + dev: true + + /@testing-library/dom/8.19.0: + resolution: {integrity: sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A==} + engines: {node: '>=12'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/runtime': 7.20.6 + '@types/aria-query': 4.2.2 + aria-query: 5.1.3 + chalk: 4.1.2 + dom-accessibility-api: 0.5.14 + lz-string: 1.4.4 + pretty-format: 27.5.1 + dev: true + + /@testing-library/react/13.4.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==} + engines: {node: '>=12'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@babel/runtime': 7.20.6 + '@testing-library/dom': 8.19.0 + '@types/react-dom': 18.0.9 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: true + + /@tootallnate/once/2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + dev: true + + /@trysound/sax/0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + dev: true + + /@tsconfig/node10/1.0.9: + resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + dev: true + + /@tsconfig/node12/1.0.11: + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + dev: true + + /@tsconfig/node14/1.0.3: + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + dev: true + + /@tsconfig/node16/1.0.3: + resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} + dev: true + + /@types/aria-query/4.2.2: + resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==} + dev: true + + /@types/babel__core/7.1.20: + resolution: {integrity: sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==} + dependencies: + '@babel/parser': 7.20.5 + '@babel/types': 7.20.5 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.18.3 + dev: true + + /@types/babel__generator/7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + dependencies: + '@babel/types': 7.20.5 + dev: true + + /@types/babel__template/7.4.1: + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + dependencies: + '@babel/parser': 7.20.5 + '@babel/types': 7.20.5 + dev: true + + /@types/babel__traverse/7.18.3: + resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} + dependencies: + '@babel/types': 7.20.5 + dev: true + + /@types/body-parser/1.19.2: + resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} + dependencies: + '@types/connect': 3.4.35 + '@types/node': 18.11.11 + dev: true + + /@types/classnames/2.3.1: + resolution: {integrity: sha512-zeOWb0JGBoVmlQoznvqXbE0tEC/HONsnoUNH19Hc96NFsTAwTXbTqb8FMYkru1F/iqp7a18Ws3nWJvtA1sHD1A==} + deprecated: This is a stub types definition. classnames provides its own type definitions, so you do not need this installed. + dependencies: + classnames: 2.3.2 + dev: true + + /@types/connect/3.4.35: + resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} + dependencies: + '@types/node': 18.11.11 + dev: true + + /@types/eslint/7.29.0: + resolution: {integrity: sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==} + dependencies: + '@types/estree': 1.0.0 + '@types/json-schema': 7.0.11 + dev: true + + /@types/estree/1.0.0: + resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + dev: true + + /@types/express-serve-static-core/4.17.31: + resolution: {integrity: sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==} + dependencies: + '@types/node': 18.11.11 + '@types/qs': 6.9.7 + '@types/range-parser': 1.2.4 + dev: true + + /@types/express/4.17.14: + resolution: {integrity: sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==} + dependencies: + '@types/body-parser': 1.19.2 + '@types/express-serve-static-core': 4.17.31 + '@types/qs': 6.9.7 + '@types/serve-static': 1.15.0 + dev: true + + /@types/glob/7.2.0: + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 18.11.11 + dev: true + + /@types/graceful-fs/4.1.5: + resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} + dependencies: + '@types/node': 18.11.11 + dev: true + + /@types/hapi__joi/17.1.8: + resolution: {integrity: sha512-omVytnOAiAfzGUOQArujJr3heWxPrDHW7MF1ieqix1ngoGdhtJmSSDFVM+ZAOa7UmhlGJtltdgUAT03mfDu6kg==} + dev: true + + /@types/history/4.7.11: + resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} + dev: true + + /@types/hoist-non-react-statics/3.3.1: + resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} + dependencies: + '@types/react': 17.0.52 + hoist-non-react-statics: 3.3.2 + dev: true + + /@types/html-minifier-terser/6.1.0: + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} + dev: true + + /@types/invariant/2.2.35: + resolution: {integrity: sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg==} + dev: true + + /@types/istanbul-lib-coverage/2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + dev: true + + /@types/istanbul-lib-report/3.0.0: + resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + dev: true + + /@types/istanbul-reports/3.0.1: + resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + dependencies: + '@types/istanbul-lib-report': 3.0.0 + dev: true + + /@types/jest/29.2.4: + resolution: {integrity: sha512-PipFB04k2qTRPePduVLTRiPzQfvMeLwUN3Z21hsAKaB/W9IIzgB2pizCL466ftJlcyZqnHoC9ZHpxLGl3fS86A==} + dependencies: + expect: 29.3.1 + pretty-format: 29.3.1 + dev: true + + /@types/js-cookie/2.2.7: + resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} + dev: true + + /@types/jsdom/20.0.1: + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} + dependencies: + '@types/node': 18.11.11 + '@types/tough-cookie': 4.0.2 + parse5: 7.1.2 + dev: true + + /@types/json-schema/7.0.11: + resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} + + /@types/lodash/4.14.191: + resolution: {integrity: sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ==} + dev: true + + /@types/mdast/3.0.10: + resolution: {integrity: sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==} + dependencies: + '@types/unist': 2.0.6 + dev: true + + /@types/mime/3.0.1: + resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} + dev: true + + /@types/minimatch/5.1.2: + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + dev: true + + /@types/minimist/1.2.2: + resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + dev: true + + /@types/node/12.20.55: + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + dev: true + + /@types/node/18.11.11: + resolution: {integrity: sha512-KJ021B1nlQUBLopzZmPBVuGU9un7WJd/W4ya7Ih02B4Uwky5Nja0yGYav2EfYIk0RR2Q9oVhf60S2XR1BCWJ2g==} + dev: true + + /@types/normalize-package-data/2.4.1: + resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + dev: true + + /@types/parse-json/4.0.0: + resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + + /@types/prettier/2.7.1: + resolution: {integrity: sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==} + dev: true + + /@types/prop-types/15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + dev: true + + /@types/qs/6.9.7: + resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} + dev: true + + /@types/range-parser/1.2.4: + resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} + dev: true + + /@types/react-dom/17.0.18: + resolution: {integrity: sha512-rLVtIfbwyur2iFKykP2w0pl/1unw26b5td16d5xMgp7/yjTHomkyxPYChFoCr/FtEX1lN9wY6lFj1qvKdS5kDw==} + dependencies: + '@types/react': 17.0.52 + dev: true + + /@types/react-dom/18.0.9: + resolution: {integrity: sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==} + dependencies: + '@types/react': 17.0.52 + dev: true + + /@types/react-helmet/6.1.6: + resolution: {integrity: sha512-ZKcoOdW/Tg+kiUbkFCBtvDw0k3nD4HJ/h/B9yWxN4uDO8OkRksWTO+EL+z/Qu3aHTeTll3Ro0Cc/8UhwBCMG5A==} + dependencies: + '@types/react': 17.0.52 + dev: true + + /@types/react-redux/7.1.24: + resolution: {integrity: sha512-7FkurKcS1k0FHZEtdbbgN8Oc6b+stGSfZYjQGicofJ0j4U0qIn/jaSvnP2pLwZKiai3/17xqqxkkrxTgN8UNbQ==} + dependencies: + '@types/hoist-non-react-statics': 3.3.1 + '@types/react': 17.0.52 + hoist-non-react-statics: 3.3.2 + redux: 4.2.0 + dev: true + + /@types/react/17.0.52: + resolution: {integrity: sha512-vwk8QqVODi0VaZZpDXQCmEmiOuyjEFPY7Ttaw5vjM112LOq37yz1CDJGrRJwA1fYEq4Iitd5rnjd1yWAc/bT+A==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.2 + csstype: 3.1.1 + dev: true + + /@types/scheduler/0.16.2: + resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} + dev: true + + /@types/semver/7.3.13: + resolution: {integrity: sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==} + dev: true + + /@types/serve-static/1.15.0: + resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} + dependencies: + '@types/mime': 3.0.1 + '@types/node': 18.11.11 + dev: true + + /@types/stack-utils/2.0.1: + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + dev: true + + /@types/tough-cookie/4.0.2: + resolution: {integrity: sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==} + dev: true + + /@types/unist/2.0.6: + resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} + dev: true + + /@types/use-sync-external-store/0.0.3: + resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} + dev: true + + /@types/yargs-parser/21.0.0: + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + dev: true + + /@types/yargs/16.0.4: + resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@types/yargs/17.0.17: + resolution: {integrity: sha512-72bWxFKTK6uwWJAVT+3rF6Jo6RTojiJ27FQo8Rf60AL+VZbzoVPnMFhKsUnbjR8A3BTCYQ7Mv3hnl8T0A+CX9g==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@typescript-eslint/eslint-plugin/5.36.1_mykkoz4hah6spua56zdzyuayri: + resolution: {integrity: sha512-iC40UK8q1tMepSDwiLbTbMXKDxzNy+4TfPWgIL661Ym0sD42vRcQU93IsZIrmi+x292DBr60UI/gSwfdVYexCA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/parser': 5.36.1_7xejdone6kwdndpjp5nwx3ofcu + '@typescript-eslint/scope-manager': 5.36.1 + '@typescript-eslint/type-utils': 5.36.1_7xejdone6kwdndpjp5nwx3ofcu + '@typescript-eslint/utils': 5.36.1_7xejdone6kwdndpjp5nwx3ofcu + debug: 4.3.4 + eslint: 8.15.0 + functional-red-black-tree: 1.0.1 + ignore: 5.2.1 + regexpp: 3.2.0 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.4 + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/eslint-plugin/5.36.1_ujfdmtdxmqxe4a5dut33px3yhi: + resolution: {integrity: sha512-iC40UK8q1tMepSDwiLbTbMXKDxzNy+4TfPWgIL661Ym0sD42vRcQU93IsZIrmi+x292DBr60UI/gSwfdVYexCA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/parser': 5.36.1_ha6vam6werchizxrnqvarmz2zu + '@typescript-eslint/scope-manager': 5.36.1 + '@typescript-eslint/type-utils': 5.36.1_ha6vam6werchizxrnqvarmz2zu + '@typescript-eslint/utils': 5.36.1_ha6vam6werchizxrnqvarmz2zu + debug: 4.3.4 + eslint: 8.29.0 + functional-red-black-tree: 1.0.1 + ignore: 5.2.1 + regexpp: 3.2.0 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.4 + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/eslint-plugin/5.45.1_gzownqpuqpv4wlegrjxgkhyhy4: + resolution: {integrity: sha512-cOizjPlKEh0bXdFrBLTrI/J6B/QMlhwE9auOov53tgB+qMukH6/h8YAK/qw+QJGct/PTbdh2lytGyipxCcEtAw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/parser': 5.45.1_yfqovispp7u7jaktymfaqwl2py + '@typescript-eslint/scope-manager': 5.45.1 + '@typescript-eslint/type-utils': 5.45.1_yfqovispp7u7jaktymfaqwl2py + '@typescript-eslint/utils': 5.45.1_yfqovispp7u7jaktymfaqwl2py + debug: 4.3.4 + eslint: 7.32.0 + ignore: 5.2.1 + natural-compare-lite: 1.4.0 + regexpp: 3.2.0 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.4 + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/experimental-utils/4.33.0_yfqovispp7u7jaktymfaqwl2py: + resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: '*' + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/scope-manager': 4.33.0 + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.9.4 + eslint: 7.32.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@7.32.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/parser/5.36.1_7xejdone6kwdndpjp5nwx3ofcu: + resolution: {integrity: sha512-/IsgNGOkBi7CuDfUbwt1eOqUXF9WGVBW9dwEe1pi+L32XrTsZIgmDFIi2RxjzsvB/8i+MIf5JIoTEH8LOZ368A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.36.1 + '@typescript-eslint/types': 5.36.1 + '@typescript-eslint/typescript-estree': 5.36.1_typescript@4.9.4 + debug: 4.3.4 + eslint: 8.15.0 + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser/5.36.1_ha6vam6werchizxrnqvarmz2zu: + resolution: {integrity: sha512-/IsgNGOkBi7CuDfUbwt1eOqUXF9WGVBW9dwEe1pi+L32XrTsZIgmDFIi2RxjzsvB/8i+MIf5JIoTEH8LOZ368A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.36.1 + '@typescript-eslint/types': 5.36.1 + '@typescript-eslint/typescript-estree': 5.36.1_typescript@4.9.4 + debug: 4.3.4 + eslint: 8.29.0 + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser/5.45.1_yfqovispp7u7jaktymfaqwl2py: + resolution: {integrity: sha512-JQ3Ep8bEOXu16q0ztsatp/iQfDCtvap7sp/DKo7DWltUquj5AfCOpX2zSzJ8YkAVnrQNqQ5R62PBz2UtrfmCkA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.45.1 + '@typescript-eslint/types': 5.45.1 + '@typescript-eslint/typescript-estree': 5.45.1_typescript@4.9.4 + debug: 4.3.4 + eslint: 7.32.0 + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager/4.33.0: + resolution: {integrity: sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dependencies: + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + dev: true + + /@typescript-eslint/scope-manager/5.36.1: + resolution: {integrity: sha512-pGC2SH3/tXdu9IH3ItoqciD3f3RRGCh7hb9zPdN2Drsr341zgd6VbhP5OHQO/reUqihNltfPpMpTNihFMarP2w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.36.1 + '@typescript-eslint/visitor-keys': 5.36.1 + dev: true + + /@typescript-eslint/scope-manager/5.45.1: + resolution: {integrity: sha512-D6fCileR6Iai7E35Eb4Kp+k0iW7F1wxXYrOhX/3dywsOJpJAQ20Fwgcf+P/TDtvQ7zcsWsrJaglaQWDhOMsspQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.45.1 + '@typescript-eslint/visitor-keys': 5.45.1 + dev: true + + /@typescript-eslint/type-utils/5.36.1_7xejdone6kwdndpjp5nwx3ofcu: + resolution: {integrity: sha512-xfZhfmoQT6m3lmlqDvDzv9TiCYdw22cdj06xY0obSznBsT///GK5IEZQdGliXpAOaRL34o8phEvXzEo/VJx13Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.36.1_typescript@4.9.4 + '@typescript-eslint/utils': 5.36.1_7xejdone6kwdndpjp5nwx3ofcu + debug: 4.3.4 + eslint: 8.15.0 + tsutils: 3.21.0_typescript@4.9.4 + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/type-utils/5.36.1_ha6vam6werchizxrnqvarmz2zu: + resolution: {integrity: sha512-xfZhfmoQT6m3lmlqDvDzv9TiCYdw22cdj06xY0obSznBsT///GK5IEZQdGliXpAOaRL34o8phEvXzEo/VJx13Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.36.1_typescript@4.9.4 + '@typescript-eslint/utils': 5.36.1_ha6vam6werchizxrnqvarmz2zu + debug: 4.3.4 + eslint: 8.29.0 + tsutils: 3.21.0_typescript@4.9.4 + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/type-utils/5.45.1_yfqovispp7u7jaktymfaqwl2py: + resolution: {integrity: sha512-aosxFa+0CoYgYEl3aptLe1svP910DJq68nwEJzyQcrtRhC4BN0tJAvZGAe+D0tzjJmFXe+h4leSsiZhwBa2vrA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.45.1_typescript@4.9.4 + '@typescript-eslint/utils': 5.45.1_yfqovispp7u7jaktymfaqwl2py + debug: 4.3.4 + eslint: 7.32.0 + tsutils: 3.21.0_typescript@4.9.4 + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types/4.33.0: + resolution: {integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dev: true + + /@typescript-eslint/types/5.36.1: + resolution: {integrity: sha512-jd93ShpsIk1KgBTx9E+hCSEuLCUFwi9V/urhjOWnOaksGZFbTOxAT47OH2d4NLJnLhkVD+wDbB48BuaycZPLBg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/types/5.45.1: + resolution: {integrity: sha512-HEW3U0E5dLjUT+nk7b4lLbOherS1U4ap+b9pfu2oGsW3oPu7genRaY9dDv3nMczC1rbnRY2W/D7SN05wYoGImg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/typescript-estree/4.33.0_typescript@4.9.4: + resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.4 + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree/5.36.1_typescript@4.9.4: + resolution: {integrity: sha512-ih7V52zvHdiX6WcPjsOdmADhYMDN15SylWRZrT2OMy80wzKbc79n8wFW0xpWpU0x3VpBz/oDgTm2xwDAnFTl+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.36.1 + '@typescript-eslint/visitor-keys': 5.36.1 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.4 + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree/5.45.1_typescript@4.9.4: + resolution: {integrity: sha512-76NZpmpCzWVrrb0XmYEpbwOz/FENBi+5W7ipVXAsG3OoFrQKJMiaqsBMbvGRyLtPotGqUfcY7Ur8j0dksDJDng==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.45.1 + '@typescript-eslint/visitor-keys': 5.45.1 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.4 + typescript: 4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils/5.36.1_7xejdone6kwdndpjp5nwx3ofcu: + resolution: {integrity: sha512-lNj4FtTiXm5c+u0pUehozaUWhh7UYKnwryku0nxJlYUEWetyG92uw2pr+2Iy4M/u0ONMKzfrx7AsGBTCzORmIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/scope-manager': 5.36.1 + '@typescript-eslint/types': 5.36.1 + '@typescript-eslint/typescript-estree': 5.36.1_typescript@4.9.4 + eslint: 8.15.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.15.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils/5.36.1_ha6vam6werchizxrnqvarmz2zu: + resolution: {integrity: sha512-lNj4FtTiXm5c+u0pUehozaUWhh7UYKnwryku0nxJlYUEWetyG92uw2pr+2Iy4M/u0ONMKzfrx7AsGBTCzORmIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/scope-manager': 5.36.1 + '@typescript-eslint/types': 5.36.1 + '@typescript-eslint/typescript-estree': 5.36.1_typescript@4.9.4 + eslint: 8.29.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.29.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils/5.45.1_7xejdone6kwdndpjp5nwx3ofcu: + resolution: {integrity: sha512-rlbC5VZz68+yjAzQBc4I7KDYVzWG2X/OrqoZrMahYq3u8FFtmQYc+9rovo/7wlJH5kugJ+jQXV5pJMnofGmPRw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.45.1 + '@typescript-eslint/types': 5.45.1 + '@typescript-eslint/typescript-estree': 5.45.1_typescript@4.9.4 + eslint: 8.15.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.15.0 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils/5.45.1_ha6vam6werchizxrnqvarmz2zu: + resolution: {integrity: sha512-rlbC5VZz68+yjAzQBc4I7KDYVzWG2X/OrqoZrMahYq3u8FFtmQYc+9rovo/7wlJH5kugJ+jQXV5pJMnofGmPRw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.45.1 + '@typescript-eslint/types': 5.45.1 + '@typescript-eslint/typescript-estree': 5.45.1_typescript@4.9.4 + eslint: 8.29.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.29.0 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils/5.45.1_yfqovispp7u7jaktymfaqwl2py: + resolution: {integrity: sha512-rlbC5VZz68+yjAzQBc4I7KDYVzWG2X/OrqoZrMahYq3u8FFtmQYc+9rovo/7wlJH5kugJ+jQXV5pJMnofGmPRw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.45.1 + '@typescript-eslint/types': 5.45.1 + '@typescript-eslint/typescript-estree': 5.45.1_typescript@4.9.4 + eslint: 7.32.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@7.32.0 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys/4.33.0: + resolution: {integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==} + engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} + dependencies: + '@typescript-eslint/types': 4.33.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /@typescript-eslint/visitor-keys/5.36.1: + resolution: {integrity: sha512-ojB9aRyRFzVMN3b5joSYni6FAS10BBSCAfKJhjJAV08t/a95aM6tAhz+O1jF+EtgxktuSO3wJysp2R+Def/IWQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.36.1 + eslint-visitor-keys: 3.3.0 + dev: true + + /@typescript-eslint/visitor-keys/5.45.1: + resolution: {integrity: sha512-cy9ln+6rmthYWjH9fmx+5FU/JDpjQb586++x2FZlveq7GdGuLLW9a2Jcst2TGekH82bXpfmRNSwP9tyEs6RjvQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.45.1 + eslint-visitor-keys: 3.3.0 + dev: true + + /@umijs/ast/4.0.35: + resolution: {integrity: sha512-DnTh1NwRrDmzGMgXDwa9HFrcBZgcGL4V4V4HBZkbjUq2oOYeVF/QtW4RNNMAlBYh1x/MoRhjuA4by/gB8e1Pyw==} + dependencies: + '@umijs/bundler-utils': 4.0.35 + transitivePeerDependencies: + - supports-color + dev: true + + /@umijs/babel-preset-umi/4.0.35: + resolution: {integrity: sha512-Q94HYv2X0km9WPxhY7Im8Op8sr/onTwxbmdq/dJF7LzwaE6CWLaX8+uxCP/cwx3b06CMkP5+ymdkZ8unY5MPWg==} + dependencies: + '@babel/runtime': 7.18.9 + '@bloomberg/record-tuple-polyfill': 0.0.4 + '@umijs/bundler-utils': 4.0.35 + '@umijs/utils': 4.0.35 + babel-plugin-styled-components: 2.0.7 + core-js: 3.22.4 + transitivePeerDependencies: + - styled-components + - supports-color + dev: true + + /@umijs/bundler-esbuild/4.0.35: + resolution: {integrity: sha512-FRXN/AhRbs/T5jEnaz/Ky6QrG/Qfc0gbfh8eTurduW9ETD40l4SDb1uf7N0cEvxnvJJftzPcpFrE8o4eUH56qQ==} + hasBin: true + dependencies: + '@umijs/bundler-utils': 4.0.35 + '@umijs/utils': 4.0.35 + enhanced-resolve: 5.9.3 + postcss: 8.4.19 + postcss-flexbugs-fixes: 5.0.2_postcss@8.4.19 + postcss-preset-env: 7.5.0_postcss@8.4.19 + transitivePeerDependencies: + - supports-color + dev: true + + /@umijs/bundler-utils/4.0.34: + resolution: {integrity: sha512-w9UbuW+GXu0jGXIJiQPzpap72NbBn/taxFeNpaWFnlRlziEIMQZ4bQ7I3WAud/ej+eT6Zf142WIVv/PjpA8Lmg==} + dependencies: + '@umijs/utils': 4.0.34 + esbuild: 0.15.14 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.0.1 + spdy: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@umijs/bundler-utils/4.0.35: + resolution: {integrity: sha512-w+2spAaKLkDzJySAAnzOktSzyZ2QYm7kI+qfcYAiqdNIRlr5OV8OhnFIL9LuEa8nSao0VQGqLoMH2O0CejGbyg==} + dependencies: + '@umijs/utils': 4.0.35 + esbuild: 0.15.18 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.0.1 + spdy: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@umijs/bundler-vite/4.0.35: + resolution: {integrity: sha512-ZxGAttmxxAEf6qF3IrUntmdulfBjOu4H/chUsiaZicx1H3NkhpCKqKTUsKGka+3YWmoc77KNbAAqLPKix2s0qg==} + hasBin: true + dependencies: + '@svgr/core': 6.2.1 + '@umijs/bundler-utils': 4.0.35 + '@umijs/utils': 4.0.35 + '@vitejs/plugin-react': 1.2.0 + postcss-preset-env: 7.5.0 + rollup-plugin-visualizer: 5.6.0 + transitivePeerDependencies: + - postcss + - rollup + - supports-color + dev: true + + /@umijs/bundler-webpack/4.0.35_typescript@4.9.4: + resolution: {integrity: sha512-41VdNGN9sP4TbmKH4lIvbYNWAHSxpnIK0Y4h3HLq++/A5xHdTXE5scTXQtwiQsjUpovDu7O/S7MsNbpzVU9cXg==} + hasBin: true + dependencies: + '@parcel/css': 1.9.0 + '@pmmmwh/react-refresh-webpack-plugin': 0.5.7_react-refresh@0.14.0 + '@svgr/core': 6.2.1 + '@svgr/plugin-jsx': 6.5.1_@svgr+core@6.2.1 + '@svgr/plugin-svgo': 6.5.1_@svgr+core@6.2.1 + '@types/hapi__joi': 17.1.8 + '@umijs/babel-preset-umi': 4.0.35 + '@umijs/bundler-utils': 4.0.35 + '@umijs/case-sensitive-paths-webpack-plugin': 1.0.1 + '@umijs/mfsu': 4.0.35 + '@umijs/utils': 4.0.35 + cors: 2.8.5 + css-loader: 6.7.1 + es5-imcompatible-versions: 0.1.77 + fork-ts-checker-webpack-plugin: 7.2.4_typescript@4.9.4 + jest-worker: 27.5.1 + node-libs-browser: 2.2.1 + postcss: 8.4.19 + postcss-preset-env: 7.5.0_postcss@8.4.19 + react-error-overlay: 6.0.9 + react-refresh: 0.14.0 + transitivePeerDependencies: + - '@types/webpack' + - sockjs-client + - styled-components + - supports-color + - type-fest + - typescript + - vue-template-compiler + - webpack + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: true + + /@umijs/case-sensitive-paths-webpack-plugin/1.0.1: + resolution: {integrity: sha512-kDKJ8yTarxwxGJDInG33hOpaQRZ//XpNuuznQ/1Mscypw6kappzFmrBr2dOYave++K7JHouoANF354UpbEQw0Q==} + dev: true + + /@umijs/core/4.0.35: + resolution: {integrity: sha512-wKzn/PAg54Ks5xUTPOych19z/A+9AkUzurzfPFl0TlOV4EGga0m+rMLTAA/F6aPRABs8enIRcCkL3KmtSHhb0Q==} + dependencies: + '@umijs/bundler-utils': 4.0.35 + '@umijs/utils': 4.0.35 + transitivePeerDependencies: + - supports-color + dev: true + + /@umijs/did-you-know/1.0.1: + resolution: {integrity: sha512-FnKZbWb/X3Nk5vmQ4u2qEtB20+fv1kt4WCSvMIhln/kjh+oS6RA4WfvB+EHsfxdotD4qSaj5cqIDgbCYoCNzEA==} + dev: true + + /@umijs/fabric/2.14.0: + resolution: {integrity: sha512-tiqKWYFwK9dgrdC8U1IjdIqeIv6W3NhROJHb07u1D72KWpGoN2U7/gVRtyMq7psBSK4EwHyXL6sFtIGUibs2ng==} + hasBin: true + dependencies: + '@babel/core': 7.20.5 + '@babel/eslint-parser': 7.19.1_q7hszagzy73il6awuziitdhqxe + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-proposal-decorators': 7.20.5_@babel+core@7.20.5 + '@babel/preset-env': 7.20.2_@babel+core@7.20.5 + '@babel/preset-react': 7.18.6_@babel+core@7.20.5 + '@babel/preset-typescript': 7.18.6_@babel+core@7.20.5 + '@typescript-eslint/eslint-plugin': 5.45.1_gzownqpuqpv4wlegrjxgkhyhy4 + '@typescript-eslint/parser': 5.45.1_yfqovispp7u7jaktymfaqwl2py + chalk: 4.1.2 + eslint: 7.32.0 + eslint-config-prettier: 8.5.0_eslint@7.32.0 + eslint-formatter-pretty: 4.1.0 + eslint-plugin-babel: 5.3.1_eslint@7.32.0 + eslint-plugin-jest: 24.7.0_lu625izcmv7ncn4wtsowv2m5du + eslint-plugin-promise: 6.1.1_eslint@7.32.0 + eslint-plugin-react: 7.31.11_eslint@7.32.0 + eslint-plugin-react-hooks: 4.6.0_eslint@7.32.0 + eslint-plugin-unicorn: 20.1.0_eslint@7.32.0 + fast-glob: 3.2.12 + os-locale: 5.0.0 + prettier: 2.8.1 + prettier-plugin-packagejson: 2.3.0_prettier@2.8.1 + prettier-plugin-two-style-order: 1.0.1_prettier@2.8.1 + stylelint: 13.13.1 + stylelint-config-css-modules: 2.3.0_stylelint@13.13.1 + stylelint-config-prettier: 8.0.2_stylelint@13.13.1 + stylelint-config-standard: 20.0.0_stylelint@13.13.1 + stylelint-declaration-block-no-ignored-properties: 2.6.0_stylelint@13.13.1 + typescript: 4.9.4 + transitivePeerDependencies: + - postcss-jsx + - postcss-markdown + - supports-color + dev: true + + /@umijs/history/5.3.1: + resolution: {integrity: sha512-/e0cEGrR2bIWQD7pRl3dl9dcyRGeC9hoW0OCvUTT/hjY0EfUrkd6G8ZanVghPMpDuY5usxq9GVcvrT8KNXLWvA==} + dependencies: + '@babel/runtime': 7.18.9 + query-string: 6.14.1 + dev: true + + /@umijs/lint/4.0.35_jig7mdlcju4lt57i33g5qicbgy: + resolution: {integrity: sha512-tqorBkIhQzUpcW6eOeFUmAQ5nltqFjrSSvPXknoKzcJq3//wqzjuQFGru+f/PKWHW6I3iCJqhlfB1iM00F/j4g==} + dependencies: + '@babel/core': 7.18.9 + '@babel/eslint-parser': 7.18.9_hg4qcldqpmcuk4hxtccjaseevy + '@stylelint/postcss-css-in-js': 0.38.0_2kvscvrvsi2imdv3wm7he2jef4 + '@typescript-eslint/eslint-plugin': 5.36.1_ujfdmtdxmqxe4a5dut33px3yhi + '@typescript-eslint/parser': 5.36.1_ha6vam6werchizxrnqvarmz2zu + '@umijs/babel-preset-umi': 4.0.35 + eslint-plugin-jest: 26.1.5_evhtpg37z3oayq2bq7xoh7b4ra + eslint-plugin-react: 7.29.4_eslint@8.29.0 + eslint-plugin-react-hooks: 4.5.0_eslint@8.29.0 + postcss: 8.4.19 + postcss-syntax: 0.36.2_postcss@8.4.19 + stylelint-config-standard: 25.0.0 + transitivePeerDependencies: + - eslint + - jest + - postcss-html + - postcss-jsx + - postcss-less + - postcss-markdown + - postcss-scss + - styled-components + - stylelint + - supports-color + - typescript + dev: true + + /@umijs/lint/4.0.35_p4csibq5ks3vioan4srswcqg5u: + resolution: {integrity: sha512-tqorBkIhQzUpcW6eOeFUmAQ5nltqFjrSSvPXknoKzcJq3//wqzjuQFGru+f/PKWHW6I3iCJqhlfB1iM00F/j4g==} + dependencies: + '@babel/core': 7.18.9 + '@babel/eslint-parser': 7.18.9_bpusarfwcbgnjqmbezm4jkv5ie + '@stylelint/postcss-css-in-js': 0.38.0_2kvscvrvsi2imdv3wm7he2jef4 + '@typescript-eslint/eslint-plugin': 5.36.1_mykkoz4hah6spua56zdzyuayri + '@typescript-eslint/parser': 5.36.1_7xejdone6kwdndpjp5nwx3ofcu + '@umijs/babel-preset-umi': 4.0.35 + eslint-plugin-jest: 26.1.5_c536eslrwm5p6jo75m7x37dlaa + eslint-plugin-react: 7.29.4_eslint@8.15.0 + eslint-plugin-react-hooks: 4.5.0_eslint@8.15.0 + postcss: 8.4.19 + postcss-syntax: 0.36.2_postcss@8.4.19 + stylelint-config-standard: 25.0.0_stylelint@14.8.2 + transitivePeerDependencies: + - eslint + - jest + - postcss-html + - postcss-jsx + - postcss-less + - postcss-markdown + - postcss-scss + - styled-components + - stylelint + - supports-color + - typescript + dev: true + + /@umijs/max-plugin-openapi/2.0.0: + resolution: {integrity: sha512-yLyLvNT5wr8fMaSeSKY5HcS53chCKR8RtQnV8OcYwz4tCpSaWLVA0aRK9L4TkFEHxYf6MebhKrHV96Xeeqyk/Q==} + dependencies: + '@umijs/openapi': 1.8.1 + rimraf: 3.0.2 + serve-static: 1.15.0 + swagger-ui-dist: 4.15.5 + transitivePeerDependencies: + - chokidar + - encoding + - postcss-jsx + - postcss-markdown + - supports-color + dev: true + + /@umijs/max/4.0.35_6f5xgdrvtycvcwlwz2s4cplhka: + resolution: {integrity: sha512-fc00c56J3nlP+5rLJg2aDqnqcDbfKr2o2sxwhKpuXPXZDtHIPDUrUG5HVWDKmJEoEbVLfsmNhPhaoeRyPNw/cA==} + hasBin: true + dependencies: + '@umijs/lint': 4.0.35_p4csibq5ks3vioan4srswcqg5u + '@umijs/plugins': 4.0.35_dx4u7azef3skd24mgiwvchjwe4 + antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + eslint: 8.15.0 + stylelint: 14.8.2 + umi: 4.0.35_b3zq4vnhqh7moefpp7mqr7nqry + transitivePeerDependencies: + - '@babel/core' + - '@babel/helper-module-imports' + - '@babel/types' + - '@types/lodash.merge' + - '@types/react' + - '@types/react-dom' + - '@types/webpack' + - aslemammad-vite-plugin-macro + - babel-plugin-macros + - babel-plugin-styled-components + - debug + - dva + - encoding + - jest + - postcss + - postcss-html + - postcss-jsx + - postcss-less + - postcss-markdown + - postcss-scss + - prettier + - rc-field-form + - react + - react-dom + - react-native + - rollup + - sockjs-client + - styled-components + - supports-color + - type-fest + - typescript + - vite + - vue-template-compiler + - webpack + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: true + + /@umijs/mfsu/4.0.35: + resolution: {integrity: sha512-VaZhH94uuQHdy8z42MgOScPn0yjzLX0PUv1iPLn2xMwZEA6qA5E4rnbHx8bjfzHqjirmEqV6TJfiLQjtV6IVIw==} + dependencies: + '@umijs/bundler-esbuild': 4.0.35 + '@umijs/bundler-utils': 4.0.35 + '@umijs/utils': 4.0.35 + enhanced-resolve: 5.9.3 + is-equal: 1.6.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@umijs/openapi/1.8.1: + resolution: {integrity: sha512-xXOHhAHOJp37PIjJcyK3GQwRo81kyomB+OelSyDlc8Htct0/6tSPaj9OqDuUwg2gd+mGf90CpdssHaesfhPgkQ==} + dependencies: + '@umijs/fabric': 2.14.0 + chalk: 4.1.2 + dayjs: 1.11.7 + glob: 7.2.3 + memoizee: 0.4.15 + mock.js: 0.2.0 + mockjs: 1.1.0 + node-fetch: 2.6.7 + nunjucks: 3.2.3 + openapi3-ts: 2.0.2 + prettier: 2.8.1 + reserved-words: 0.1.2 + rimraf: 3.0.2 + swagger2openapi: 7.0.8 + tiny-pinyin: 1.3.2 + transitivePeerDependencies: + - chokidar + - encoding + - postcss-jsx + - postcss-markdown + - supports-color + dev: true + + /@umijs/plugin-run/4.0.35: + resolution: {integrity: sha512-WPTooocHdB+gBWcLUyB97Oi8VgVvEhrE/wK0Q+tC8AbUWIT+kKgt184gtFn7U1avi2yrf2bR/QyRDy90frizZw==} + dependencies: + tsx: 3.12.1 + dev: true + + /@umijs/plugins/4.0.34_gz5lvdtqfbr75jwfu5jagggsw4: + resolution: {integrity: sha512-6mkqpXUqkaSARUw/P8vveFDKmXtYZXVDzwZsB1QMTxCHWZ3JoqiiN3blIbxvjwRRUGlHRpaHyvqTC1s+y0Va2w==} + dependencies: + '@ahooksjs/use-request': 2.8.15_react@18.2.0 + '@ant-design/antd-theme-variable': 1.0.0 + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-components': 2.3.44_oyfmaw7obiocvtyvu3c64vlxvi + '@umijs/bundler-utils': 4.0.34 + '@umijs/valtio': 1.0.2_react@18.2.0 + antd-dayjs-webpack-plugin: 1.0.6_dayjs@1.11.7 + axios: 0.27.2 + babel-plugin-import: 1.13.5 + dayjs: 1.11.7 + dva-core: 2.0.4_redux@4.2.0 + dva-immer: 1.0.0 + dva-loading: 3.0.22_dva-core@2.0.4 + event-emitter: 0.3.5 + fast-deep-equal: 3.1.3 + intl: 1.2.5 + lodash: 4.17.21 + moment: 2.29.4 + qiankun: 2.8.4 + react-intl: 3.12.1_react@18.2.0 + react-redux: 8.0.5_x3na3lw4ol2i5xbh2dqwzqy74u + redux: 4.2.0 + warning: 4.0.3 + transitivePeerDependencies: + - '@babel/helper-module-imports' + - '@babel/types' + - '@types/lodash.merge' + - '@types/react' + - '@types/react-dom' + - antd + - aslemammad-vite-plugin-macro + - babel-plugin-macros + - debug + - dva + - rc-field-form + - react + - react-dom + - react-native + - supports-color + - vite + dev: true + + /@umijs/plugins/4.0.35_dx4u7azef3skd24mgiwvchjwe4: + resolution: {integrity: sha512-+Abxf9fKmjDdV+ZPpSXDiR5OnNvMflYQopkQVPs21r58maF6gNwtjcQHCEewWyG+mTgnX6f4RBxXyJBg/V3evw==} + dependencies: + '@ahooksjs/use-request': 2.8.15_react@18.2.0 + '@ant-design/antd-theme-variable': 1.0.0 + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-components': 2.3.44_64eqgvq3haz2hl2tk2jtpjblg4 + '@umijs/bundler-utils': 4.0.35 + '@umijs/valtio': 1.0.2_react@18.2.0 + antd-dayjs-webpack-plugin: 1.0.6_dayjs@1.11.7 + axios: 0.27.2 + babel-plugin-import: 1.13.5 + dayjs: 1.11.7 + dva-core: 2.0.4_redux@4.2.0 + dva-immer: 1.0.0 + dva-loading: 3.0.22_dva-core@2.0.4 + event-emitter: 0.3.5 + fast-deep-equal: 3.1.3 + intl: 1.2.5 + lodash: 4.17.21 + moment: 2.29.4 + qiankun: 2.8.4 + react-intl: 3.12.1_react@18.2.0 + react-redux: 8.0.5_x3na3lw4ol2i5xbh2dqwzqy74u + redux: 4.2.0 + styled-components: 6.0.0-beta.6_biqbaboplfbrettd7655fr4n2y + warning: 4.0.3 + transitivePeerDependencies: + - '@babel/helper-module-imports' + - '@babel/types' + - '@types/lodash.merge' + - '@types/react' + - '@types/react-dom' + - antd + - aslemammad-vite-plugin-macro + - babel-plugin-macros + - babel-plugin-styled-components + - debug + - dva + - rc-field-form + - react + - react-dom + - react-native + - supports-color + - vite + dev: true + + /@umijs/plugins/4.0.35_gz5lvdtqfbr75jwfu5jagggsw4: + resolution: {integrity: sha512-+Abxf9fKmjDdV+ZPpSXDiR5OnNvMflYQopkQVPs21r58maF6gNwtjcQHCEewWyG+mTgnX6f4RBxXyJBg/V3evw==} + dependencies: + '@ahooksjs/use-request': 2.8.15_react@18.2.0 + '@ant-design/antd-theme-variable': 1.0.0 + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-components': 2.3.44_oyfmaw7obiocvtyvu3c64vlxvi + '@umijs/bundler-utils': 4.0.35 + '@umijs/valtio': 1.0.2_react@18.2.0 + antd-dayjs-webpack-plugin: 1.0.6_dayjs@1.11.7 + axios: 0.27.2 + babel-plugin-import: 1.13.5 + dayjs: 1.11.7 + dva-core: 2.0.4_redux@4.2.0 + dva-immer: 1.0.0 + dva-loading: 3.0.22_dva-core@2.0.4 + event-emitter: 0.3.5 + fast-deep-equal: 3.1.3 + intl: 1.2.5 + lodash: 4.17.21 + moment: 2.29.4 + qiankun: 2.8.4 + react-intl: 3.12.1_react@18.2.0 + react-redux: 8.0.5_x3na3lw4ol2i5xbh2dqwzqy74u + redux: 4.2.0 + styled-components: 6.0.0-beta.6_biqbaboplfbrettd7655fr4n2y + warning: 4.0.3 + transitivePeerDependencies: + - '@babel/helper-module-imports' + - '@babel/types' + - '@types/lodash.merge' + - '@types/react' + - '@types/react-dom' + - antd + - aslemammad-vite-plugin-macro + - babel-plugin-macros + - babel-plugin-styled-components + - debug + - dva + - rc-field-form + - react + - react-dom + - react-native + - supports-color + - vite + dev: true + + /@umijs/preset-umi/4.0.35_wuwhjehtb3nhae7urou2zggzfe: + resolution: {integrity: sha512-+BQNP2zNlhG9HzQxVJGEhadelVuCBj6jRV6xZgjBrRHzbZZdp2SwBfiMCRnnhZqhMllcqM7Slr2ecm1RJa1hdA==} + dependencies: + '@umijs/ast': 4.0.35 + '@umijs/babel-preset-umi': 4.0.35 + '@umijs/bundler-utils': 4.0.35 + '@umijs/bundler-vite': 4.0.35 + '@umijs/bundler-webpack': 4.0.35_typescript@4.9.4 + '@umijs/core': 4.0.35 + '@umijs/did-you-know': 1.0.1 + '@umijs/history': 5.3.1 + '@umijs/mfsu': 4.0.35 + '@umijs/plugin-run': 4.0.35 + '@umijs/renderer-react': 4.0.35_ef5jwxihqo6n7gxfmzogljlgcm + '@umijs/server': 4.0.35 + '@umijs/utils': 4.0.35 + babel-plugin-dynamic-import-node: 2.3.3 + click-to-react-component: 1.0.8_bynveq746y3g6trbvbqtemqkhe + core-js: 3.22.4 + current-script-polyfill: 1.0.0 + enhanced-resolve: 5.9.3 + fast-glob: 3.2.12 + html-webpack-plugin: 5.5.0 + magic-string: 0.26.2 + path-to-regexp: 1.7.0 + postcss-prefix-selector: 1.16.0 + react: 18.1.0 + react-dom: 18.1.0_react@18.1.0 + react-router: 6.3.0_react@18.1.0 + react-router-dom: 6.3.0_ef5jwxihqo6n7gxfmzogljlgcm + regenerator-runtime: 0.13.9 + transitivePeerDependencies: + - '@types/react' + - '@types/webpack' + - postcss + - rollup + - sockjs-client + - styled-components + - supports-color + - type-fest + - typescript + - vue-template-compiler + - webpack + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: true + + /@umijs/renderer-react/4.0.35_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-HUprkKGKvsygVcbiFogd3OB4sDxA3pGPd+HfQD7TXZWA46dE49GBRDVclAmH2/AuR9tzTydeLjR6vvL2eX+KdA==} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + '@babel/runtime': 7.18.9 + '@loadable/component': 5.15.2_react@18.2.0 + history: 5.3.0 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-helmet-async: 1.3.0_biqbaboplfbrettd7655fr4n2y + react-router-dom: 6.3.0_biqbaboplfbrettd7655fr4n2y + dev: true + + /@umijs/renderer-react/4.0.35_ef5jwxihqo6n7gxfmzogljlgcm: + resolution: {integrity: sha512-HUprkKGKvsygVcbiFogd3OB4sDxA3pGPd+HfQD7TXZWA46dE49GBRDVclAmH2/AuR9tzTydeLjR6vvL2eX+KdA==} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + '@babel/runtime': 7.18.9 + '@loadable/component': 5.15.2_react@18.1.0 + history: 5.3.0 + react: 18.1.0 + react-dom: 18.1.0_react@18.1.0 + react-helmet-async: 1.3.0_ef5jwxihqo6n7gxfmzogljlgcm + react-router-dom: 6.3.0_ef5jwxihqo6n7gxfmzogljlgcm + dev: true + + /@umijs/request-record/1.1.2: + resolution: {integrity: sha512-PFwaIn/D/ZbDacWkeRF7/uVpysxrVKCVnwdutxz+FY8KHw/S5M5BcwRu7qfJFC3xDSJLDtaL48IHVMe9djN1Tw==} + peerDependencies: + umi: '>=3' + dependencies: + chokidar: 3.5.3 + express: 4.18.2 + lodash: 4.17.21 + prettier: 2.8.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@umijs/route-utils/2.2.2: + resolution: {integrity: sha512-cMk6qizy0pfpiwpVCvNQB0BKBUJEH33pDv5q5k2tSleSDw2abkJkTu2Kd5hKzoESLuFK43oGeOfcplZqm2bRxw==} + dependencies: + '@qixian.cs/path-to-regexp': 6.1.0 + fast-deep-equal: 3.1.3 + lodash.isequal: 4.5.0 + memoize-one: 5.2.1 + + /@umijs/server/4.0.35: + resolution: {integrity: sha512-lMtR0F+MuK//wXD1pF1Ay7fVud9ujauPx61u8a2oULCt4N3uRKpzWd6Hmx/SIPzf5MFxnN/ZHSlzMpLv+5xgMA==} + dependencies: + '@umijs/bundler-utils': 4.0.35 + history: 5.3.0 + react: 18.1.0 + react-dom: 18.1.0_react@18.1.0 + react-router-dom: 6.3.0_ef5jwxihqo6n7gxfmzogljlgcm + transitivePeerDependencies: + - supports-color + dev: true + + /@umijs/test/4.0.35: + resolution: {integrity: sha512-ynYP+WIoc7ZzNaaeLLa/TOqSb7W8kj28ca1Lc8l+BWq2QnNdC2BFW9hRF3vCIU53GULVFBxMKwuTeSyHRk3kYA==} + dependencies: + '@babel/plugin-transform-modules-commonjs': 7.18.6 + '@jest/types': 27.5.1 + '@umijs/bundler-utils': 4.0.35 + babel-jest: 28.1.3 + esbuild: 0.15.18 + identity-obj-proxy: 3.0.0 + isomorphic-unfetch: 3.1.0 + transitivePeerDependencies: + - '@babel/core' + - encoding + - supports-color + dev: true + + /@umijs/use-params/1.0.9_react@18.2.0: + resolution: {integrity: sha512-QlN0RJSBVQBwLRNxbxjQ5qzqYIGn+K7USppMoIOVlf7fxXHsnQZ2bEsa6Pm74bt6DVQxpUE8HqvdStn6Y9FV1w==} + peerDependencies: + react: '*' + dependencies: + react: 18.2.0 + + /@umijs/utils/4.0.34: + resolution: {integrity: sha512-QYDsKkWET7YvecGrJ4La9CAqkEQin1KQsdmEldzbnbIsUZQy/I/XuGVMMnTYpiwW92klkkAc8K8AYwI4DQlHCQ==} + dependencies: + chokidar: 3.5.3 + pino: 7.11.0 + dev: true + + /@umijs/utils/4.0.35: + resolution: {integrity: sha512-g514zWimeyHwJtsLbrIx6WE+oR1cllchPnoQduUA8VYoTmm7+SCnCjCAj9pwgGTKo6OOb9GtRYKdGSqUsbRaBQ==} + dependencies: + chokidar: 3.5.3 + pino: 7.11.0 + dev: true + + /@umijs/valtio/1.0.2_react@18.2.0: + resolution: {integrity: sha512-+nCwcLQZhA4CaOahuiWDC+C0m1lPXb8APkdl4ecD6SQm+dd/DUWi0zSsm7vMeQZl2dDa61N/xCly/wSRRc19KQ==} + dependencies: + valtio: 1.7.0_react@18.2.0 + transitivePeerDependencies: + - '@babel/helper-module-imports' + - '@babel/types' + - aslemammad-vite-plugin-macro + - babel-plugin-macros + - react + - vite + dev: true + + /@vitejs/plugin-react/1.2.0: + resolution: {integrity: sha512-Rywwt0IXXg6yQ0hv3cMT3mtdDcGIw31mGaa+MMMAT651LhoXLF2yFy4LrakiTs7UKs7RPBo9eNgaS8pgl2A6Qw==} + engines: {node: '>=12.0.0'} + dependencies: + '@babel/core': 7.20.5 + '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.20.5 + '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.5 + '@rollup/pluginutils': 4.2.1 + react-refresh: 0.11.0 + resolve: 1.22.1 + transitivePeerDependencies: + - supports-color + dev: true + + /a-sync-waterfall/1.0.1: + resolution: {integrity: sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==} + dev: true + + /abab/2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + dev: true + + /accepts/1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + dev: true + + /acorn-globals/7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + dependencies: + acorn: 8.8.1 + acorn-walk: 8.2.0 + dev: true + + /acorn-jsx/5.3.2_acorn@7.4.1: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 7.4.1 + dev: true + + /acorn-jsx/5.3.2_acorn@8.8.1: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.1 + + /acorn-walk/8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn/7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /acorn/8.8.1: + resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} + engines: {node: '>=0.4.0'} + hasBin: true + + /add-dom-event-listener/1.1.0: + resolution: {integrity: sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw==} + dependencies: + object-assign: 4.1.1 + + /address/1.2.1: + resolution: {integrity: sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==} + engines: {node: '>= 10.0.0'} + dev: false + + /agent-base/4.3.0: + resolution: {integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==} + engines: {node: '>= 4.0.0'} + dependencies: + es6-promisify: 5.0.0 + dev: true + + /agent-base/6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /aggregate-error/3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + dev: true + + /ahooks-v3-count/1.0.0: + resolution: {integrity: sha512-V7uUvAwnimu6eh/PED4mCDjE7tokeZQLKlxg9lCTMPhN+NjsSbtdacByVlR1oluXQzD3MOw55wylDmQo4+S9ZQ==} + dev: true + + /ahooks/3.7.2_react@18.2.0: + resolution: {integrity: sha512-nJPsQJcmJnGaNXiqgZdfO7UMs+o926LQg6VyDYt2vzKhXU8Ze/U87NsA/FeIvlIZB0rQr/j7uotFb1bGPp627A==} + engines: {node: '>=8.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@types/js-cookie': 2.2.7 + ahooks-v3-count: 1.0.0 + dayjs: 1.11.7 + intersection-observer: 0.12.2 + js-cookie: 2.2.1 + lodash: 4.17.21 + react: 18.2.0 + resize-observer-polyfill: 1.5.1 + screenfull: 5.2.0 + dev: true + + /ajv-keywords/3.5.2_ajv@6.12.6: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + dependencies: + ajv: 6.12.6 + + /ajv/6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + /ajv/8.11.2: + resolution: {integrity: sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ansi-colors/4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true + + /ansi-escapes/4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.21.3 + dev: true + + /ansi-html-community/0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + dev: true + + /ansi-regex/5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + /ansi-styles/3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + + /ansi-styles/4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /ansi-styles/5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /antd-dayjs-webpack-plugin/1.0.6_dayjs@1.11.7: + resolution: {integrity: sha512-UlK3BfA0iE2c5+Zz/Bd2iPAkT6cICtrKG4/swSik5MZweBHtgmu1aUQCHvICdiv39EAShdZy/edfP6mlkS/xXg==} + peerDependencies: + dayjs: '*' + dependencies: + dayjs: 1.11.7 + dev: true + + /antd-mobile-alita/2.3.4_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-MlCFwuXQRAzifBEuhari4Jf9nbvsiyrm7HJvoGVMkjXKXk8PaaTJL6hTo7UwI3uD/CFeTxhW9X27Z8sd65J4fw==} + dependencies: + array-tree-filter: 2.1.0 + babel-runtime: 6.26.0 + classnames: 2.3.2 + normalize.css: 7.0.0 + rc-checkbox: 2.0.3 + rc-collapse: 1.9.3_biqbaboplfbrettd7655fr4n2y + rc-slider: 8.2.0_biqbaboplfbrettd7655fr4n2y + rc-swipeout: 2.0.11 + rmc-calendar: 1.1.4_biqbaboplfbrettd7655fr4n2y + rmc-cascader: 5.0.3_biqbaboplfbrettd7655fr4n2y + rmc-date-picker: 6.0.10_biqbaboplfbrettd7655fr4n2y + rmc-dialog: 1.1.1_biqbaboplfbrettd7655fr4n2y + rmc-drawer: 0.4.11 + rmc-feedback: 2.0.0 + rmc-input-number: 1.0.5 + rmc-list-view: 0.11.5 + rmc-notification: 1.0.0_biqbaboplfbrettd7655fr4n2y + rmc-nuka-carousel: 3.0.1 + rmc-picker: 5.0.10_biqbaboplfbrettd7655fr4n2y + rmc-pull-to-refresh: 1.0.13 + rmc-steps: 1.0.1 + rmc-tabs: 1.2.29 + rmc-tooltip: 1.0.1_biqbaboplfbrettd7655fr4n2y + transitivePeerDependencies: + - react + - react-dom + dev: true + + /antd-mobile-icons/0.2.2: + resolution: {integrity: sha512-iquIc7EsQTndk5nMv9pQQv+/OY5YnjVIPhtCFo7W7JL+Gjqzq/YJ/HO2WxUxyCgYha2NsTTNAb2vPa/M4zAi2g==} + dev: true + + /antd/4.24.5_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-1dgDd6OqVP0OGNenNm6bPppYsCO1wkT4SFLcpS/QiiiVZQoDCErQYvEH0ULmPWAEler1Brzal260wwpm0uPeeg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/colors': 6.0.0 + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/react-slick': 0.29.2_react@18.2.0 + '@babel/runtime': 7.20.6 + '@ctrl/tinycolor': 3.5.0 + classnames: 2.3.2 + copy-to-clipboard: 3.3.3 + lodash: 4.17.21 + moment: 2.29.4 + rc-cascader: 3.7.0_biqbaboplfbrettd7655fr4n2y + rc-checkbox: 2.3.2_biqbaboplfbrettd7655fr4n2y + rc-collapse: 3.4.2_biqbaboplfbrettd7655fr4n2y + rc-dialog: 9.0.2_biqbaboplfbrettd7655fr4n2y + rc-drawer: 6.0.1_biqbaboplfbrettd7655fr4n2y + rc-dropdown: 4.0.1_biqbaboplfbrettd7655fr4n2y + rc-field-form: 1.27.3_biqbaboplfbrettd7655fr4n2y + rc-image: 5.12.1_biqbaboplfbrettd7655fr4n2y + rc-input: 0.1.4_biqbaboplfbrettd7655fr4n2y + rc-input-number: 7.3.11_biqbaboplfbrettd7655fr4n2y + rc-mentions: 1.13.1_biqbaboplfbrettd7655fr4n2y + rc-menu: 9.8.1_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-notification: 4.6.1_biqbaboplfbrettd7655fr4n2y + rc-pagination: 3.2.0_biqbaboplfbrettd7655fr4n2y + rc-picker: 2.7.0_biqbaboplfbrettd7655fr4n2y + rc-progress: 3.4.1_biqbaboplfbrettd7655fr4n2y + rc-rate: 2.9.2_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-segmented: 2.1.0_biqbaboplfbrettd7655fr4n2y + rc-select: 14.1.16_biqbaboplfbrettd7655fr4n2y + rc-slider: 10.0.1_biqbaboplfbrettd7655fr4n2y + rc-steps: 5.0.0_biqbaboplfbrettd7655fr4n2y + rc-switch: 3.2.2_biqbaboplfbrettd7655fr4n2y + rc-table: 7.26.0_biqbaboplfbrettd7655fr4n2y + rc-tabs: 12.4.2_biqbaboplfbrettd7655fr4n2y + rc-textarea: 0.4.7_biqbaboplfbrettd7655fr4n2y + rc-tooltip: 5.2.2_biqbaboplfbrettd7655fr4n2y + rc-tree: 5.7.2_biqbaboplfbrettd7655fr4n2y + rc-tree-select: 5.5.5_biqbaboplfbrettd7655fr4n2y + rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y + rc-upload: 4.3.4_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + scroll-into-view-if-needed: 2.2.31 + dev: true + + /antd/5.0.4_jb42yyeu5qxbfieyxjks6malva: + resolution: {integrity: sha512-SbMmMTpenY8OfNABJl9/xEGhLP+2mQBbFxelT8ySFb7BR6KwsaVbz6BJOaBWmHBwNq86gXQWJtouQ9Znb6p0RA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/colors': 6.0.0 + '@ant-design/cssinjs': 1.1.1_biqbaboplfbrettd7655fr4n2y + '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/react-slick': 0.29.2_react@18.2.0 + '@babel/runtime': 7.20.6 + '@ctrl/tinycolor': 3.5.0 + '@rc-component/tour': 1.0.2_biqbaboplfbrettd7655fr4n2y + classnames: 2.3.2 + copy-to-clipboard: 3.3.3 + dayjs: 1.11.7 + lodash: 4.17.21 + rc-cascader: 3.7.0_biqbaboplfbrettd7655fr4n2y + rc-checkbox: 2.3.2_biqbaboplfbrettd7655fr4n2y + rc-collapse: 3.4.2_biqbaboplfbrettd7655fr4n2y + rc-dialog: 9.0.2_biqbaboplfbrettd7655fr4n2y + rc-drawer: 6.0.1_biqbaboplfbrettd7655fr4n2y + rc-dropdown: 4.0.1_biqbaboplfbrettd7655fr4n2y + rc-field-form: 1.27.3_biqbaboplfbrettd7655fr4n2y + rc-image: 5.12.1_biqbaboplfbrettd7655fr4n2y + rc-input: 0.1.4_biqbaboplfbrettd7655fr4n2y + rc-input-number: 7.4.0_biqbaboplfbrettd7655fr4n2y + rc-mentions: 1.13.1_biqbaboplfbrettd7655fr4n2y + rc-menu: 9.8.1_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-notification: 5.0.0-alpha.9_biqbaboplfbrettd7655fr4n2y + rc-pagination: 3.2.0_biqbaboplfbrettd7655fr4n2y + rc-picker: 3.1.2_lejchghvacj3hhjkogy3eaalky + rc-progress: 3.4.1_biqbaboplfbrettd7655fr4n2y + rc-rate: 2.9.2_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-segmented: 2.1.0_biqbaboplfbrettd7655fr4n2y + rc-select: 14.1.16_biqbaboplfbrettd7655fr4n2y + rc-slider: 10.0.1_biqbaboplfbrettd7655fr4n2y + rc-steps: 6.0.0-alpha.2_biqbaboplfbrettd7655fr4n2y + rc-switch: 4.0.0_biqbaboplfbrettd7655fr4n2y + rc-table: 7.26.0_biqbaboplfbrettd7655fr4n2y + rc-tabs: 12.4.2_biqbaboplfbrettd7655fr4n2y + rc-textarea: 0.4.7_biqbaboplfbrettd7655fr4n2y + rc-tooltip: 5.2.2_biqbaboplfbrettd7655fr4n2y + rc-tree: 5.7.2_biqbaboplfbrettd7655fr4n2y + rc-tree-select: 5.5.5_biqbaboplfbrettd7655fr4n2y + rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y + rc-upload: 4.3.4_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + scroll-into-view-if-needed: 2.2.31 + shallowequal: 1.1.0 + transitivePeerDependencies: + - date-fns + - moment + + /anymatch/3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + /arg/4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + dev: true + + /argparse/1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + dev: true + + /argparse/2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + /aria-hidden/1.2.2_nik5kfrnrsctffq6o6vr6ceura: + resolution: {integrity: sha512-6y/ogyDTk/7YAe91T3E2PR1ALVKyM2QbTio5HwM+N1Q6CMlCKhvClyIjkckBswa0f2xJhjsfzIGa1yVSe1UMVA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.9.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 17.0.52 + react: 18.1.0 + tslib: 2.4.1 + dev: true + + /aria-query/5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + dependencies: + deep-equal: 2.1.0 + dev: true + + /array-flatten/1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: true + + /array-includes/3.1.6: + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.5 + get-intrinsic: 1.1.3 + is-string: 1.0.7 + dev: true + + /array-tree-filter/2.1.0: + resolution: {integrity: sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==} + + /array-union/1.0.2: + resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==} + engines: {node: '>=0.10.0'} + dependencies: + array-uniq: 1.0.3 + dev: true + + /array-union/2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + /array-uniq/1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + dev: true + + /array.prototype.flatmap/1.3.1: + resolution: {integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.5 + es-shim-unscopables: 1.0.0 + dev: true + + /array.prototype.tosorted/1.1.1: + resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.5 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.1.3 + dev: true + + /arrify/1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + dev: true + + /asap/1.0.0: + resolution: {integrity: sha512-Ej9qjcXY+8Tuy1cNqiwNMwFRXOy9UwgTeMA8LxreodygIPV48lx8PU1ecFxb5ZeU1DpMKxiq6vGLTxcitWZPbA==} + dev: true + + /asap/2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: true + + /asn1.js/5.4.1: + resolution: {integrity: sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==} + dependencies: + bn.js: 4.12.0 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + safer-buffer: 2.1.2 + dev: true + + /asn1/0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /assert-plus/1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + dev: true + + /assert/1.5.0: + resolution: {integrity: sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==} + dependencies: + object-assign: 4.1.1 + util: 0.10.3 + dev: true + + /astral-regex/2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + dev: true + + /async-limiter/1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + dev: true + + /async-validator/4.2.5: + resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} + + /async/2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + dependencies: + lodash: 4.17.21 + dev: true + + /asynckit/0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /at-least-node/1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: false + + /atomic-sleep/1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + dev: true + + /autoprefixer/10.4.13: + resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.4 + caniuse-lite: 1.0.30001436 + fraction.js: 4.2.0 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss-value-parser: 4.2.0 + dev: true + + /autoprefixer/10.4.13_postcss@8.4.19: + resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.4 + caniuse-lite: 1.0.30001436 + fraction.js: 4.2.0 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /autoprefixer/9.8.8: + resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==} + hasBin: true + dependencies: + browserslist: 4.21.4 + caniuse-lite: 1.0.30001436 + normalize-range: 0.1.2 + num2fraction: 1.2.2 + picocolors: 0.2.1 + postcss: 7.0.39 + postcss-value-parser: 4.2.0 + dev: true + + /available-typed-arrays/1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true + + /aws-sign2/0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + dev: true + + /aws4/1.11.0: + resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} + dev: true + + /axios/0.27.2: + resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} + dependencies: + follow-redirects: 1.15.2 + form-data: 4.0.0 + transitivePeerDependencies: + - debug + dev: true + + /babel-jest/28.1.3: + resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@jest/transform': 28.1.3 + '@types/babel__core': 7.1.20 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 28.1.3 + chalk: 4.1.2 + graceful-fs: 4.2.10 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-jest/29.3.1_@babel+core@7.20.5: + resolution: {integrity: sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.20.5 + '@jest/transform': 29.3.1 + '@types/babel__core': 7.1.20 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.2.0_@babel+core@7.20.5 + chalk: 4.1.2 + graceful-fs: 4.2.10 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-dynamic-import-node/2.3.3: + resolution: {integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==} + dependencies: + object.assign: 4.1.4 + dev: true + + /babel-plugin-import/1.13.5: + resolution: {integrity: sha512-IkqnoV+ov1hdJVofly9pXRJmeDm9EtROfrc5i6eII0Hix2xMs5FEm8FG3ExMvazbnZBbgHIt6qdO8And6lCloQ==} + dependencies: + '@babel/helper-module-imports': 7.18.6 + dev: true + + /babel-plugin-istanbul/6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + dependencies: + '@babel/helper-plugin-utils': 7.20.2 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-jest-hoist/28.1.3: + resolution: {integrity: sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@babel/template': 7.18.10 + '@babel/types': 7.20.5 + '@types/babel__core': 7.1.20 + '@types/babel__traverse': 7.18.3 + dev: true + + /babel-plugin-jest-hoist/29.2.0: + resolution: {integrity: sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.18.10 + '@babel/types': 7.20.5 + '@types/babel__core': 7.1.20 + '@types/babel__traverse': 7.18.3 + dev: true + + /babel-plugin-macros/3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + dependencies: + '@babel/runtime': 7.20.6 + cosmiconfig: 7.1.0 + resolve: 1.22.1 + dev: false + + /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.20.5: + resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.20.5 + '@babel/core': 7.20.5 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.5 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.20.5: + resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.5 + core-js-compat: 3.26.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.20.5: + resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.20.5 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.5 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-styled-components/2.0.7: + resolution: {integrity: sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==} + peerDependencies: + styled-components: '>= 2' + dependencies: + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.18.6 + babel-plugin-syntax-jsx: 6.18.0 + lodash: 4.17.21 + picomatch: 2.3.1 + dev: true + + /babel-plugin-syntax-jsx/6.18.0: + resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} + dev: true + + /babel-preset-current-node-syntax/1.0.1: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/plugin-syntax-async-generators': 7.8.4 + '@babel/plugin-syntax-bigint': 7.8.3 + '@babel/plugin-syntax-class-properties': 7.12.13 + '@babel/plugin-syntax-import-meta': 7.10.4 + '@babel/plugin-syntax-json-strings': 7.8.3 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3 + '@babel/plugin-syntax-numeric-separator': 7.10.4 + '@babel/plugin-syntax-object-rest-spread': 7.8.3 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3 + '@babel/plugin-syntax-optional-chaining': 7.8.3 + '@babel/plugin-syntax-top-level-await': 7.14.5 + dev: true + + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.20.5: + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.5 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.5 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.5 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.20.5 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.5 + dev: true + + /babel-preset-jest/28.1.3: + resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + babel-plugin-jest-hoist: 28.1.3 + babel-preset-current-node-syntax: 1.0.1 + dev: true + + /babel-preset-jest/29.2.0_@babel+core@7.20.5: + resolution: {integrity: sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.5 + babel-plugin-jest-hoist: 29.2.0 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.5 + dev: true + + /babel-runtime-jsx-plus/0.1.5: + resolution: {integrity: sha512-5qjZDfUzZGxHgX8o0tkS9o0HbyBvnUuaAtqHC9IN5CgjWFGJBg6a0Xp31wiG7btiHV0dP5t1t8cthlTCYwtnig==} + dev: true + + /babel-runtime/6.26.0: + resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} + dependencies: + core-js: 2.6.12 + regenerator-runtime: 0.11.1 + dev: true + + /babel-types/6.26.0: + resolution: {integrity: sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==} + dependencies: + babel-runtime: 6.26.0 + esutils: 2.0.3 + lodash: 4.17.21 + to-fast-properties: 1.0.3 + dev: true + + /bail/1.0.5: + resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==} + dev: true + + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /balanced-match/2.0.0: + resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + dev: true + + /base64-js/1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: true + + /bcrypt-pbkdf/1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + dependencies: + tweetnacl: 0.14.5 + dev: true + + /big.js/5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + + /binary-extensions/2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + + /bl/4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + + /blink-diff/1.0.13: + resolution: {integrity: sha512-2hIEnGq8wruXfje9GvDV41VXo+4YdjrjL5ZMlVJT3Wi5k1jjz20fCTlVejSXoERirhEVsFYz9NmgdUYgQ41Giw==} + hasBin: true + dependencies: + pngjs-image: 0.11.7 + preceptor-core: 0.10.1 + promise: 6.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /bn.js/4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + dev: true + + /bn.js/5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + dev: true + + /body-parser/1.20.1: + resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dependencies: + bytes: 3.1.2 + content-type: 1.0.4 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.1 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /boolbase/1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /braces/3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + + /brorand/1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + dev: true + + /browserify-aes/1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-cipher/1.0.1: + resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} + dependencies: + browserify-aes: 1.2.0 + browserify-des: 1.0.2 + evp_bytestokey: 1.0.3 + dev: true + + /browserify-des/1.0.2: + resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} + dependencies: + cipher-base: 1.0.4 + des.js: 1.0.1 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /browserify-rsa/4.1.0: + resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} + dependencies: + bn.js: 5.2.1 + randombytes: 2.1.0 + dev: true + + /browserify-sign/4.2.1: + resolution: {integrity: sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==} + dependencies: + bn.js: 5.2.1 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + create-hmac: 1.1.7 + elliptic: 6.5.4 + inherits: 2.0.4 + parse-asn1: 5.1.6 + readable-stream: 3.6.0 + safe-buffer: 5.2.1 + dev: true + + /browserify-zlib/0.2.0: + resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} + dependencies: + pako: 1.0.11 + dev: true + + /browserslist/4.21.4: + resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001436 + electron-to-chromium: 1.4.284 + node-releases: 2.0.6 + update-browserslist-db: 1.0.10_browserslist@4.21.4 + + /bser/2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + dev: true + + /buffer-crc32/0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: true + + /buffer-from/1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /buffer-xor/1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + dev: true + + /buffer/4.9.2: + resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + isarray: 1.0.0 + dev: true + + /buffer/5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /builtin-status-codes/3.0.0: + resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + dev: true + + /bytes/3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: true + + /call-bind/1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.1.3 + dev: true + + /call-me-maybe/1.0.2: + resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} + dev: true + + /callsites/3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + /camel-case/4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + dependencies: + pascal-case: 3.1.2 + tslib: 2.4.1 + dev: true + + /camelcase-keys/6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + dev: true + + /camelcase/5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /camelcase/6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + dev: true + + /camelize/1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} + dev: true + + /caniuse-lite/1.0.30001436: + resolution: {integrity: sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg==} + + /carlo/0.9.46: + resolution: {integrity: sha512-FwZ/wxjqe+5RgzF2SRsPSWsVB9+McAVRWW0tRkmbh7fBjrf3HFZZbcr8vr61p1K+NBaAPv57DRjxgIyfbHmd7g==} + engines: {node: '>=7.6.0'} + dependencies: + debug: 4.3.4 + puppeteer-core: 1.12.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /caseless/0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + dev: true + + /chalk/2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + /chalk/4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /char-regex/1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + dev: true + + /character-entities-legacy/1.1.4: + resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} + dev: true + + /character-entities/1.2.4: + resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} + dev: true + + /character-reference-invalid/1.1.4: + resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} + dev: true + + /chokidar/3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + + /ci-info/2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + dev: true + + /ci-info/3.7.0: + resolution: {integrity: sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==} + engines: {node: '>=8'} + dev: true + + /cipher-base/1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /cjs-module-lexer/1.2.2: + resolution: {integrity: sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==} + dev: true + + /classnames/2.3.2: + resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} + + /clean-css/5.3.1: + resolution: {integrity: sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==} + engines: {node: '>= 10.0'} + dependencies: + source-map: 0.6.1 + dev: true + + /clean-regexp/1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /clean-stack/2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + dev: true + + /cli-cursor/3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + + /cli-spinners/2.7.0: + resolution: {integrity: sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==} + engines: {node: '>=6'} + dev: true + + /cli-truncate/2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + dev: true + + /click-to-react-component/1.0.8_bynveq746y3g6trbvbqtemqkhe: + resolution: {integrity: sha512-YBNYOp00udy+NBEnUmM/3Df0Yco1iHNQ8k0ltlJVcDYK9AuYt14xPoJicBh/BokLqbzkci1p+pbdY5r4JXZC4g==} + peerDependencies: + react: '>=16.8.0' + dependencies: + '@floating-ui/react-dom-interactions': 0.3.1_bynveq746y3g6trbvbqtemqkhe + htm: 3.1.1 + react: 18.1.0 + react-merge-refs: 1.1.0 + transitivePeerDependencies: + - '@types/react' + - react-dom + dev: true + + /cliui/8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone-regexp/2.2.0: + resolution: {integrity: sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==} + engines: {node: '>=6'} + dependencies: + is-regexp: 2.1.0 + dev: true + + /clone/1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: true + + /co/4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + dev: true + + /collect-v8-coverage/1.0.1: + resolution: {integrity: sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==} + dev: true + + /color-convert/1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + + /color-convert/2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name/1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + /color-name/1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /colord/2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + dev: true + + /colorette/2.0.19: + resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} + dev: true + + /combined-stream/1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /commander/2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + + /commander/4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + + /commander/5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + dev: true + + /commander/6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + dev: true + + /commander/7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: true + + /commander/8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + dev: true + + /commander/9.4.1: + resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} + engines: {node: ^12.20.0 || >=14} + dev: true + + /common-path-prefix/3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + dev: true + + /commondir/1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + dev: true + + /component-classes/1.2.6: + resolution: {integrity: sha512-hPFGULxdwugu1QWW3SvVOCUHLzO34+a2J6Wqy0c5ASQkfi9/8nZcBB0ZohaEbXOQlCflMAEMmEWk7u7BVs4koA==} + dependencies: + component-indexof: 0.0.3 + dev: true + + /component-indexof/0.0.3: + resolution: {integrity: sha512-puDQKvx/64HZXb4hBwIcvQLaLgux8o1CbWl39s41hrIIZDl1lJiD5jc22gj3RBeGK0ovxALDYpIbyjqDUUl0rw==} + dev: true + + /compute-scroll-into-view/1.0.20: + resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} + + /concat-map/0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /concat-stream/1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.7 + typedarray: 0.0.6 + dev: true + + /console-browserify/1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + dev: true + + /constants-browserify/1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + dev: true + + /content-disposition/0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /content-type/1.0.4: + resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} + engines: {node: '>= 0.6'} + dev: true + + /convert-source-map/1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + /convert-source-map/2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /cookie-signature/1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: true + + /cookie/0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + dev: true + + /copy-to-clipboard/3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + dependencies: + toggle-selection: 1.0.6 + + /core-js-compat/3.26.1: + resolution: {integrity: sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==} + dependencies: + browserslist: 4.21.4 + dev: true + + /core-js-pure/3.26.1: + resolution: {integrity: sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ==} + requiresBuild: true + dev: true + + /core-js/1.2.7: + resolution: {integrity: sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + dev: true + + /core-js/2.6.12: + resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + requiresBuild: true + dev: true + + /core-js/3.22.4: + resolution: {integrity: sha512-1uLykR+iOfYja+6Jn/57743gc9n73EWiOnSJJ4ba3B4fOEYDBv25MagmEZBxTp5cWq4b/KPx/l77zgsp28ju4w==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + requiresBuild: true + dev: true + + /core-util-is/1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + dev: true + + /core-util-is/1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: true + + /cors/2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + dev: true + + /cosmiconfig/6.0.0: + resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} + engines: {node: '>=8'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + dev: false + + /cosmiconfig/7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + dependencies: + '@types/parse-json': 4.0.0 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + /create-ecdh/4.0.4: + resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} + dependencies: + bn.js: 4.12.0 + elliptic: 6.5.4 + dev: true + + /create-hash/1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + dev: true + + /create-hmac/1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /create-react-class/15.7.0: + resolution: {integrity: sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + dev: true + + /create-require/1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + dev: true + + /cross-env/7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + dependencies: + cross-spawn: 7.0.3 + dev: true + + /cross-port-killer/1.4.0: + resolution: {integrity: sha512-ujqfftKsSeorFMVI6JP25xMBixHEaDWVK+NarRZAGnJjR5AhebRQU+g+k/Lj8OHwM6f+wrrs8u5kkCdI7RLtxQ==} + hasBin: true + dev: true + + /cross-spawn/7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /crypto-browserify/3.12.0: + resolution: {integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==} + dependencies: + browserify-cipher: 1.0.1 + browserify-sign: 4.2.1 + create-ecdh: 4.0.4 + create-hash: 1.2.0 + create-hmac: 1.1.7 + diffie-hellman: 5.0.3 + inherits: 2.0.4 + pbkdf2: 3.1.2 + public-encrypt: 4.0.3 + randombytes: 2.1.0 + randomfill: 1.0.4 + dev: true + + /css-animation/1.6.1: + resolution: {integrity: sha512-/48+/BaEaHRY6kNQ2OIPzKf9A6g8WjZYjhiNDNuIVbsm5tXCGIAsHDjB4Xu1C4vXJtUWZo26O68OQkDpNBaPog==} + dependencies: + babel-runtime: 6.26.0 + component-classes: 1.2.6 + dev: true + + /css-blank-pseudo/3.0.3: + resolution: {integrity: sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + dependencies: + postcss-selector-parser: 6.0.11 + dev: true + + /css-blank-pseudo/3.0.3_postcss@8.4.19: + resolution: {integrity: sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.19 + postcss-selector-parser: 6.0.11 + dev: true + + /css-color-keywords/1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + dev: true + + /css-functions-list/3.1.0: + resolution: {integrity: sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==} + engines: {node: '>=12.22'} + dev: true + + /css-has-pseudo/3.0.4: + resolution: {integrity: sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + dependencies: + postcss-selector-parser: 6.0.11 + dev: true + + /css-has-pseudo/3.0.4_postcss@8.4.19: + resolution: {integrity: sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.19 + postcss-selector-parser: 6.0.11 + dev: true + + /css-loader/6.7.1: + resolution: {integrity: sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + dependencies: + icss-utils: 5.1.0_postcss@8.4.19 + postcss: 8.4.19 + postcss-modules-extract-imports: 3.0.0_postcss@8.4.19 + postcss-modules-local-by-default: 4.0.0_postcss@8.4.19 + postcss-modules-scope: 3.0.0_postcss@8.4.19 + postcss-modules-values: 4.0.0_postcss@8.4.19 + postcss-value-parser: 4.2.0 + semver: 7.3.8 + dev: true + + /css-prefers-color-scheme/6.0.3: + resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + dev: true + + /css-prefers-color-scheme/6.0.3_postcss@8.4.19: + resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.19 + dev: true + + /css-select/4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + dev: true + + /css-to-react-native/3.0.0: + resolution: {integrity: sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==} + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 4.2.0 + dev: true + + /css-tree/1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + dev: true + + /css-what/6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true + + /cssdb/6.6.3: + resolution: {integrity: sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==} + dev: true + + /cssesc/3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /csso/4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + dependencies: + css-tree: 1.1.3 + dev: true + + /cssom/0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + dev: true + + /cssom/0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + dev: true + + /cssstyle/2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + dependencies: + cssom: 0.3.8 + dev: true + + /csstype/3.1.1: + resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} + + /current-script-polyfill/1.0.0: + resolution: {integrity: sha512-qv8s+G47V6Hq+g2kRE5th+ASzzrL7b6l+tap1DHKK25ZQJv3yIFhH96XaQ7NGL+zRW3t/RDbweJf/dJDe5Z5KA==} + dev: true + + /d/1.0.1: + resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + dependencies: + es5-ext: 0.10.62 + type: 1.2.0 + dev: true + + /dashdash/1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + dependencies: + assert-plus: 1.0.0 + dev: true + + /data-urls/3.0.2: + resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} + engines: {node: '>=12'} + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + dev: true + + /date-fns/2.29.3: + resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} + engines: {node: '>=0.11'} + dev: true + + /date-format/0.0.0: + resolution: {integrity: sha512-kAmAdtsjW5nQ02FERwI1bP4xe6HQBPwy5kpAF4CRSLOMUs/vgMIEEwpy6JqUs7NitTyhZiImxwAjgPpnteycHg==} + deprecated: 0.x is no longer supported. Please upgrade to 4.x or higher. + dev: true + + /dayjs/1.11.7: + resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} + + /debug/0.7.4: + resolution: {integrity: sha512-EohAb3+DSHSGx8carOSKJe8G0ayV5/i609OD0J2orCkuyae7SyZSz2aoLmQF2s0Pj5gITDebwPH7GFBlqOUQ1Q==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dev: true + + /debug/2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + + /debug/3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: true + + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /decamelize-keys/1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + dev: true + + /decamelize/1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /decimal.js/10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: true + + /decode-uri-component/0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + dev: true + + /dedent/0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dev: true + + /deep-equal/2.1.0: + resolution: {integrity: sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA==} + dependencies: + call-bind: 1.0.2 + es-get-iterator: 1.1.2 + get-intrinsic: 1.1.3 + is-arguments: 1.1.1 + is-date-object: 1.0.5 + is-regex: 1.1.4 + isarray: 2.0.5 + object-is: 1.1.5 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.4.3 + side-channel: 1.0.4 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.9 + dev: true + + /deep-is/0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + /deepmerge/4.2.2: + resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + engines: {node: '>=0.10.0'} + + /defaults/1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + dev: true + + /define-lazy-prop/2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + /define-properties/1.1.4: + resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} + engines: {node: '>= 0.4'} + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: true + + /delayed-stream/1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /depd/2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dev: true + + /des.js/1.0.1: + resolution: {integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + + /destroy/1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + dev: true + + /detect-indent/6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true + + /detect-libc/1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + dev: true + + /detect-newline/3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + + /detect-node/2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + dev: true + + /detect-port-alt/1.1.6: + resolution: {integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==} + engines: {node: '>= 4.2.1'} + hasBin: true + dependencies: + address: 1.2.1 + debug: 2.6.9 + transitivePeerDependencies: + - supports-color + dev: false + + /diff-sequences/29.3.1: + resolution: {integrity: sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /diff/4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dev: true + + /diffie-hellman/5.0.3: + resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} + dependencies: + bn.js: 4.12.0 + miller-rabin: 4.0.1 + randombytes: 2.1.0 + dev: true + + /dir-glob/3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + + /doctrine/2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine/3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + + /dom-accessibility-api/0.5.14: + resolution: {integrity: sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==} + dev: true + + /dom-align/1.12.4: + resolution: {integrity: sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==} + + /dom-converter/0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + dependencies: + utila: 0.4.0 + dev: true + + /dom-serializer/0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + dependencies: + domelementtype: 2.3.0 + entities: 2.2.0 + dev: true + + /dom-serializer/1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dev: true + + /dom-walk/0.1.2: + resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==} + dev: true + + /domain-browser/1.2.0: + resolution: {integrity: sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==} + engines: {node: '>=0.4', npm: '>=1.2'} + dev: true + + /domelementtype/1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + dev: true + + /domelementtype/2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true + + /domexception/4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + dependencies: + webidl-conversions: 7.0.0 + dev: true + + /domhandler/2.4.2: + resolution: {integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==} + dependencies: + domelementtype: 1.3.1 + dev: true + + /domhandler/4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domutils/1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + dev: true + + /domutils/2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + dev: true + + /dot-case/3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + dependencies: + no-case: 3.0.4 + tslib: 2.4.1 + dev: true + + /dotenv/8.6.0: + resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + engines: {node: '>=10'} + dev: true + + /duplexer/0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + dev: false + + /duplexify/4.1.2: + resolution: {integrity: sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==} + dependencies: + end-of-stream: 1.4.4 + inherits: 2.0.4 + readable-stream: 3.6.0 + stream-shift: 1.0.1 + dev: true + + /dva-core/2.0.4_redux@4.2.0: + resolution: {integrity: sha512-Zh39llFyItu9HKXKfCZVf9UFtDTcypdAjGBew1S+wK8BGVzFpm1GPTdd6uIMeg7O6STtCvt2Qv+RwUut1GFynA==} + peerDependencies: + redux: 4.x + dependencies: + '@babel/runtime': 7.20.6 + flatten: 1.0.3 + global: 4.4.0 + invariant: 2.2.4 + is-plain-object: 2.0.4 + redux: 4.2.0 + redux-saga: 0.16.2 + warning: 3.0.0 + dev: true + + /dva-immer/1.0.0: + resolution: {integrity: sha512-HKCEXr1Yj4pIPYoWxr0MhDscYQ/FSkIdA6Kgtb7ImhIoIvMrtxaI1KDWxutvOZ28UwfqYYKMjSsx4+xEs+IRSg==} + peerDependencies: + dva: ^2.5.0-0 + dependencies: + '@babel/runtime': 7.20.6 + immer: 8.0.4 + dev: true + + /dva-loading/3.0.22_dva-core@2.0.4: + resolution: {integrity: sha512-WReyAQwW42aimEwkjDLJSu3W4y1WjkOVcqdIY7x1ARrobgkNC3dVfLe4xUgdtHuLfSJzWa55FrdRrVM3b5QwcA==} + peerDependencies: + dva-core: ^1.1.0 | ^1.5.0-0 | ^1.6.0-0 + dependencies: + '@babel/runtime': 7.20.6 + dva-core: 2.0.4_redux@4.2.0 + dev: true + + /ecc-jsbn/0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: true + + /ee-first/1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: true + + /electron-to-chromium/1.4.284: + resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} + + /elliptic/6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + + /email-addresses/3.1.0: + resolution: {integrity: sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==} + dev: true + + /emittery/0.13.1: + resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} + engines: {node: '>=12'} + dev: true + + /emoji-regex/8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emojis-list/3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + /encodeurl/1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: true + + /encoding/0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + dependencies: + iconv-lite: 0.6.3 + dev: true + + /end-of-stream/1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: true + + /enhanced-resolve/5.9.3: + resolution: {integrity: sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.10 + tapable: 2.2.1 + dev: true + + /enquirer/2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.3 + dev: true + + /entities/1.1.2: + resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} + dev: true + + /entities/2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + dev: true + + /entities/4.4.0: + resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} + engines: {node: '>=0.12'} + dev: true + + /error-ex/1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + + /error-stack-parser/2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + dependencies: + stackframe: 1.3.4 + dev: true + + /es-abstract/1.20.5: + resolution: {integrity: sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + es-to-primitive: 1.2.1 + function-bind: 1.1.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.1.3 + get-symbol-description: 1.0.0 + gopd: 1.0.1 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-symbols: 1.0.3 + internal-slot: 1.0.3 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-weakref: 1.0.2 + object-inspect: 1.12.2 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.4.3 + safe-regex-test: 1.0.0 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 + unbox-primitive: 1.0.2 + dev: true + + /es-get-iterator/1.1.2: + resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + has-symbols: 1.0.3 + is-arguments: 1.1.1 + is-map: 2.0.2 + is-set: 2.0.2 + is-string: 1.0.7 + isarray: 2.0.5 + dev: true + + /es-shim-unscopables/1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + dependencies: + has: 1.0.3 + dev: true + + /es-to-primitive/1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /es5-ext/0.10.62: + resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} + engines: {node: '>=0.10'} + requiresBuild: true + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + next-tick: 1.1.0 + dev: true + + /es5-imcompatible-versions/0.1.77: + resolution: {integrity: sha512-PYCZ6CvLzvVOPK4Lgja32PhWUoEJkQ1mWep0xuGtvVzmRAHq2xWHUuQ+jUXsIIAHo6c3Kh+n0z4rKCgBd4CrXA==} + dev: true + + /es6-iterator/2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-symbol: 3.1.3 + dev: true + + /es6-promise/3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + dev: true + + /es6-promise/4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + dev: true + + /es6-promisify/5.0.0: + resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + dependencies: + es6-promise: 4.2.8 + dev: true + + /es6-symbol/3.1.3: + resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} + dependencies: + d: 1.0.1 + ext: 1.7.0 + dev: true + + /es6-weak-map/2.0.3: + resolution: {integrity: sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-iterator: 2.0.3 + es6-symbol: 3.1.3 + dev: true + + /esbuild-android-64/0.15.14: + resolution: {integrity: sha512-HuilVIb4rk9abT4U6bcFdU35UHOzcWVGLSjEmC58OVr96q5UiRqzDtWjPlCMugjhgUGKEs8Zf4ueIvYbOStbIg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-64/0.15.18: + resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-arm64/0.15.14: + resolution: {integrity: sha512-/QnxRVxsR2Vtf3XottAHj7hENAMW2wCs6S+OZcAbc/8nlhbAL/bCQRCVD78VtI5mdwqWkVi3wMqM94kScQCgqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-arm64/0.15.18: + resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-64/0.15.14: + resolution: {integrity: sha512-ToNuf1uifu8hhwWvoZJGCdLIX/1zpo8cOGnT0XAhDQXiKOKYaotVNx7pOVB1f+wHoWwTLInrOmh3EmA7Fd+8Vg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-64/0.15.18: + resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64/0.15.14: + resolution: {integrity: sha512-KgGP+y77GszfYJgceO0Wi/PiRtYo5y2Xo9rhBUpxTPaBgWDJ14gqYN0+NMbu+qC2fykxXaipHxN4Scaj9tUS1A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64/0.15.18: + resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64/0.15.14: + resolution: {integrity: sha512-xr0E2n5lyWw3uFSwwUXHc0EcaBDtsal/iIfLioflHdhAe10KSctV978Te7YsfnsMKzcoGeS366+tqbCXdqDHQA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64/0.15.18: + resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64/0.15.14: + resolution: {integrity: sha512-8XH96sOQ4b1LhMlO10eEWOjEngmZ2oyw3pW4o8kvBcpF6pULr56eeYVP5radtgw54g3T8nKHDHYEI5AItvskZg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64/0.15.18: + resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32/0.15.14: + resolution: {integrity: sha512-6ssnvwaTAi8AzKN8By2V0nS+WF5jTP7SfuK6sStGnDP7MCJo/4zHgM9oE1eQTS2jPmo3D673rckuCzRlig+HMA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32/0.15.18: + resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64/0.15.14: + resolution: {integrity: sha512-ONySx3U0wAJOJuxGUlXBWxVKFVpWv88JEv0NZ6NlHknmDd1yCbf4AEdClSgLrqKQDXYywmw4gYDvdLsS6z0hcw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64/0.15.18: + resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm/0.15.14: + resolution: {integrity: sha512-D2LImAIV3QzL7lHURyCHBkycVFbKwkDb1XEUWan+2fb4qfW7qAeUtul7ZIcIwFKZgPcl+6gKZmvLgPSj26RQ2Q==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm/0.15.18: + resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64/0.15.14: + resolution: {integrity: sha512-kle2Ov6a1e5AjlHlMQl1e+c4myGTeggrRzArQFmWp6O6JoqqB9hT+B28EW4tjFWgV/NxUq46pWYpgaWXsXRPAg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64/0.15.18: + resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le/0.15.14: + resolution: {integrity: sha512-FVdMYIzOLXUq+OE7XYKesuEAqZhmAIV6qOoYahvUp93oXy0MOVTP370ECbPfGXXUdlvc0TNgkJa3YhEwyZ6MRA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le/0.15.18: + resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le/0.15.14: + resolution: {integrity: sha512-2NzH+iuzMDA+jjtPjuIz/OhRDf8tzbQ1tRZJI//aT25o1HKc0reMMXxKIYq/8nSHXiJSnYV4ODzTiv45s+h73w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le/0.15.18: + resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64/0.15.14: + resolution: {integrity: sha512-VqxvutZNlQxmUNS7Ac+aczttLEoHBJ9e3OYGqnULrfipRvG97qLrAv9EUY9iSrRKBqeEbSvS9bSfstZqwz0T4Q==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64/0.15.18: + resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x/0.15.14: + resolution: {integrity: sha512-+KVHEUshX5n6VP6Vp/AKv9fZIl5kr2ph8EUFmQUJnDpHwcfTSn2AQgYYm0HTBR2Mr4d0Wlr0FxF/Cs5pbFgiOw==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x/0.15.18: + resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64/0.15.14: + resolution: {integrity: sha512-6D/dr17piEgevIm1xJfZP2SjB9Z+g8ERhNnBdlZPBWZl+KSPUKLGF13AbvC+nzGh8IxOH2TyTIdRMvKMP0nEzQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64/0.15.18: + resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64/0.15.14: + resolution: {integrity: sha512-rREQBIlMibBetgr2E9Lywt2Qxv2ZdpmYahR4IUlAQ1Efv/A5gYdO0/VIN3iowDbCNTLxp0bb57Vf0LFcffD6kA==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64/0.15.18: + resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64/0.15.14: + resolution: {integrity: sha512-DNVjSp/BY4IfwtdUAvWGIDaIjJXY5KI4uD82+15v6k/w7px9dnaDaJJ2R6Mu+KCgr5oklmFc0KjBjh311Gxl9Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64/0.15.18: + resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32/0.15.14: + resolution: {integrity: sha512-pHBWrcA+/oLgvViuG9FO3kNPO635gkoVrRQwe6ZY1S0jdET07xe2toUvQoJQ8KT3/OkxqUasIty5hpuKFLD+eg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32/0.15.18: + resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64/0.15.14: + resolution: {integrity: sha512-CszIGQVk/P8FOS5UgAH4hKc9zOaFo69fe+k1rqgBHx3CSK3Opyk5lwYriIamaWOVjBt7IwEP6NALz+tkVWdFog==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64/0.15.18: + resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64/0.15.14: + resolution: {integrity: sha512-KW9W4psdZceaS9A7Jsgl4WialOznSURvqX/oHZk3gOP7KbjtHLSsnmSvNdzagGJfxbAe30UVGXRe8q8nDsOSQw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64/0.15.18: + resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild/0.15.14: + resolution: {integrity: sha512-pJN8j42fvWLFWwSMG4luuupl2Me7mxciUOsMegKvwCmhEbJ2covUdFnihxm0FMIBV+cbwbtMoHgMCCI+pj1btQ==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.14 + '@esbuild/linux-loong64': 0.15.14 + esbuild-android-64: 0.15.14 + esbuild-android-arm64: 0.15.14 + esbuild-darwin-64: 0.15.14 + esbuild-darwin-arm64: 0.15.14 + esbuild-freebsd-64: 0.15.14 + esbuild-freebsd-arm64: 0.15.14 + esbuild-linux-32: 0.15.14 + esbuild-linux-64: 0.15.14 + esbuild-linux-arm: 0.15.14 + esbuild-linux-arm64: 0.15.14 + esbuild-linux-mips64le: 0.15.14 + esbuild-linux-ppc64le: 0.15.14 + esbuild-linux-riscv64: 0.15.14 + esbuild-linux-s390x: 0.15.14 + esbuild-netbsd-64: 0.15.14 + esbuild-openbsd-64: 0.15.14 + esbuild-sunos-64: 0.15.14 + esbuild-windows-32: 0.15.14 + esbuild-windows-64: 0.15.14 + esbuild-windows-arm64: 0.15.14 + dev: true + + /esbuild/0.15.18: + resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.15.18 + '@esbuild/linux-loong64': 0.15.18 + esbuild-android-64: 0.15.18 + esbuild-android-arm64: 0.15.18 + esbuild-darwin-64: 0.15.18 + esbuild-darwin-arm64: 0.15.18 + esbuild-freebsd-64: 0.15.18 + esbuild-freebsd-arm64: 0.15.18 + esbuild-linux-32: 0.15.18 + esbuild-linux-64: 0.15.18 + esbuild-linux-arm: 0.15.18 + esbuild-linux-arm64: 0.15.18 + esbuild-linux-mips64le: 0.15.18 + esbuild-linux-ppc64le: 0.15.18 + esbuild-linux-riscv64: 0.15.18 + esbuild-linux-s390x: 0.15.18 + esbuild-netbsd-64: 0.15.18 + esbuild-openbsd-64: 0.15.18 + esbuild-sunos-64: 0.15.18 + esbuild-windows-32: 0.15.18 + esbuild-windows-64: 0.15.18 + esbuild-windows-arm64: 0.15.18 + dev: true + + /escalade/3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + /escape-html/1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: true + + /escape-string-regexp/1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + /escape-string-regexp/2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + dev: true + + /escape-string-regexp/4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + /escodegen/2.0.0: + resolution: {integrity: sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==} + engines: {node: '>=6.0'} + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + dev: true + + /eslint-ast-utils/1.1.0: + resolution: {integrity: sha512-otzzTim2/1+lVrlH19EfQQJEhVJSu0zOb9ygb3iapN6UlyaDtyRq4b5U1FuW0v1lRa9Fp/GJyHkSwm6NqABgCA==} + engines: {node: '>=4'} + dependencies: + lodash.get: 4.4.2 + lodash.zip: 4.2.0 + dev: true + + /eslint-config-prettier/8.5.0_eslint@7.32.0: + resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 7.32.0 + dev: true + + /eslint-formatter-pretty/4.1.0: + resolution: {integrity: sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==} + engines: {node: '>=10'} + dependencies: + '@types/eslint': 7.29.0 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + eslint-rule-docs: 1.1.235 + log-symbols: 4.1.0 + plur: 4.0.0 + string-width: 4.2.3 + supports-hyperlinks: 2.3.0 + dev: true + + /eslint-plugin-babel/5.3.1_eslint@7.32.0: + resolution: {integrity: sha512-VsQEr6NH3dj664+EyxJwO4FCYm/00JhYb3Sk3ft8o+fpKuIfQ9TaW6uVUfvwMXHcf/lsnRIoyFPsLMyiWCSL/g==} + engines: {node: '>=4'} + peerDependencies: + eslint: '>=4.0.0' + dependencies: + eslint: 7.32.0 + eslint-rule-composer: 0.3.0 + dev: true + + /eslint-plugin-jest/24.7.0_lu625izcmv7ncn4wtsowv2m5du: + resolution: {integrity: sha512-wUxdF2bAZiYSKBclsUMrYHH6WxiBreNjyDxbRv345TIvPeoCEgPNEn3Sa+ZrSqsf1Dl9SqqSREXMHExlMMu1DA==} + engines: {node: '>=10'} + peerDependencies: + '@typescript-eslint/eslint-plugin': '>= 4' + eslint: '>=5' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 5.45.1_gzownqpuqpv4wlegrjxgkhyhy4 + '@typescript-eslint/experimental-utils': 4.33.0_yfqovispp7u7jaktymfaqwl2py + eslint: 7.32.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-jest/26.1.5_c536eslrwm5p6jo75m7x37dlaa: + resolution: {integrity: sha512-su89aDuljL9bTjEufTXmKUMSFe2kZUL9bi7+woq+C2ukHZordhtfPm4Vg+tdioHBaKf8v3/FXW9uV0ksqhYGFw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 5.36.1_mykkoz4hah6spua56zdzyuayri + '@typescript-eslint/utils': 5.45.1_7xejdone6kwdndpjp5nwx3ofcu + eslint: 8.15.0 + jest: 29.3.1_ts-node@10.9.1 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-jest/26.1.5_evhtpg37z3oayq2bq7xoh7b4ra: + resolution: {integrity: sha512-su89aDuljL9bTjEufTXmKUMSFe2kZUL9bi7+woq+C2ukHZordhtfPm4Vg+tdioHBaKf8v3/FXW9uV0ksqhYGFw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 5.36.1_ujfdmtdxmqxe4a5dut33px3yhi + '@typescript-eslint/utils': 5.45.1_ha6vam6werchizxrnqvarmz2zu + eslint: 8.29.0 + jest: 29.3.1_ts-node@10.9.1 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-promise/6.1.1_eslint@7.32.0: + resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + eslint: 7.32.0 + dev: true + + /eslint-plugin-react-hooks/4.5.0_eslint@8.15.0: + resolution: {integrity: sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.15.0 + dev: true + + /eslint-plugin-react-hooks/4.5.0_eslint@8.29.0: + resolution: {integrity: sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.29.0 + dev: true + + /eslint-plugin-react-hooks/4.6.0_eslint@7.32.0: + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 7.32.0 + dev: true + + /eslint-plugin-react/7.29.4_eslint@8.15.0: + resolution: {integrity: sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + doctrine: 2.1.0 + eslint: 8.15.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.3 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + object.hasown: 1.1.2 + object.values: 1.1.6 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.0 + string.prototype.matchall: 4.0.8 + dev: true + + /eslint-plugin-react/7.29.4_eslint@8.29.0: + resolution: {integrity: sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + doctrine: 2.1.0 + eslint: 8.29.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.3 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + object.hasown: 1.1.2 + object.values: 1.1.6 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.0 + string.prototype.matchall: 4.0.8 + dev: true + + /eslint-plugin-react/7.31.11_eslint@7.32.0: + resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + array.prototype.tosorted: 1.1.1 + doctrine: 2.1.0 + eslint: 7.32.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.3 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + object.hasown: 1.1.2 + object.values: 1.1.6 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.0 + string.prototype.matchall: 4.0.8 + dev: true + + /eslint-plugin-unicorn/20.1.0_eslint@7.32.0: + resolution: {integrity: sha512-XQxLBJT/gnwyRR6cfYsIK1AdekQchAt5tmcsnldevGjgR2xoZsRUa5/i6e0seNHy2RoT57CkTnbVHwHF8No8LA==} + engines: {node: '>=10'} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + ci-info: 2.0.0 + clean-regexp: 1.0.0 + eslint: 7.32.0 + eslint-ast-utils: 1.1.0 + eslint-template-visitor: 2.3.2_eslint@7.32.0 + eslint-utils: 2.1.0 + import-modules: 2.1.0 + lodash: 4.17.21 + pluralize: 8.0.0 + read-pkg-up: 7.0.1 + regexp-tree: 0.1.24 + reserved-words: 0.1.2 + safe-regex: 2.1.1 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-rule-composer/0.3.0: + resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} + engines: {node: '>=4.0.0'} + dev: true + + /eslint-rule-docs/1.1.235: + resolution: {integrity: sha512-+TQ+x4JdTnDoFEXXb3fDvfGOwnyNV7duH8fXWTPD1ieaBmB8omj7Gw/pMBBu4uI2uJCCU8APDaQJzWuXnTsH4A==} + dev: true + + /eslint-scope/5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + dev: true + + /eslint-scope/7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + /eslint-template-visitor/2.3.2_eslint@7.32.0: + resolution: {integrity: sha512-3ydhqFpuV7x1M9EK52BPNj6V0Kwu0KKkcIAfpUhwHbR8ocRln/oUHgfxQupY8O1h4Qv/POHDumb/BwwNfxbtnA==} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + '@babel/core': 7.20.5 + '@babel/eslint-parser': 7.19.1_q7hszagzy73il6awuziitdhqxe + eslint: 7.32.0 + eslint-visitor-keys: 2.1.0 + esquery: 1.4.0 + multimap: 1.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-utils/2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-utils/3.0.0_eslint@7.32.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 7.32.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-utils/3.0.0_eslint@8.15.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.15.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-utils/3.0.0_eslint@8.29.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.29.0 + eslint-visitor-keys: 2.1.0 + + /eslint-visitor-keys/1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + dev: true + + /eslint-visitor-keys/2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + + /eslint-visitor-keys/3.3.0: + resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + /eslint/7.32.0: + resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} + engines: {node: ^10.12.0 || >=12.0.0} + hasBin: true + dependencies: + '@babel/code-frame': 7.12.11 + '@eslint/eslintrc': 0.4.3 + '@humanwhocodes/config-array': 0.5.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + enquirer: 2.3.6 + escape-string-regexp: 4.0.0 + eslint-scope: 5.1.1 + eslint-utils: 2.1.0 + eslint-visitor-keys: 2.1.0 + espree: 7.3.1 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 5.1.2 + globals: 13.18.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-yaml: 3.14.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + progress: 2.0.3 + regexpp: 3.2.0 + semver: 7.3.8 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + table: 6.8.1 + text-table: 0.2.0 + v8-compile-cache: 2.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint/8.15.0: + resolution: {integrity: sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': 1.3.3 + '@humanwhocodes/config-array': 0.9.5 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0_eslint@8.15.0 + eslint-visitor-keys: 3.3.0 + espree: 9.4.1 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 6.0.2 + globals: 13.18.0 + ignore: 5.2.1 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + v8-compile-cache: 2.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint/8.29.0: + resolution: {integrity: sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': 1.3.3 + '@humanwhocodes/config-array': 0.11.7 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0_eslint@8.29.0 + eslint-visitor-keys: 3.3.0 + espree: 9.4.1 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.18.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.1 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-sdsl: 4.2.0 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + /espree/7.3.1: + resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + acorn: 7.4.1 + acorn-jsx: 5.3.2_acorn@7.4.1 + eslint-visitor-keys: 1.3.0 + dev: true + + /espree/9.4.1: + resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.1 + acorn-jsx: 5.3.2_acorn@8.8.1 + eslint-visitor-keys: 3.3.0 + + /esprima/4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /esquery/1.4.0: + resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + + /esrecurse/4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + + /estraverse/4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + dev: true + + /estraverse/5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + /estree-walker/2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true + + /esutils/2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + /etag/1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: true + + /event-emitter/0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + dev: true + + /events/3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: true + + /evp_bytestokey/1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + dev: true + + /execa/4.1.0: + resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa/5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execall/2.0.0: + resolution: {integrity: sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==} + engines: {node: '>=8'} + dependencies: + clone-regexp: 2.2.0 + dev: true + + /exenv/1.2.2: + resolution: {integrity: sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==} + dev: true + + /exit/0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + dev: true + + /expect/29.3.1: + resolution: {integrity: sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.3.1 + jest-get-type: 29.2.0 + jest-matcher-utils: 29.3.1 + jest-message-util: 29.3.1 + jest-util: 29.3.1 + dev: true + + /express/4.18.2: + resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.1 + content-disposition: 0.5.4 + content-type: 1.0.4 + cookie: 0.5.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /ext/1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + dependencies: + type: 2.7.2 + dev: true + + /extend/3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true + + /extract-zip/1.7.0: + resolution: {integrity: sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==} + hasBin: true + dependencies: + concat-stream: 1.6.2 + debug: 2.6.9 + mkdirp: 0.5.6 + yauzl: 2.10.0 + transitivePeerDependencies: + - supports-color + dev: true + + /extsprintf/1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + dev: true + + /fast-deep-equal/3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + /fast-glob/3.2.12: + resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + /fast-json-stable-stringify/2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + /fast-levenshtein/2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + /fast-redact/3.1.2: + resolution: {integrity: sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==} + engines: {node: '>=6'} + dev: true + + /fast-safe-stringify/2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + dev: true + + /fastest-levenshtein/1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + dev: true + + /fastq/1.14.0: + resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==} + dependencies: + reusify: 1.0.4 + + /fb-watchman/2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + dev: true + + /fbjs/0.8.18: + resolution: {integrity: sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==} + dependencies: + core-js: 1.2.7 + isomorphic-fetch: 2.2.1 + loose-envify: 1.4.0 + object-assign: 4.1.1 + promise: 7.3.1 + setimmediate: 1.0.5 + ua-parser-js: 0.7.32 + dev: true + + /fd-slicer/1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + dependencies: + pend: 1.2.0 + dev: true + + /file-entry-cache/6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + + /filename-reserved-regex/2.0.0: + resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} + engines: {node: '>=4'} + dev: true + + /filenamify/4.3.0: + resolution: {integrity: sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==} + engines: {node: '>=8'} + dependencies: + filename-reserved-regex: 2.0.0 + strip-outer: 1.0.1 + trim-repeated: 1.0.0 + dev: true + + /filesize/8.0.7: + resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} + engines: {node: '>= 0.4.0'} + dev: false + + /fill-range/7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /filter-obj/1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + dev: true + + /finalhandler/1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /find-cache-dir/3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + dev: true + + /find-root/1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + dev: false + + /find-up/3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + dependencies: + locate-path: 3.0.0 + dev: false + + /find-up/4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up/5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + /flat-cache/3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + + /flatted/3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + + /flatten/1.0.3: + resolution: {integrity: sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==} + deprecated: flatten is deprecated in favor of utility frameworks such as lodash. + dev: true + + /follow-redirects/1.15.2: + resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: true + + /for-each/0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /forever-agent/0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + dev: true + + /fork-ts-checker-webpack-plugin/6.5.2_ha6vam6werchizxrnqvarmz2zu: + resolution: {integrity: sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==} + engines: {node: '>=10', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.18.6 + '@types/json-schema': 7.0.11 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 6.0.0 + deepmerge: 4.2.2 + eslint: 8.29.0 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.4.12 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.3.8 + tapable: 1.1.3 + typescript: 4.9.4 + dev: false + + /fork-ts-checker-webpack-plugin/7.2.4_typescript@4.9.4: + resolution: {integrity: sha512-wVN8w0aGiiF4/1o0N5VPeh+PCs4OMg8VzKiYc7Uw7e2VmTt8JuKjEc2/uvd/VfG0Ux+4WnxMncSRcZpXAS6Fyw==} + engines: {node: '>=12.13.0', yarn: '>=1.0.0'} + peerDependencies: + typescript: '>3.6.0' + vue-template-compiler: '*' + webpack: ^5.11.0 + peerDependenciesMeta: + vue-template-compiler: + optional: true + dependencies: + '@babel/code-frame': 7.18.6 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 7.1.0 + deepmerge: 4.2.2 + fs-extra: 10.1.0 + memfs: 3.4.12 + minimatch: 3.1.2 + schema-utils: 3.1.1 + semver: 7.3.8 + tapable: 2.2.1 + typescript: 4.9.4 + dev: true + + /form-data/2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /form-data/4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /forwarded/0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: true + + /fraction.js/4.2.0: + resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} + dev: true + + /fresh/0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: true + + /fs-extra/10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-extra/8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: true + + /fs-extra/9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: false + + /fs-monkey/1.0.3: + resolution: {integrity: sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==} + + /fs-readdir-recursive/1.1.0: + resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} + dev: true + + /fs.realpath/1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + optional: true + + /function-bind/1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + + /function.prototype.name/1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.5 + functions-have-names: 1.2.3 + dev: true + + /functional-red-black-tree/1.0.1: + resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==} + dev: true + + /functions-have-names/1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /gensync/1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + /get-caller-file/2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-intrinsic/1.1.3: + resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + dev: true + + /get-own-enumerable-property-symbols/3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + dev: true + + /get-package-type/0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + dev: true + + /get-stdin/8.0.0: + resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} + engines: {node: '>=10'} + dev: true + + /get-stream/5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + dependencies: + pump: 3.0.0 + dev: true + + /get-stream/6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-symbol-description/1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + dev: true + + /get-tsconfig/4.2.0: + resolution: {integrity: sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==} + dev: true + + /getnpmregistry/1.0.1: + resolution: {integrity: sha512-OZRQ1RmRC0JduSLlQrHAaBLLrB23D3gaREsMBtM7aV8pxKB3duPs+a7iH7662b8zu1G9H6wiOvZc814g/bcHVg==} + dependencies: + node-fetch: 2.6.7 + transitivePeerDependencies: + - encoding + dev: true + + /getpass/0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + dependencies: + assert-plus: 1.0.0 + dev: true + + /gh-pages/3.2.3: + resolution: {integrity: sha512-jA1PbapQ1jqzacECfjUaO9gV8uBgU6XNMV0oXLtfCX3haGLe5Atq8BxlrADhbD6/UdG9j6tZLWAkAybndOXTJg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + async: 2.6.4 + commander: 2.20.3 + email-addresses: 3.1.0 + filenamify: 4.3.0 + find-cache-dir: 3.3.2 + fs-extra: 8.1.0 + globby: 6.1.0 + dev: true + + /git-hooks-list/1.0.3: + resolution: {integrity: sha512-Y7wLWcrLUXwk2noSka166byGCvhMtDRpgHdzCno1UQv/n/Hegp++a2xBWJL1lJarnKD3SWaljD+0z1ztqxuKyQ==} + dev: true + + /glob-parent/5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + + /glob-parent/6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /global-modules/2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + dependencies: + global-prefix: 3.0.0 + + /global-prefix/3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + /global/4.4.0: + resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==} + dependencies: + min-document: 2.19.0 + process: 0.11.10 + dev: true + + /globals/11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + /globals/13.18.0: + resolution: {integrity: sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + + /globalthis/1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.1.4 + dev: true + + /globby/10.0.0: + resolution: {integrity: sha512-3LifW9M4joGZasyYPz2A1U74zbC/45fvpXUvO/9KbSa+VV0aGZarWkfdgKyR9sExNP0t0x0ss/UMJpNpcaTspw==} + engines: {node: '>=8'} + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + glob: 7.2.3 + ignore: 5.2.1 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globby/11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.1 + merge2: 1.4.1 + slash: 3.0.0 + + /globby/6.1.0: + resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==} + engines: {node: '>=0.10.0'} + dependencies: + array-union: 1.0.2 + glob: 7.2.3 + object-assign: 4.1.1 + pify: 2.3.0 + pinkie-promise: 2.0.1 + dev: true + + /globjoin/0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + dev: true + + /gonzales-pe/4.3.0: + resolution: {integrity: sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==} + engines: {node: '>=0.6.0'} + hasBin: true + dependencies: + minimist: 1.2.7 + dev: true + + /gopd/1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.1.3 + dev: true + + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + + /grapheme-splitter/1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + + /gzip-size/6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + dependencies: + duplexer: 0.1.2 + dev: false + + /handle-thing/2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + dev: true + + /har-schema/2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + dev: true + + /har-validator/5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + dev: true + + /hard-rejection/2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + dev: true + + /harmony-reflect/1.6.2: + resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} + dev: true + + /has-bigints/1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag/3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + /has-flag/4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + /has-property-descriptors/1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.1.3 + dev: true + + /has-symbols/1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has-tostringtag/1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /has/1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + + /hash-base/3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.0 + safe-buffer: 5.2.1 + dev: true + + /hash.js/1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + dev: true + + /he/1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /history/5.3.0: + resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} + dependencies: + '@babel/runtime': 7.20.6 + dev: true + + /hmac-drbg/1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + dev: true + + /hoist-non-react-statics/3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + dependencies: + react-is: 16.13.1 + dev: true + + /hosted-git-info/2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + + /hosted-git-info/4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + dependencies: + lru-cache: 6.0.0 + dev: true + + /hotkeys-js/3.10.1: + resolution: {integrity: sha512-mshqjgTqx8ee0qryHvRgZaZDxTwxam/2yTQmQlqAWS3+twnq1jsY9Yng9zB7lWq6WRrjTbTOc7knNwccXQiAjQ==} + dev: false + + /hpack.js/2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.7 + wbuf: 1.7.3 + dev: true + + /htm/3.1.1: + resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==} + dev: true + + /html-encoding-sniffer/3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + dependencies: + whatwg-encoding: 2.0.0 + dev: true + + /html-entities/2.3.3: + resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} + dev: true + + /html-escaper/2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + dev: true + + /html-minifier-terser/6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.1 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.16.1 + dev: true + + /html-tags/3.2.0: + resolution: {integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==} + engines: {node: '>=8'} + dev: true + + /html-webpack-plugin/5.5.0: + resolution: {integrity: sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==} + engines: {node: '>=10.13.0'} + peerDependencies: + webpack: ^5.20.0 + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.1 + dev: true + + /htmlparser2/3.10.1: + resolution: {integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==} + dependencies: + domelementtype: 1.3.1 + domhandler: 2.4.2 + domutils: 1.7.0 + entities: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: true + + /htmlparser2/6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + dev: true + + /http-deceiver/1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + dev: true + + /http-errors/2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + dev: true + + /http-proxy-agent/5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /http-signature/1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.17.0 + dev: true + + /http2-client/1.3.5: + resolution: {integrity: sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==} + dev: true + + /https-browserify/1.0.0: + resolution: {integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==} + dev: true + + /https-proxy-agent/2.2.4: + resolution: {integrity: sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==} + engines: {node: '>= 4.5.0'} + dependencies: + agent-base: 4.3.0 + debug: 3.2.7 + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent/5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /human-signals/1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + dev: true + + /human-signals/2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /husky/7.0.4: + resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==} + engines: {node: '>=12'} + hasBin: true + dev: true + + /iconv-lite/0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /iconv-lite/0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /icss-utils/5.1.0_postcss@8.4.19: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.19 + dev: true + + /identity-obj-proxy/3.0.0: + resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} + engines: {node: '>=4'} + dependencies: + harmony-reflect: 1.6.2 + dev: true + + /ieee754/1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: true + + /ignore/4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + dev: true + + /ignore/5.2.1: + resolution: {integrity: sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==} + engines: {node: '>= 4'} + + /immer/8.0.4: + resolution: {integrity: sha512-jMfL18P+/6P6epANRvRk6q8t+3gGhqsJ9EuJ25AXE+9bNTYtssvzeYbEd0mXRYWCmmXSIbnlpz6vd6iJlmGGGQ==} + dev: true + + /immer/9.0.16: + resolution: {integrity: sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ==} + dev: false + + /import-fresh/3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + /import-html-entry/1.14.0: + resolution: {integrity: sha512-CQQMV+2rxHCLMSXsajV1cjT1g6xi3ujMAPnGwR96xHaN5/JEVIOUGkM7LDRn73dk8E8NaHmOf3rvPPExPPe1xw==} + dependencies: + '@babel/runtime': 7.20.6 + dev: true + + /import-lazy/4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + dev: true + + /import-local/3.1.0: + resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} + engines: {node: '>=8'} + hasBin: true + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + dev: true + + /import-modules/2.1.0: + resolution: {integrity: sha512-8HEWcnkbGpovH9yInoisxaSoIg9Brbul+Ju3Kqe2UsYDUBJD/iQjSgEj0zPcTDPKfPp2fs5xlv1i+JSye/m1/A==} + engines: {node: '>=8'} + dev: true + + /imurmurhash/0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + /indent-string/4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /inflight/1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits/2.0.1: + resolution: {integrity: sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==} + dev: true + + /inherits/2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: true + + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /ini/1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + /internal-slot/1.0.3: + resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.1.3 + has: 1.0.3 + side-channel: 1.0.4 + dev: true + + /intersection-observer/0.12.2: + resolution: {integrity: sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==} + dev: true + + /intl-format-cache/4.3.1: + resolution: {integrity: sha512-OEUYNA7D06agqPOYhbTkl0T8HA3QKSuwWh1HiClEnpd9vw7N+3XsQt5iZ0GUEchp5CW1fQk/tary+NsbF3yQ1Q==} + dev: true + + /intl-messageformat-parser/3.6.4: + resolution: {integrity: sha512-RgPGwue0mJtoX2Ax8EmMzJzttxjnva7gx0Q7mKJ4oALrTZvtmCeAw5Msz2PcjW4dtCh/h7vN/8GJCxZO1uv+OA==} + deprecated: We've written a new parser that's 6x faster and is backwards compatible. Please use @formatjs/icu-messageformat-parser + dependencies: + '@formatjs/intl-unified-numberformat': 3.3.7 + dev: true + + /intl-messageformat/7.8.4: + resolution: {integrity: sha512-yS0cLESCKCYjseCOGXuV4pxJm/buTfyCJ1nzQjryHmSehlptbZbn9fnlk1I9peLopZGGbjj46yHHiTAEZ1qOTA==} + dependencies: + intl-format-cache: 4.3.1 + intl-messageformat-parser: 3.6.4 + dev: true + + /intl-messageformat/9.13.0: + resolution: {integrity: sha512-7sGC7QnSQGa5LZP7bXLDhVDtQOeKGeBFGHF2Y8LVBwYZoQZCgWeKoPGTa5GMG8g/TzDgeXuYJQis7Ggiw2xTOw==} + dependencies: + '@formatjs/ecma402-abstract': 1.11.4 + '@formatjs/fast-memoize': 1.2.1 + '@formatjs/icu-messageformat-parser': 2.1.0 + tslib: 2.4.1 + dev: true + + /intl/1.2.5: + resolution: {integrity: sha512-rK0KcPHeBFBcqsErKSpvZnrOmWOj+EmDkyJ57e90YWaQNqbcivcqmKDlHEeNprDWOsKzPsh1BfSpPQdDvclHVw==} + dev: true + + /invariant/2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + dependencies: + loose-envify: 1.4.0 + + /invert-kv/3.0.1: + resolution: {integrity: sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==} + engines: {node: '>=8'} + dev: true + + /ipaddr.js/1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: true + + /irregular-plurals/3.3.0: + resolution: {integrity: sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g==} + engines: {node: '>=8'} + dev: true + + /is-alphabetical/1.0.4: + resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} + dev: true + + /is-alphanumerical/1.0.4: + resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} + dependencies: + is-alphabetical: 1.0.4 + is-decimal: 1.0.4 + dev: true + + /is-arguments/1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-arrayish/0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + /is-arrow-function/2.0.3: + resolution: {integrity: sha512-iDStzcT1FJMzx+TjCOK//uDugSe/Mif/8a+T0htydQ3qkJGvSweTZpVYz4hpJH0baloSPiAFQdA8WslAgJphvQ==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + dev: true + + /is-async-function/2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-bigint/1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path/2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + + /is-boolean-object/1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-buffer/2.0.5: + resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} + engines: {node: '>=4'} + dev: true + + /is-callable/1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module/2.11.0: + resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} + dependencies: + has: 1.0.3 + + /is-date-object/1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-decimal/1.0.4: + resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} + dev: true + + /is-docker/2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + /is-equal/1.6.4: + resolution: {integrity: sha512-NiPOTBb5ahmIOYkJ7mVTvvB1bydnTzixvfO+59AjJKBpyjPBIULL3EHGxySyZijlVpewveJyhiLQThcivkkAtw==} + engines: {node: '>= 0.4'} + dependencies: + es-get-iterator: 1.1.2 + functions-have-names: 1.2.3 + has: 1.0.3 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + is-arrow-function: 2.0.3 + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-generator-function: 1.0.10 + is-number-object: 1.0.7 + is-regex: 1.1.4 + is-string: 1.0.7 + is-symbol: 1.0.4 + isarray: 2.0.5 + object-inspect: 1.12.2 + object.entries: 1.1.6 + object.getprototypeof: 1.0.4 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + dev: true + + /is-extglob/2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + /is-finalizationregistry/1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-fullwidth-code-point/3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-generator-fn/2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + dev: true + + /is-generator-function/1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + + /is-hexadecimal/1.0.4: + resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} + dev: true + + /is-interactive/1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: true + + /is-map/2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + dev: true + + /is-negative-zero/2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object/1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-obj/1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + dev: true + + /is-path-inside/3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + /is-plain-obj/1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + dev: true + + /is-plain-obj/2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + dev: true + + /is-plain-object/2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + dev: true + + /is-plain-object/5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + dev: true + + /is-potential-custom-element-name/1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true + + /is-promise/2.2.2: + resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} + dev: true + + /is-regex/1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-regexp/1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + dev: true + + /is-regexp/2.1.0: + resolution: {integrity: sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==} + engines: {node: '>=6'} + dev: true + + /is-root/2.1.0: + resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} + engines: {node: '>=6'} + dev: false + + /is-set/2.0.2: + resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + dev: true + + /is-shared-array-buffer/1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-stream/1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-stream/2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-string/1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-symbol/1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-typed-array/1.1.10: + resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + + /is-typedarray/1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: true + + /is-unicode-supported/0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + + /is-url/1.2.4: + resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} + dev: true + + /is-weakmap/2.0.1: + resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + dev: true + + /is-weakref/1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-weakset/2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + dev: true + + /is-wsl/2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + + /isarray/0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + dev: true + + /isarray/1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: true + + /isarray/2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isexe/2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /isobject/3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + dev: true + + /isomorphic-fetch/2.2.1: + resolution: {integrity: sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==} + dependencies: + node-fetch: 1.7.3 + whatwg-fetch: 3.6.2 + dev: true + + /isomorphic-unfetch/3.1.0: + resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + dependencies: + node-fetch: 2.6.7 + unfetch: 4.2.0 + transitivePeerDependencies: + - encoding + dev: true + + /isstream/0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + dev: true + + /istanbul-lib-coverage/3.2.0: + resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + engines: {node: '>=8'} + dev: true + + /istanbul-lib-instrument/5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + dependencies: + '@babel/core': 7.20.5 + '@babel/parser': 7.20.5 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-lib-report/3.0.0: + resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} + engines: {node: '>=8'} + dependencies: + istanbul-lib-coverage: 3.2.0 + make-dir: 3.1.0 + supports-color: 7.2.0 + dev: true + + /istanbul-lib-source-maps/4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + dependencies: + debug: 4.3.4 + istanbul-lib-coverage: 3.2.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + + /istanbul-reports/3.1.5: + resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + engines: {node: '>=8'} + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.0 + dev: true + + /jest-changed-files/29.2.0: + resolution: {integrity: sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + execa: 5.1.1 + p-limit: 3.1.0 + dev: true + + /jest-circus/29.3.1: + resolution: {integrity: sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.3.1 + '@jest/expect': 29.3.1 + '@jest/test-result': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 18.11.11 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + is-generator-fn: 2.1.0 + jest-each: 29.3.1 + jest-matcher-utils: 29.3.1 + jest-message-util: 29.3.1 + jest-runtime: 29.3.1 + jest-snapshot: 29.3.1 + jest-util: 29.3.1 + p-limit: 3.1.0 + pretty-format: 29.3.1 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-cli/29.3.1_ts-node@10.9.1: + resolution: {integrity: sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.3.1_ts-node@10.9.1 + '@jest/test-result': 29.3.1 + '@jest/types': 29.3.1 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.10 + import-local: 3.1.0 + jest-config: 29.3.1_ts-node@10.9.1 + jest-util: 29.3.1 + jest-validate: 29.3.1 + prompts: 2.4.2 + yargs: 17.6.2 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + + /jest-config/29.3.1_k7quxe733nexnlgzi4yxvxoplq: + resolution: {integrity: sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.20.5 + '@jest/test-sequencer': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 18.11.11 + babel-jest: 29.3.1_@babel+core@7.20.5 + chalk: 4.1.2 + ci-info: 3.7.0 + deepmerge: 4.2.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-circus: 29.3.1 + jest-environment-node: 29.3.1 + jest-get-type: 29.2.0 + jest-regex-util: 29.2.0 + jest-resolve: 29.3.1 + jest-runner: 29.3.1 + jest-util: 29.3.1 + jest-validate: 29.3.1 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.3.1 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1_typescript@4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-config/29.3.1_ts-node@10.9.1: + resolution: {integrity: sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@types/node': '*' + ts-node: '>=9.0.0' + peerDependenciesMeta: + '@types/node': + optional: true + ts-node: + optional: true + dependencies: + '@babel/core': 7.20.5 + '@jest/test-sequencer': 29.3.1 + '@jest/types': 29.3.1 + babel-jest: 29.3.1_@babel+core@7.20.5 + chalk: 4.1.2 + ci-info: 3.7.0 + deepmerge: 4.2.2 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-circus: 29.3.1 + jest-environment-node: 29.3.1 + jest-get-type: 29.2.0 + jest-regex-util: 29.2.0 + jest-resolve: 29.3.1 + jest-runner: 29.3.1 + jest-util: 29.3.1 + jest-validate: 29.3.1 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.3.1 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1_typescript@4.9.4 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-diff/29.3.1: + resolution: {integrity: sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.3.1 + jest-get-type: 29.2.0 + pretty-format: 29.3.1 + dev: true + + /jest-docblock/29.2.0: + resolution: {integrity: sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + detect-newline: 3.1.0 + dev: true + + /jest-each/29.3.1: + resolution: {integrity: sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.3.1 + chalk: 4.1.2 + jest-get-type: 29.2.0 + jest-util: 29.3.1 + pretty-format: 29.3.1 + dev: true + + /jest-environment-jsdom/29.3.1: + resolution: {integrity: sha512-G46nKgiez2Gy4zvYNhayfMEAFlVHhWfncqvqS6yCd0i+a4NsSUD2WtrKSaYQrYiLQaupHXxCRi8xxVL2M9PbhA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + '@jest/environment': 29.3.1 + '@jest/fake-timers': 29.3.1 + '@jest/types': 29.3.1 + '@types/jsdom': 20.0.1 + '@types/node': 18.11.11 + jest-mock: 29.3.1 + jest-util: 29.3.1 + jsdom: 20.0.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jest-environment-node/29.3.1: + resolution: {integrity: sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.3.1 + '@jest/fake-timers': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 18.11.11 + jest-mock: 29.3.1 + jest-util: 29.3.1 + dev: true + + /jest-get-type/29.2.0: + resolution: {integrity: sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-haste-map/28.1.3: + resolution: {integrity: sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + '@types/graceful-fs': 4.1.5 + '@types/node': 18.11.11 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.10 + jest-regex-util: 28.0.2 + jest-util: 28.1.3 + jest-worker: 28.1.3 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /jest-haste-map/29.3.1: + resolution: {integrity: sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.3.1 + '@types/graceful-fs': 4.1.5 + '@types/node': 18.11.11 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.10 + jest-regex-util: 29.2.0 + jest-util: 29.3.1 + jest-worker: 29.3.1 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /jest-leak-detector/29.3.1: + resolution: {integrity: sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.2.0 + pretty-format: 29.3.1 + dev: true + + /jest-matcher-utils/29.3.1: + resolution: {integrity: sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.3.1 + jest-get-type: 29.2.0 + pretty-format: 29.3.1 + dev: true + + /jest-message-util/29.3.1: + resolution: {integrity: sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.18.6 + '@jest/types': 29.3.1 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.10 + micromatch: 4.0.5 + pretty-format: 29.3.1 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock/29.3.1: + resolution: {integrity: sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.3.1 + '@types/node': 18.11.11 + jest-util: 29.3.1 + dev: true + + /jest-pnp-resolver/1.2.3_jest-resolve@29.3.1: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.3.1 + dev: true + + /jest-regex-util/28.0.2: + resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dev: true + + /jest-regex-util/29.2.0: + resolution: {integrity: sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + + /jest-resolve-dependencies/29.3.1: + resolution: {integrity: sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.2.0 + jest-snapshot: 29.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve/29.3.1: + resolution: {integrity: sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.10 + jest-haste-map: 29.3.1 + jest-pnp-resolver: 1.2.3_jest-resolve@29.3.1 + jest-util: 29.3.1 + jest-validate: 29.3.1 + resolve: 1.22.1 + resolve.exports: 1.1.0 + slash: 3.0.0 + dev: true + + /jest-runner/29.3.1: + resolution: {integrity: sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.3.1 + '@jest/environment': 29.3.1 + '@jest/test-result': 29.3.1 + '@jest/transform': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 18.11.11 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.10 + jest-docblock: 29.2.0 + jest-environment-node: 29.3.1 + jest-haste-map: 29.3.1 + jest-leak-detector: 29.3.1 + jest-message-util: 29.3.1 + jest-resolve: 29.3.1 + jest-runtime: 29.3.1 + jest-util: 29.3.1 + jest-watcher: 29.3.1 + jest-worker: 29.3.1 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime/29.3.1: + resolution: {integrity: sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.3.1 + '@jest/fake-timers': 29.3.1 + '@jest/globals': 29.3.1 + '@jest/source-map': 29.2.0 + '@jest/test-result': 29.3.1 + '@jest/transform': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 18.11.11 + chalk: 4.1.2 + cjs-module-lexer: 1.2.2 + collect-v8-coverage: 1.0.1 + glob: 7.2.3 + graceful-fs: 4.2.10 + jest-haste-map: 29.3.1 + jest-message-util: 29.3.1 + jest-mock: 29.3.1 + jest-regex-util: 29.2.0 + jest-resolve: 29.3.1 + jest-snapshot: 29.3.1 + jest-util: 29.3.1 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot/29.3.1: + resolution: {integrity: sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.20.5 + '@babel/generator': 7.20.5 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.5 + '@babel/traverse': 7.20.5 + '@babel/types': 7.20.5 + '@jest/expect-utils': 29.3.1 + '@jest/transform': 29.3.1 + '@jest/types': 29.3.1 + '@types/babel__traverse': 7.18.3 + '@types/prettier': 2.7.1 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.5 + chalk: 4.1.2 + expect: 29.3.1 + graceful-fs: 4.2.10 + jest-diff: 29.3.1 + jest-get-type: 29.2.0 + jest-haste-map: 29.3.1 + jest-matcher-utils: 29.3.1 + jest-message-util: 29.3.1 + jest-util: 29.3.1 + natural-compare: 1.4.0 + pretty-format: 29.3.1 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util/28.1.3: + resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@jest/types': 28.1.3 + '@types/node': 18.11.11 + chalk: 4.1.2 + ci-info: 3.7.0 + graceful-fs: 4.2.10 + picomatch: 2.3.1 + dev: true + + /jest-util/29.3.1: + resolution: {integrity: sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.3.1 + '@types/node': 18.11.11 + chalk: 4.1.2 + ci-info: 3.7.0 + graceful-fs: 4.2.10 + picomatch: 2.3.1 + dev: true + + /jest-validate/29.3.1: + resolution: {integrity: sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.3.1 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.2.0 + leven: 3.1.0 + pretty-format: 29.3.1 + dev: true + + /jest-watcher/29.3.1: + resolution: {integrity: sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.3.1 + '@jest/types': 29.3.1 + '@types/node': 18.11.11 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.3.1 + string-length: 4.0.2 + dev: true + + /jest-worker/27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 18.11.11 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest-worker/28.1.3: + resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} + engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + dependencies: + '@types/node': 18.11.11 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest-worker/29.3.1: + resolution: {integrity: sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 18.11.11 + jest-util: 29.3.1 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest/29.3.1_ts-node@10.9.1: + resolution: {integrity: sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + dependencies: + '@jest/core': 29.3.1_ts-node@10.9.1 + '@jest/types': 29.3.1 + import-local: 3.1.0 + jest-cli: 29.3.1_ts-node@10.9.1 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + + /js-cookie/2.2.1: + resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} + dev: true + + /js-sdsl/4.2.0: + resolution: {integrity: sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==} + + /js-tokens/4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml/3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + + /js-yaml/4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + + /jsbn/0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + dev: true + + /jsdom/20.0.3: + resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.6 + acorn: 8.8.1 + acorn-globals: 7.0.1 + cssom: 0.5.0 + cssstyle: 2.3.0 + data-urls: 3.0.2 + decimal.js: 10.4.3 + domexception: 4.0.0 + escodegen: 2.0.0 + form-data: 4.0.0 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.2 + parse5: 7.1.2 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.2 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 11.0.0 + ws: 8.11.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jsesc/0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + dev: true + + /jsesc/2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + /json-parse-even-better-errors/2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + /json-schema-traverse/0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + /json-schema-traverse/1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /json-schema/0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + dev: true + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + /json-stringify-safe/5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + dev: true + + /json2mq/0.2.0: + resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==} + dependencies: + string-convert: 0.2.1 + + /json5/2.2.1: + resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} + engines: {node: '>=6'} + hasBin: true + + /jsonfile/4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.10 + dev: true + + /jsonfile/6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.10 + + /jsprim/1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + dev: true + + /jsx-ast-utils/3.3.3: + resolution: {integrity: sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.6 + object.assign: 4.1.4 + dev: true + + /kind-of/6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + /kleur/3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + /known-css-properties/0.21.0: + resolution: {integrity: sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==} + dev: true + + /known-css-properties/0.25.0: + resolution: {integrity: sha512-b0/9J1O9Jcyik1GC6KC42hJ41jKwdO/Mq8Mdo5sYN+IuRTXs2YFHZC3kZSx6ueusqa95x3wLYe/ytKjbAfGixA==} + dev: true + + /lcid/3.1.1: + resolution: {integrity: sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==} + engines: {node: '>=8'} + dependencies: + invert-kv: 3.0.1 + dev: true + + /leven/3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + dev: true + + /levn/0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + dev: true + + /levn/0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + /lines-and-columns/1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + /lint-staged/10.5.4: + resolution: {integrity: sha512-EechC3DdFic/TdOPgj/RB3FicqE6932LTHCUm0Y2fsD9KGlLB+RwJl2q1IYBIvEsKzDOgn0D4gll+YxG5RsrKg==} + hasBin: true + dependencies: + chalk: 4.1.2 + cli-truncate: 2.1.0 + commander: 6.2.1 + cosmiconfig: 7.1.0 + debug: 4.3.4 + dedent: 0.7.0 + enquirer: 2.3.6 + execa: 4.1.0 + listr2: 3.14.0_enquirer@2.3.6 + log-symbols: 4.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + please-upgrade-node: 3.2.0 + string-argv: 0.3.1 + stringify-object: 3.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /listr2/3.14.0_enquirer@2.3.6: + resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} + engines: {node: '>=10.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + dependencies: + cli-truncate: 2.1.0 + colorette: 2.0.19 + enquirer: 2.3.6 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.3.0 + rxjs: 7.6.0 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + + /loader-utils/2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.1 + + /loader-utils/3.2.1: + resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} + engines: {node: '>= 12.13.0'} + dev: false + + /locate-path/3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + dev: false + + /locate-path/5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path/6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + + /lodash.debounce/4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: true + + /lodash.get/4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + dev: true + + /lodash.groupby/4.6.0: + resolution: {integrity: sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==} + dev: true + + /lodash.isequal/4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + + /lodash.merge/4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + /lodash.throttle/4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + dev: true + + /lodash.tonumber/4.0.3: + resolution: {integrity: sha512-SY0SwuPOHRwKcCNTdsntPYb+Zddz5mDUIVFABzRMqmAiL41pMeyoQFGxYAw5zdc9NnH4pbJqiqqp5ckfxa+zSA==} + + /lodash.truncate/4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + dev: true + + /lodash.zip/4.2.0: + resolution: {integrity: sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==} + dev: true + + /lodash/4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + /log-symbols/4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + + /log-update/4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} + dependencies: + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 + dev: true + + /log4js/1.1.1: + resolution: {integrity: sha512-lYb14ZSs1M/CUFuvy7Zk3VZLDtqrqOaVql9CE0tv8g6/qE1Gfq97XKdltBsjSxxvcJ+t8fAXOnvFxSsms7gGVg==} + engines: {node: '>=0.12'} + deprecated: 1.x is no longer supported. Please upgrade to 6.x or higher. + dependencies: + debug: 2.6.9 + semver: 5.7.1 + streamroller: 0.4.1 + transitivePeerDependencies: + - supports-color + dev: true + + /longest-streak/2.0.4: + resolution: {integrity: sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==} + dev: true + + /loose-envify/1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /lower-case/2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + dependencies: + tslib: 2.4.1 + dev: true + + /lru-cache/6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + + /lru-queue/0.1.0: + resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} + dependencies: + es5-ext: 0.10.62 + dev: true + + /lz-string/1.4.4: + resolution: {integrity: sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==} + hasBin: true + dev: true + + /magic-string/0.26.2: + resolution: {integrity: sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==} + engines: {node: '>=12'} + dependencies: + sourcemap-codec: 1.4.8 + dev: true + + /make-dir/2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + dependencies: + pify: 4.0.1 + semver: 5.7.1 + dev: true + + /make-dir/3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + dependencies: + semver: 6.3.0 + dev: true + + /make-error/1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + + /makeerror/1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + dev: true + + /map-age-cleaner/0.1.3: + resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} + engines: {node: '>=6'} + dependencies: + p-defer: 1.0.0 + dev: true + + /map-obj/1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + dev: true + + /map-obj/4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + dev: true + + /mathml-tag-names/2.1.3: + resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + dev: true + + /md5.js/1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /mdast-util-from-markdown/0.8.5: + resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==} + dependencies: + '@types/mdast': 3.0.10 + mdast-util-to-string: 2.0.0 + micromark: 2.11.4 + parse-entities: 2.0.0 + unist-util-stringify-position: 2.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /mdast-util-to-markdown/0.6.5: + resolution: {integrity: sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==} + dependencies: + '@types/unist': 2.0.6 + longest-streak: 2.0.4 + mdast-util-to-string: 2.0.0 + parse-entities: 2.0.0 + repeat-string: 1.6.1 + zwitch: 1.0.5 + dev: true + + /mdast-util-to-string/2.0.0: + resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==} + dev: true + + /mdn-data/2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + dev: true + + /media-typer/0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: true + + /mem/5.1.1: + resolution: {integrity: sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==} + engines: {node: '>=8'} + dependencies: + map-age-cleaner: 0.1.3 + mimic-fn: 2.1.0 + p-is-promise: 2.1.0 + dev: true + + /memfs/3.4.12: + resolution: {integrity: sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw==} + engines: {node: '>= 4.0.0'} + dependencies: + fs-monkey: 1.0.3 + + /memoize-one/5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + + /memoizee/0.4.15: + resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} + dependencies: + d: 1.0.1 + es5-ext: 0.10.62 + es6-weak-map: 2.0.3 + event-emitter: 0.3.5 + is-promise: 2.2.2 + lru-queue: 0.1.0 + next-tick: 1.1.0 + timers-ext: 0.1.7 + dev: true + + /meow/9.0.0: + resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==} + engines: {node: '>=10'} + dependencies: + '@types/minimist': 1.2.2 + camelcase-keys: 6.2.2 + decamelize: 1.2.0 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + dev: true + + /merge-descriptors/1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + dev: true + + /merge-stream/2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2/1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + /methods/1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: true + + /micromark/2.11.4: + resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} + dependencies: + debug: 4.3.4 + parse-entities: 2.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + /miller-rabin/4.0.1: + resolution: {integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==} + hasBin: true + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + dev: true + + /mime-db/1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types/2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /mime/1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /mime/2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + dev: true + + /mimic-fn/2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /min-document/2.19.0: + resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} + dependencies: + dom-walk: 0.1.2 + dev: true + + /min-indent/1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + + /minimalistic-assert/1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + dev: true + + /minimalistic-crypto-utils/1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + dev: true + + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimist-options/4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + dev: true + + /minimist/1.2.7: + resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + dev: true + + /mkdirp/0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.7 + dev: true + + /mock.js/0.2.0: + resolution: {integrity: sha512-DKI8Rh/h7Mma+fg+6aD0uUvwn0QXAjKG6q3s+lTaCboCQ/kvQMBN9IXRBzgEaz4aPiYoRnKU9jVsfZp0mHpWrQ==} + dev: true + + /mockjs/1.1.0: + resolution: {integrity: sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==} + hasBin: true + dependencies: + commander: 9.4.1 + dev: true + + /moment/2.29.4: + resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} + + /ms/2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + /ms/2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms/2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /multimap/1.1.0: + resolution: {integrity: sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==} + dev: true + + /nanoid/3.3.4: + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /natural-compare-lite/1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + dev: true + + /natural-compare/1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + /negotiator/0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: true + + /next-tick/1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + dev: true + + /no-case/3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + dependencies: + lower-case: 2.0.2 + tslib: 2.4.1 + dev: true + + /node-fetch-h2/2.3.0: + resolution: {integrity: sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==} + engines: {node: 4.x || >=6.0.0} + dependencies: + http2-client: 1.3.5 + dev: true + + /node-fetch/1.7.3: + resolution: {integrity: sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==} + dependencies: + encoding: 0.1.13 + is-stream: 1.1.0 + dev: true + + /node-fetch/2.6.0: + resolution: {integrity: sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==} + engines: {node: 4.x || >=6.0.0} + dev: true + + /node-fetch/2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + dev: true + + /node-import-ts/1.0.6: + resolution: {integrity: sha512-zm2zxUn5KI+jjDyx80MbrIrLRUwQ3oQYGotgZ+Z6xTSaXoUgIIO7h5mks5c9v4tBBpc+VlIyyq5WkGcdCn7qfA==} + dependencies: + '@types/node': 12.20.55 + import-fresh: 3.3.0 + typescript: 3.9.10 + dev: true + + /node-int64/0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + dev: true + + /node-libs-browser/2.2.1: + resolution: {integrity: sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==} + dependencies: + assert: 1.5.0 + browserify-zlib: 0.2.0 + buffer: 4.9.2 + console-browserify: 1.2.0 + constants-browserify: 1.0.0 + crypto-browserify: 3.12.0 + domain-browser: 1.2.0 + events: 3.3.0 + https-browserify: 1.0.0 + os-browserify: 0.3.0 + path-browserify: 0.0.1 + process: 0.11.10 + punycode: 1.4.1 + querystring-es3: 0.2.1 + readable-stream: 2.3.7 + stream-browserify: 2.0.2 + stream-http: 2.8.3 + string_decoder: 1.3.0 + timers-browserify: 2.0.12 + tty-browserify: 0.0.0 + url: 0.11.0 + util: 0.11.1 + vm-browserify: 1.1.2 + dev: true + + /node-readfiles/0.2.0: + resolution: {integrity: sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA==} + dependencies: + es6-promise: 3.3.1 + dev: true + + /node-releases/2.0.6: + resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} + + /normalize-package-data/2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.1 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-package-data/3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.11.0 + semver: 7.3.8 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path/3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + /normalize-range/0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-selector/0.2.0: + resolution: {integrity: sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==} + dev: true + + /normalize.css/7.0.0: + resolution: {integrity: sha512-LYaFZxj2Q1Q9e1VJ0f6laG46Rt5s9URhKyckNaA2vZnL/0gwQHWhM7ALQkp3WBQKM5sXRLQ5Ehrfkp+E/ZiCRg==} + dev: true + + /npm-run-path/4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /nth-check/2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + + /num2fraction/1.2.2: + resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==} + dev: true + + /nunjucks/3.2.3: + resolution: {integrity: sha512-psb6xjLj47+fE76JdZwskvwG4MYsQKXUtMsPh6U0YMvmyjRtKRFcxnlXGWglNybtNTNVmGdp94K62/+NjF5FDQ==} + engines: {node: '>= 6.9.0'} + hasBin: true + peerDependencies: + chokidar: ^3.3.0 + peerDependenciesMeta: + chokidar: + optional: true + dependencies: + a-sync-waterfall: 1.0.1 + asap: 2.0.6 + commander: 5.1.0 + dev: true + + /nwsapi/2.2.2: + resolution: {integrity: sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==} + dev: true + + /oas-kit-common/1.0.8: + resolution: {integrity: sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==} + dependencies: + fast-safe-stringify: 2.1.1 + dev: true + + /oas-linter/3.2.2: + resolution: {integrity: sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==} + dependencies: + '@exodus/schemasafe': 1.0.0-rc.9 + should: 13.2.3 + yaml: 1.10.2 + dev: true + + /oas-resolver/2.5.6: + resolution: {integrity: sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ==} + hasBin: true + dependencies: + node-fetch-h2: 2.3.0 + oas-kit-common: 1.0.8 + reftools: 1.1.9 + yaml: 1.10.2 + yargs: 17.6.2 + dev: true + + /oas-schema-walker/1.1.5: + resolution: {integrity: sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==} + dev: true + + /oas-validator/5.0.8: + resolution: {integrity: sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw==} + dependencies: + call-me-maybe: 1.0.2 + oas-kit-common: 1.0.8 + oas-linter: 3.2.2 + oas-resolver: 2.5.6 + oas-schema-walker: 1.1.5 + reftools: 1.1.9 + should: 13.2.3 + yaml: 1.10.2 + dev: true + + /oauth-sign/0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + dev: true + + /object-assign/4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-inspect/1.12.2: + resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} + dev: true + + /object-is/1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + dev: true + + /object-keys/1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign/4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.entries/1.1.6: + resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.5 + dev: true + + /object.fromentries/2.0.6: + resolution: {integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.5 + dev: true + + /object.getprototypeof/1.0.4: + resolution: {integrity: sha512-xV/FkUNM9sHa56AB5deXrlIR+jBtDAHieyfm6XZUuehqlMX+YJPh8CAYtPrXGA/mFLFttasTc9ihhpkPrH7pLw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.5 + reflect.getprototypeof: 1.0.3 + dev: true + + /object.hasown/1.1.2: + resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} + dependencies: + define-properties: 1.1.4 + es-abstract: 1.20.5 + dev: true + + /object.values/1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.5 + dev: true + + /obuf/1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + dev: true + + /omit.js/2.0.2: + resolution: {integrity: sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg==} + + /on-exit-leak-free/0.2.0: + resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} + dev: true + + /on-finished/2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: true + + /once/1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + + /onetime/5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /open/8.4.0: + resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + /openapi3-ts/2.0.2: + resolution: {integrity: sha512-TxhYBMoqx9frXyOgnRHufjQfPXomTIHYKhSKJ6jHfj13kS8OEIhvmE8CTuQyKtjjWttAjX5DPxM1vmalEpo8Qw==} + dependencies: + yaml: 1.10.2 + dev: true + + /optionator/0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.3 + dev: true + + /optionator/0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + + /ora/5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.7.0 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /os-browserify/0.3.0: + resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} + dev: true + + /os-locale/5.0.0: + resolution: {integrity: sha512-tqZcNEDAIZKBEPnHPlVDvKrp7NzgLi7jRmhKiUoa2NUmhl13FtkAGLUVR+ZsYvApBQdBfYm43A4tXXQ4IrYLBA==} + engines: {node: '>=10'} + dependencies: + execa: 4.1.0 + lcid: 3.1.1 + mem: 5.1.1 + dev: true + + /p-defer/1.0.0: + resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} + engines: {node: '>=4'} + dev: true + + /p-is-promise/2.1.0: + resolution: {integrity: sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==} + engines: {node: '>=6'} + dev: true + + /p-limit/2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + + /p-limit/3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + + /p-locate/3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + dependencies: + p-limit: 2.3.0 + dev: false + + /p-locate/4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate/5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + + /p-map/4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + dependencies: + aggregate-error: 3.1.0 + dev: true + + /p-try/2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + /pako/0.2.9: + resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} + dev: true + + /pako/1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + dev: true + + /param-case/3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + dependencies: + dot-case: 3.0.4 + tslib: 2.4.1 + dev: true + + /parent-module/1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + + /parse-asn1/5.1.6: + resolution: {integrity: sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==} + dependencies: + asn1.js: 5.4.1 + browserify-aes: 1.2.0 + evp_bytestokey: 1.0.3 + pbkdf2: 3.1.2 + safe-buffer: 5.2.1 + dev: true + + /parse-entities/2.0.0: + resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} + dependencies: + character-entities: 1.2.4 + character-entities-legacy: 1.1.4 + character-reference-invalid: 1.1.4 + is-alphanumerical: 1.0.4 + is-decimal: 1.0.4 + is-hexadecimal: 1.0.4 + dev: true + + /parse-json/5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.18.6 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + /parse5/7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.4.0 + dev: true + + /parseurl/1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: true + + /pascal-case/3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + dependencies: + no-case: 3.0.4 + tslib: 2.4.1 + dev: true + + /path-browserify/0.0.1: + resolution: {integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==} + dev: true + + /path-exists/3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + dev: false + + /path-exists/4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + /path-is-absolute/1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /path-key/3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + /path-parse/1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-to-regexp/0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + dev: true + + /path-to-regexp/1.7.0: + resolution: {integrity: sha512-nifX1uj4S9IrK/w3Xe7kKvNEepXivANs9ng60Iq7PU/BlouV3yL/VUhFqTuTq33ykwUqoNcTeGo5vdOBP4jS/Q==} + dependencies: + isarray: 0.0.1 + dev: true + + /path-to-regexp/2.4.0: + resolution: {integrity: sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w==} + + /path-type/4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + /pbkdf2/3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /pend/1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + dev: true + + /performance-now/2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + dev: true + + /picocolors/0.2.1: + resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} + dev: true + + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /pify/2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + + /pify/4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + dev: true + + /pinkie-promise/2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + dependencies: + pinkie: 2.0.4 + dev: true + + /pinkie/2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + dev: true + + /pino-abstract-transport/0.5.0: + resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} + dependencies: + duplexify: 4.1.2 + split2: 4.1.0 + dev: true + + /pino-std-serializers/4.0.0: + resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} + dev: true + + /pino/7.11.0: + resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} + hasBin: true + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.1.2 + on-exit-leak-free: 0.2.0 + pino-abstract-transport: 0.5.0 + pino-std-serializers: 4.0.0 + process-warning: 1.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.1.0 + safe-stable-stringify: 2.4.1 + sonic-boom: 2.8.0 + thread-stream: 0.15.2 + dev: true + + /pirates/4.0.5: + resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==} + engines: {node: '>= 6'} + dev: true + + /pkg-dir/4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + dev: true + + /pkg-up/3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + dependencies: + find-up: 3.0.0 + dev: false + + /please-upgrade-node/3.2.0: + resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} + dependencies: + semver-compare: 1.0.0 + dev: true + + /plur/4.0.0: + resolution: {integrity: sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==} + engines: {node: '>=10'} + dependencies: + irregular-plurals: 3.3.0 + dev: true + + /pluralize/8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + dev: true + + /pngjs-image/0.11.7: + resolution: {integrity: sha512-JRyrmT+HXa1/gvdHpebus8TGqKa8WRgcsHz/DDalxRsMhvu6AOA99/enBFjZIPvmXVAzwKR051s80TuE1IiCpg==} + dependencies: + iconv-lite: 0.4.24 + pako: 0.2.9 + pngjs: 2.3.1 + request: 2.88.2 + stream-buffers: 1.0.1 + underscore: 1.7.0 + dev: true + + /pngjs/2.3.1: + resolution: {integrity: sha512-ITNPqvx+SSssNFOgHQzGG87HrqQ0g2nMSHc1jjU5Piq9xJEJ40fiFEPz0S5HSSXxBHrTnhaBHIayTO5aRfk2vw==} + engines: {iojs: '>= 1.0.0', node: '>=0.10.0'} + dev: true + + /point-in-polygon/1.1.0: + resolution: {integrity: sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==} + dev: true + + /postcss-attribute-case-insensitive/5.0.2: + resolution: {integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss-selector-parser: 6.0.11 + dev: true + + /postcss-attribute-case-insensitive/5.0.2_postcss@8.4.19: + resolution: {integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.19 + postcss-selector-parser: 6.0.11 + dev: true + + /postcss-clamp/4.1.0: + resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} + engines: {node: '>=7.6.0'} + peerDependencies: + postcss: ^8.4.6 + dependencies: + postcss-value-parser: 4.2.0 + dev: true + + /postcss-clamp/4.1.0_postcss@8.4.19: + resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} + engines: {node: '>=7.6.0'} + peerDependencies: + postcss: ^8.4.6 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-color-functional-notation/4.2.4: + resolution: {integrity: sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss-value-parser: 4.2.0 + dev: true + + /postcss-color-functional-notation/4.2.4_postcss@8.4.19: + resolution: {integrity: sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-color-hex-alpha/8.0.4: + resolution: {integrity: sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss-value-parser: 4.2.0 + dev: true + + /postcss-color-hex-alpha/8.0.4_postcss@8.4.19: + resolution: {integrity: sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-color-rebeccapurple/7.1.1: + resolution: {integrity: sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss-value-parser: 4.2.0 + dev: true + + /postcss-color-rebeccapurple/7.1.1_postcss@8.4.19: + resolution: {integrity: sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-custom-media/8.0.2: + resolution: {integrity: sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss-value-parser: 4.2.0 + dev: true + + /postcss-custom-media/8.0.2_postcss@8.4.19: + resolution: {integrity: sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-custom-properties/12.1.11: + resolution: {integrity: sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss-value-parser: 4.2.0 + dev: true + + /postcss-custom-properties/12.1.11_postcss@8.4.19: + resolution: {integrity: sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-custom-selectors/6.0.3: + resolution: {integrity: sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss-selector-parser: 6.0.11 + dev: true + + /postcss-custom-selectors/6.0.3_postcss@8.4.19: + resolution: {integrity: sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.19 + postcss-selector-parser: 6.0.11 + dev: true + + /postcss-dir-pseudo-class/6.0.5: + resolution: {integrity: sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss-selector-parser: 6.0.11 + dev: true + + /postcss-dir-pseudo-class/6.0.5_postcss@8.4.19: + resolution: {integrity: sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.19 + postcss-selector-parser: 6.0.11 + dev: true + + /postcss-double-position-gradients/3.1.2: + resolution: {integrity: sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-double-position-gradients/3.1.2_postcss@8.4.19: + resolution: {integrity: sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.19 + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-env-function/4.0.6: + resolution: {integrity: sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss-value-parser: 4.2.0 + dev: true + + /postcss-env-function/4.0.6_postcss@8.4.19: + resolution: {integrity: sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-flexbugs-fixes/5.0.2_postcss@8.4.19: + resolution: {integrity: sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==} + peerDependencies: + postcss: ^8.1.4 + dependencies: + postcss: 8.4.19 + dev: true + + /postcss-focus-visible/6.0.4: + resolution: {integrity: sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss-selector-parser: 6.0.11 + dev: true + + /postcss-focus-visible/6.0.4_postcss@8.4.19: + resolution: {integrity: sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.19 + postcss-selector-parser: 6.0.11 + dev: true + + /postcss-focus-within/5.0.4: + resolution: {integrity: sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss-selector-parser: 6.0.11 + dev: true + + /postcss-focus-within/5.0.4_postcss@8.4.19: + resolution: {integrity: sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.19 + postcss-selector-parser: 6.0.11 + dev: true + + /postcss-font-variant/5.0.0: + resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} + peerDependencies: + postcss: ^8.1.0 + dev: true + + /postcss-font-variant/5.0.0_postcss@8.4.19: + resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.19 + dev: true + + /postcss-gap-properties/3.0.5: + resolution: {integrity: sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dev: true + + /postcss-gap-properties/3.0.5_postcss@8.4.19: + resolution: {integrity: sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.19 + dev: true + + /postcss-html/0.36.0_j55xdkkcxc32kvnyvx3y7casfm: + resolution: {integrity: sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==} + peerDependencies: + postcss: '>=5.0.0' + postcss-syntax: '>=0.36.0' + dependencies: + htmlparser2: 3.10.1 + postcss: 7.0.39 + postcss-syntax: 0.36.2_kei4jy7wdgbhc236h4oijypxom + dev: true + + /postcss-image-set-function/4.0.7: + resolution: {integrity: sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss-value-parser: 4.2.0 + dev: true + + /postcss-image-set-function/4.0.7_postcss@8.4.19: + resolution: {integrity: sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-initial/4.0.1: + resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==} + peerDependencies: + postcss: ^8.0.0 + dev: true + + /postcss-initial/4.0.1_postcss@8.4.19: + resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.19 + dev: true + + /postcss-lab-function/4.2.1: + resolution: {integrity: sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-lab-function/4.2.1_postcss@8.4.19: + resolution: {integrity: sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.19 + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-less/3.1.4: + resolution: {integrity: sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==} + engines: {node: '>=6.14.4'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-less/4.0.1: + resolution: {integrity: sha512-C92S4sHlbDpefJ2QQJjrucCcypq3+KZPstjfuvgOCNnGx0tF9h8hXgAlOIATGAxMXZXaF+nVp+/Mi8pCAWdSmw==} + engines: {node: '>=10'} + dependencies: + postcss: 8.4.19 + dev: true + + /postcss-logical/5.0.4: + resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dev: true + + /postcss-logical/5.0.4_postcss@8.4.19: + resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.19 + dev: true + + /postcss-media-minmax/5.0.0: + resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.1.0 + dev: true + + /postcss-media-minmax/5.0.0_postcss@8.4.19: + resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.19 + dev: true + + /postcss-media-query-parser/0.2.3: + resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} + dev: true + + /postcss-modules-extract-imports/3.0.0_postcss@8.4.19: + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.19 + dev: true + + /postcss-modules-local-by-default/4.0.0_postcss@8.4.19: + resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0_postcss@8.4.19 + postcss: 8.4.19 + postcss-selector-parser: 6.0.11 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-modules-scope/3.0.0_postcss@8.4.19: + resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.19 + postcss-selector-parser: 6.0.11 + dev: true + + /postcss-modules-values/4.0.0_postcss@8.4.19: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0_postcss@8.4.19 + postcss: 8.4.19 + dev: true + + /postcss-nesting/10.2.0: + resolution: {integrity: sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/selector-specificity': 2.0.2_laljekdltgzr3kfi7r4exvsr5a + postcss-selector-parser: 6.0.11 + dev: true + + /postcss-nesting/10.2.0_postcss@8.4.19: + resolution: {integrity: sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/selector-specificity': 2.0.2_tbwh2mpcdwdeb2slx6bobindua + postcss: 8.4.19 + postcss-selector-parser: 6.0.11 + dev: true + + /postcss-opacity-percentage/1.1.2: + resolution: {integrity: sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==} + engines: {node: ^12 || ^14 || >=16} + dev: true + + /postcss-overflow-shorthand/3.0.4: + resolution: {integrity: sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss-value-parser: 4.2.0 + dev: true + + /postcss-overflow-shorthand/3.0.4_postcss@8.4.19: + resolution: {integrity: sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-page-break/3.0.4: + resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} + peerDependencies: + postcss: ^8 + dev: true + + /postcss-page-break/3.0.4_postcss@8.4.19: + resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} + peerDependencies: + postcss: ^8 + dependencies: + postcss: 8.4.19 + dev: true + + /postcss-place/7.0.5: + resolution: {integrity: sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss-value-parser: 4.2.0 + dev: true + + /postcss-place/7.0.5_postcss@8.4.19: + resolution: {integrity: sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-prefix-selector/1.16.0: + resolution: {integrity: sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==} + peerDependencies: + postcss: '>4 <9' + dev: true + + /postcss-preset-env/7.5.0: + resolution: {integrity: sha512-0BJzWEfCdTtK2R3EiKKSdkE51/DI/BwnhlnicSW482Ym6/DGHud8K0wGLcdjip1epVX0HKo4c8zzTeV/SkiejQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/postcss-color-function': 1.1.1 + '@csstools/postcss-font-format-keywords': 1.0.1 + '@csstools/postcss-hwb-function': 1.0.2 + '@csstools/postcss-ic-unit': 1.0.1 + '@csstools/postcss-is-pseudo-class': 2.0.7 + '@csstools/postcss-normalize-display-values': 1.0.1 + '@csstools/postcss-oklab-function': 1.1.1 + '@csstools/postcss-progressive-custom-properties': 1.3.0 + '@csstools/postcss-stepped-value-functions': 1.0.1 + '@csstools/postcss-unset-value': 1.0.2 + autoprefixer: 10.4.13 + browserslist: 4.21.4 + css-blank-pseudo: 3.0.3 + css-has-pseudo: 3.0.4 + css-prefers-color-scheme: 6.0.3 + cssdb: 6.6.3 + postcss-attribute-case-insensitive: 5.0.2 + postcss-clamp: 4.1.0 + postcss-color-functional-notation: 4.2.4 + postcss-color-hex-alpha: 8.0.4 + postcss-color-rebeccapurple: 7.1.1 + postcss-custom-media: 8.0.2 + postcss-custom-properties: 12.1.11 + postcss-custom-selectors: 6.0.3 + postcss-dir-pseudo-class: 6.0.5 + postcss-double-position-gradients: 3.1.2 + postcss-env-function: 4.0.6 + postcss-focus-visible: 6.0.4 + postcss-focus-within: 5.0.4 + postcss-font-variant: 5.0.0 + postcss-gap-properties: 3.0.5 + postcss-image-set-function: 4.0.7 + postcss-initial: 4.0.1 + postcss-lab-function: 4.2.1 + postcss-logical: 5.0.4 + postcss-media-minmax: 5.0.0 + postcss-nesting: 10.2.0 + postcss-opacity-percentage: 1.1.2 + postcss-overflow-shorthand: 3.0.4 + postcss-page-break: 3.0.4 + postcss-place: 7.0.5 + postcss-pseudo-class-any-link: 7.1.6 + postcss-replace-overflow-wrap: 4.0.0 + postcss-selector-not: 5.0.0 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-preset-env/7.5.0_postcss@8.4.19: + resolution: {integrity: sha512-0BJzWEfCdTtK2R3EiKKSdkE51/DI/BwnhlnicSW482Ym6/DGHud8K0wGLcdjip1epVX0HKo4c8zzTeV/SkiejQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/postcss-color-function': 1.1.1_postcss@8.4.19 + '@csstools/postcss-font-format-keywords': 1.0.1_postcss@8.4.19 + '@csstools/postcss-hwb-function': 1.0.2_postcss@8.4.19 + '@csstools/postcss-ic-unit': 1.0.1_postcss@8.4.19 + '@csstools/postcss-is-pseudo-class': 2.0.7_postcss@8.4.19 + '@csstools/postcss-normalize-display-values': 1.0.1_postcss@8.4.19 + '@csstools/postcss-oklab-function': 1.1.1_postcss@8.4.19 + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.19 + '@csstools/postcss-stepped-value-functions': 1.0.1_postcss@8.4.19 + '@csstools/postcss-unset-value': 1.0.2_postcss@8.4.19 + autoprefixer: 10.4.13_postcss@8.4.19 + browserslist: 4.21.4 + css-blank-pseudo: 3.0.3_postcss@8.4.19 + css-has-pseudo: 3.0.4_postcss@8.4.19 + css-prefers-color-scheme: 6.0.3_postcss@8.4.19 + cssdb: 6.6.3 + postcss: 8.4.19 + postcss-attribute-case-insensitive: 5.0.2_postcss@8.4.19 + postcss-clamp: 4.1.0_postcss@8.4.19 + postcss-color-functional-notation: 4.2.4_postcss@8.4.19 + postcss-color-hex-alpha: 8.0.4_postcss@8.4.19 + postcss-color-rebeccapurple: 7.1.1_postcss@8.4.19 + postcss-custom-media: 8.0.2_postcss@8.4.19 + postcss-custom-properties: 12.1.11_postcss@8.4.19 + postcss-custom-selectors: 6.0.3_postcss@8.4.19 + postcss-dir-pseudo-class: 6.0.5_postcss@8.4.19 + postcss-double-position-gradients: 3.1.2_postcss@8.4.19 + postcss-env-function: 4.0.6_postcss@8.4.19 + postcss-focus-visible: 6.0.4_postcss@8.4.19 + postcss-focus-within: 5.0.4_postcss@8.4.19 + postcss-font-variant: 5.0.0_postcss@8.4.19 + postcss-gap-properties: 3.0.5_postcss@8.4.19 + postcss-image-set-function: 4.0.7_postcss@8.4.19 + postcss-initial: 4.0.1_postcss@8.4.19 + postcss-lab-function: 4.2.1_postcss@8.4.19 + postcss-logical: 5.0.4_postcss@8.4.19 + postcss-media-minmax: 5.0.0_postcss@8.4.19 + postcss-nesting: 10.2.0_postcss@8.4.19 + postcss-opacity-percentage: 1.1.2 + postcss-overflow-shorthand: 3.0.4_postcss@8.4.19 + postcss-page-break: 3.0.4_postcss@8.4.19 + postcss-place: 7.0.5_postcss@8.4.19 + postcss-pseudo-class-any-link: 7.1.6_postcss@8.4.19 + postcss-replace-overflow-wrap: 4.0.0_postcss@8.4.19 + postcss-selector-not: 5.0.0_postcss@8.4.19 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-pseudo-class-any-link/7.1.6: + resolution: {integrity: sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss-selector-parser: 6.0.11 + dev: true + + /postcss-pseudo-class-any-link/7.1.6_postcss@8.4.19: + resolution: {integrity: sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.19 + postcss-selector-parser: 6.0.11 + dev: true + + /postcss-replace-overflow-wrap/4.0.0: + resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} + peerDependencies: + postcss: ^8.0.3 + dev: true + + /postcss-replace-overflow-wrap/4.0.0_postcss@8.4.19: + resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} + peerDependencies: + postcss: ^8.0.3 + dependencies: + postcss: 8.4.19 + dev: true + + /postcss-resolve-nested-selector/0.1.1: + resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} + dev: true + + /postcss-safe-parser/4.0.2: + resolution: {integrity: sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-safe-parser/6.0.0_postcss@8.4.19: + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + dependencies: + postcss: 8.4.19 + dev: true + + /postcss-sass/0.4.4: + resolution: {integrity: sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==} + dependencies: + gonzales-pe: 4.3.0 + postcss: 7.0.39 + dev: true + + /postcss-scss/2.1.1: + resolution: {integrity: sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==} + engines: {node: '>=6.0.0'} + dependencies: + postcss: 7.0.39 + dev: true + + /postcss-selector-not/5.0.0: + resolution: {integrity: sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==} + peerDependencies: + postcss: ^8.1.0 + dependencies: + balanced-match: 1.0.2 + dev: true + + /postcss-selector-not/5.0.0_postcss@8.4.19: + resolution: {integrity: sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==} + peerDependencies: + postcss: ^8.1.0 + dependencies: + balanced-match: 1.0.2 + postcss: 8.4.19 + dev: true + + /postcss-selector-parser/6.0.11: + resolution: {integrity: sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-sorting/6.0.0_postcss@8.4.19: + resolution: {integrity: sha512-bYJ0vgAiGbjCBKi7B07CzsBc9eM84nLEbavUmwNp8rAa+PNyrgdH+6PpnqTtciLuUs99c4rFQQmCaYgeBQYmSQ==} + peerDependencies: + postcss: ^8.0.4 + dependencies: + lodash: 4.17.21 + postcss: 8.4.19 + dev: true + + /postcss-syntax/0.36.2_kei4jy7wdgbhc236h4oijypxom: + resolution: {integrity: sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==} + peerDependencies: + postcss: '>=5.0.0' + postcss-html: '*' + postcss-jsx: '*' + postcss-less: '*' + postcss-markdown: '*' + postcss-scss: '*' + peerDependenciesMeta: + postcss-html: + optional: true + postcss-jsx: + optional: true + postcss-less: + optional: true + postcss-markdown: + optional: true + postcss-scss: + optional: true + dependencies: + postcss: 7.0.39 + postcss-html: 0.36.0_j55xdkkcxc32kvnyvx3y7casfm + postcss-less: 3.1.4 + postcss-scss: 2.1.1 + dev: true + + /postcss-syntax/0.36.2_postcss@8.4.19: + resolution: {integrity: sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==} + peerDependencies: + postcss: '>=5.0.0' + postcss-html: '*' + postcss-jsx: '*' + postcss-less: '*' + postcss-markdown: '*' + postcss-scss: '*' + peerDependenciesMeta: + postcss-html: + optional: true + postcss-jsx: + optional: true + postcss-less: + optional: true + postcss-markdown: + optional: true + postcss-scss: + optional: true + dependencies: + postcss: 8.4.19 + dev: true + + /postcss-value-parser/4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + + /postcss/7.0.39: + resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} + engines: {node: '>=6.0.0'} + dependencies: + picocolors: 0.2.1 + source-map: 0.6.1 + dev: true + + /postcss/8.4.19: + resolution: {integrity: sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /preceptor-core/0.10.1: + resolution: {integrity: sha512-WLDk+UowEESixvlhiamGOj/iqWrp8IWeCCHvBZrLh0g4/A1Fa77fDQWqQUd5S5rScT+9u49aDfa45xYRkxqmiA==} + dependencies: + log4js: 1.1.1 + underscore: 1.7.0 + transitivePeerDependencies: + - supports-color + dev: true + + /prelude-ls/1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + dev: true + + /prelude-ls/1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + /prettier-plugin-organize-imports/2.3.4_2gbcgqmzq2pxiocqw2qs7hdeqe: + resolution: {integrity: sha512-R8o23sf5iVL/U71h9SFUdhdOEPsi3nm42FD/oDYIZ2PQa4TNWWuWecxln6jlIQzpZTDMUeO1NicJP6lLn2TtRw==} + peerDependencies: + prettier: '>=2.0' + typescript: '>=2.9' + dependencies: + prettier: 2.8.1 + typescript: 4.9.4 + dev: true + + /prettier-plugin-packagejson/2.3.0_prettier@2.8.1: + resolution: {integrity: sha512-2SAPMMk1UDkqsB7DifWKcwCm6VC52JXMrzLHfbcQHJRWhRCj9zziOy+s+2XOyPBeyqFqS+A/1IKzOrxKFTo6pw==} + peerDependencies: + prettier: '>= 1.16.0' + peerDependenciesMeta: + prettier: + optional: true + dependencies: + prettier: 2.8.1 + sort-package-json: 1.57.0 + dev: true + + /prettier-plugin-two-style-order/1.0.1_prettier@2.8.1: + resolution: {integrity: sha512-ETltO2FRR/Pxc7bsgz2XwuzWSPwafl7/v5+5Rria4S579CTas7dya+xsmbkix0q1tYQiuRjVVdfGnCKlH/aOuQ==} + peerDependencies: + prettier: '>= 2.0.0' + dependencies: + postcss: 8.4.19 + postcss-less: 4.0.1 + postcss-sorting: 6.0.0_postcss@8.4.19 + prettier: 2.8.1 + dev: true + + /prettier/1.15.3: + resolution: {integrity: sha512-gAU9AGAPMaKb3NNSUUuhhFAS7SCO4ALTN4nRIn6PJ075Qd28Yn2Ig2ahEJWdJwJmlEBTUfC7mMUSFy8MwsOCfg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /prettier/2.8.1: + resolution: {integrity: sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: true + + /pretty-error/4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} + dependencies: + lodash: 4.17.21 + renderkid: 3.0.0 + dev: true + + /pretty-format/27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + dev: true + + /pretty-format/29.3.1: + resolution: {integrity: sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.0.0 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /process-nextick-args/2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: true + + /process-warning/1.0.0: + resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + dev: true + + /process/0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: true + + /progress/2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: true + + /promise/6.0.0: + resolution: {integrity: sha512-PjIqIEWR8EWwP5ml3Wf5KWIP3sIdXAew9vQ6vLOLV+z4LMa/8ZQyLd7sTWe2r8OuA8A9jsIYptDfbEn/L36ogw==} + dependencies: + asap: 1.0.0 + dev: true + + /promise/7.3.1: + resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} + dependencies: + asap: 2.0.6 + dev: true + + /prompts/2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + /prop-types/15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + /proxy-addr/2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + dev: true + + /proxy-compare/2.3.0: + resolution: {integrity: sha512-c3L2CcAi7f7pvlD0D7xsF+2CQIW8C3HaYx2Pfgq8eA4HAl3GAH6/dVYsyBbYF/0XJs2ziGLrzmz5fmzPm6A0pQ==} + dev: true + + /proxy-from-env/1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: true + + /psl/1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true + + /public-encrypt/4.0.3: + resolution: {integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==} + dependencies: + bn.js: 4.12.0 + browserify-rsa: 4.1.0 + create-hash: 1.2.0 + parse-asn1: 5.1.6 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + + /pump/3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /punycode/1.3.2: + resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} + dev: true + + /punycode/1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + dev: true + + /punycode/2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + engines: {node: '>=6'} + + /puppeteer-core/1.12.2: + resolution: {integrity: sha512-M+atMV5e+MwJdR+OwQVZ1xqAIwh3Ou4nUxNuf334GwpcLG+LDj5BwIph4J9y8YAViByRtWGL+uF8qX2Ggzb+Fg==} + engines: {node: '>=6.4.0'} + requiresBuild: true + dependencies: + debug: 4.3.4 + extract-zip: 1.7.0 + https-proxy-agent: 2.2.4 + mime: 2.6.0 + progress: 2.0.3 + proxy-from-env: 1.1.0 + rimraf: 2.7.1 + ws: 6.2.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /qiankun/2.8.4: + resolution: {integrity: sha512-9MCKTJZpb0L7CcWC80jNr4TZz9m2Pvh9QWHNKJ7vZAEUMRZBbMl3+wCV1VBcUJJIgfRMU5G+ksoW142rMFA0Ew==} + dependencies: + '@babel/runtime': 7.20.6 + import-html-entry: 1.14.0 + lodash: 4.17.21 + single-spa: 5.9.4 + dev: true + + /qs/6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + dependencies: + side-channel: 1.0.4 + dev: true + + /qs/6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + dev: true + + /query-string/6.14.1: + resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==} + engines: {node: '>=6'} + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + dev: true + + /querystring-es3/0.2.1: + resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} + engines: {node: '>=0.4.x'} + dev: true + + /querystring/0.2.0: + resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + dev: true + + /querystring/0.2.1: + resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + dev: false + + /querystringify/2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true + + /queue-microtask/1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + /quick-format-unescaped/4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + dev: true + + /quick-lru/4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + dev: true + + /raf/3.4.1: + resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} + dependencies: + performance-now: 2.1.0 + dev: true + + /randombytes/2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /randomfill/1.0.4: + resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + dependencies: + randombytes: 2.1.0 + safe-buffer: 5.2.1 + dev: true + + /range-parser/1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: true + + /raw-body/2.5.1: + resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + dev: true + + /rc-align/2.4.5: + resolution: {integrity: sha512-nv9wYUYdfyfK+qskThf4BQUSIadeI/dCsfaMZfNEoxm9HwOIioQ+LyqmMK6jWHAZQgOzMLaqawhuBXlF63vgjw==} + dependencies: + babel-runtime: 6.26.0 + dom-align: 1.12.4 + prop-types: 15.8.1 + rc-util: 4.21.1 + dev: true + + /rc-align/4.0.12_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-3DuwSJp8iC/dgHzwreOQl52soj40LchlfUHtgACOUtwGuoFIOVh6n/sCpfqCU8kO5+iz6qR0YKvjgB8iPdE3aQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + dom-align: 1.12.4 + lodash: 4.17.21 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + resize-observer-polyfill: 1.5.1 + + /rc-animate/2.11.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-1NyuCGFJG/0Y+9RKh5y/i/AalUCA51opyyS/jO2seELpgymZm2u9QV3xwODwEuzkmeQ1BDPxMLmYLcTJedPlkQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + css-animation: 1.6.1 + prop-types: 15.8.1 + raf: 3.4.1 + rc-util: 4.21.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-lifecycles-compat: 3.0.4 + dev: true + + /rc-cascader/3.7.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-SFtGpwmYN7RaWEAGTS4Rkc62ZV/qmQGg/tajr/7mfIkleuu8ro9Hlk6J+aA0x1YS4zlaZBtTcSaXM01QMiEV/A==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + array-tree-filter: 2.1.0 + classnames: 2.3.2 + rc-select: 14.1.16_biqbaboplfbrettd7655fr4n2y + rc-tree: 5.7.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-checkbox/2.0.3: + resolution: {integrity: sha512-sSDV5AcxK5CxBTyUNj9pb0zfhdgLLsWKHwJG18ikeGoIwklcxXvIF6cI/KGVbPLFDa8mPS5WLOlLRqbq/1/ouw==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + prop-types: 15.8.1 + rc-util: 4.21.1 + dev: true + + /rc-checkbox/2.3.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-collapse/1.9.3_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-8cG+FzudmgFCC9zRGKXJZA36zoI9Dmyjp6UDi8N80sXUch0JOpsZDxgcFzw4HPpPpK/dARtTilEe9zyuspnW0w==} + dependencies: + classnames: 2.3.2 + css-animation: 1.6.1 + prop-types: 15.8.1 + rc-animate: 2.11.1_biqbaboplfbrettd7655fr4n2y + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rc-collapse/3.4.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-jpTwLgJzkhAgp2Wpi3xmbTbbYExg6fkptL67Uu5LCRVEj6wqmy0DHTjjeynsjOLsppHGHu41t1ELntZ0lEvS/Q==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + shallowequal: 1.1.0 + + /rc-dialog/9.0.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-s3U+24xWUuB6Bn2Lk/Qt6rufy+uT+QvWkiFhNBcO9APLxcFFczWamaq7x9h8SCuhfc1nHcW4y8NbMsnAjNnWyg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + '@rc-component/portal': 1.0.3_biqbaboplfbrettd7655fr4n2y + classnames: 2.3.2 + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-drawer/6.0.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-ibWXGf8I+KRPXE03X4s0/xXzQI37YWXUV+oPy+R29GKxkjr98UTMgwvoQDKlZTm5AiaRuVFqhTKm0kNHqJh+TQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + '@rc-component/portal': 1.0.3_biqbaboplfbrettd7655fr4n2y + classnames: 2.3.2 + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-dropdown/4.0.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-OdpXuOcme1rm45cR0Jzgfl1otzmU4vuBVb+etXM8vcaULGokAKVpKlw8p6xzspG7jGd/XxShvq+N3VNEfk/l5g==} + peerDependencies: + react: '>=16.11.0' + react-dom: '>=16.11.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-field-form/1.27.3_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-HGqxHnmGQgkPApEcikV4qTg3BLPC82uB/cwBDftDt1pYaqitJfSl5TFTTUMKVEJVT5RqJ2Zi68ME1HmIMX2HAw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + async-validator: 4.2.5 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-gesture/0.0.22: + resolution: {integrity: sha512-6G6qrCE0MUTXyjh/powj91XkjRjoFL4HiJLPU5lALXHvGX+/efcUjGYUrHrrw0mwQdmrmg4POqnY/bibns+G3g==} + dependencies: + babel-runtime: 6.26.0 + dev: true + + /rc-image/5.12.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-FMldR/ODwQmlFlhjR4c6hsOHmnn4s9CxmW7PR/9XCYE1XHlGJ5OkSWOtJruoaLjVwt2tQYDRnLANf/mKZ9ReUg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + '@rc-component/portal': 1.0.3_biqbaboplfbrettd7655fr4n2y + classnames: 2.3.2 + rc-dialog: 9.0.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-input-number/7.3.11_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-aMWPEjFeles6PQnMqP5eWpxzsvHm9rh1jQOWXExUEIxhX62Fyl/ptifLHOn17+waDG1T/YUb6flfJbvwRhHrbA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: true + + /rc-input-number/7.4.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-r/Oub/sPYbzqLNUOHnnc9sbCu78a81KX+RCbRwmpvB4W6nptUySbdWS5KHV4Hak5CAE1LAd+wWm5JjvZizG1FA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + '@rc-component/mini-decimal': 1.0.1 + classnames: 2.3.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-input/0.1.4_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-FqDdNz+fV2dKNgfXzcSLKvC+jEs1709t7nD+WdfjrdSaOcefpgc7BUJYadc3usaING+b7ediMTfKxuJBsEFbXA==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-mentions/1.13.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-FCkaWw6JQygtOz0+Vxz/M/NWqrWHB9LwqlY2RtcuFqWJNFK9njijOOzTSsBGANliGufVUzx/xuPHmZPBV0+Hgw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-menu: 9.8.1_biqbaboplfbrettd7655fr4n2y + rc-textarea: 0.4.7_biqbaboplfbrettd7655fr4n2y + rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-menu/9.8.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-179weouypfjWJSRvvoo/vPy+StojsMzK2XC5jRNhL1ryt/N/8wAFESte8K6jZJkNp9DHDLFTe+dCGmikKpiFuA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-overflow: 1.2.8_biqbaboplfbrettd7655fr4n2y + rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + shallowequal: 1.1.0 + + /rc-motion/2.6.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-4w1FaX3dtV749P8GwfS4fYnFG4Rb9pxvCYPc/b2fw1cmlHJWNNgOFIz7ysiD+eOrzJSvnLJWlNQQncpNMXwwpg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-notification/4.6.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-NSmFYwrrdY3+un1GvDAJQw62Xi9LNMSsoQyo95tuaYrcad5Bn9gJUL8AREufRxSQAQnr64u3LtP3EUyLYT6bhw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: true + + /rc-notification/5.0.0-alpha.9_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-QPvq8VHe2M0SE5DHJf7ADWlvfWKnTsj5FVxcu39gdjX98kKmi+BHY1eTPAQkkdGqd6ZXv6xXHl8qKHyWhQcFPA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-overflow/1.2.8_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-QJ0UItckWPQ37ZL1dMEBAdY1dhfTXFL9k6oTTcyydVwoUNMnMqCGqnRNA98axSr/OeDKqR6DVFyi8eA5RQI/uQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-pagination/3.2.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-5tIXjB670WwwcAJzAqp2J+cOBS9W3cH/WU1EiYwXljuZ4vtZXKlY2Idq8FZrnYBz8KhN3vwPo9CoV/SJS6SL1w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-picker/2.7.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-oZH6FZ3j4iuBxHB4NvQ6ABRsS2If/Kpty1YFFsji7/aej6ruGmfM7WnJWQ88AoPfpJ++ya5z+nVEA8yCRYGKyw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + date-fns: 2.29.3 + dayjs: 1.11.7 + moment: 2.29.4 + rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + shallowequal: 1.1.0 + dev: true + + /rc-picker/3.1.2_lejchghvacj3hhjkogy3eaalky: + resolution: {integrity: sha512-PHf4E91JANMBVjovqhRcZw0fDZYWlDW9APhMD8VxBSs2QeKbnf+vE5BdA3YmHq227woSptbkm9rfhR4dgSn4+g==} + engines: {node: '>=8.x'} + peerDependencies: + date-fns: '>= 2.x' + dayjs: '>= 1.x' + moment: '>= 2.x' + react: '>=16.9.0' + react-dom: '>=16.9.0' + peerDependenciesMeta: + date-fns: + optional: true + dayjs: + optional: true + moment: + optional: true + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + dayjs: 1.11.7 + moment: 2.29.4 + rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + shallowequal: 1.1.0 + + /rc-progress/3.4.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-eAFDHXlk8aWpoXl0llrenPMt9qKHQXphxcVsnKs0FHC6eCSk1ebJtyaVjJUzKe0233ogiLDeEFK1Uihz3s67hw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-rate/2.9.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-SaiZFyN8pe0Fgphv8t3+kidlej+cq/EALkAJAc3A0w0XcPaH2L1aggM8bhe1u6GAGuQNAoFvTLjw4qLPGRKV5g==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-resize-observer/1.2.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-6W+UzT3PyDM0wVCEHfoW3qTHPTvbdSgiA43buiy8PzmeMnfgnDeb9NjdimMXMl3/TcrvvWl5RRVdp+NqcR47pQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + resize-observer-polyfill: 1.5.1 + + /rc-segmented/2.1.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-hUlonro+pYoZcwrH6Vm56B2ftLfQh046hrwif/VwLIw1j3zGt52p5mREBwmeVzXnSwgnagpOpfafspzs1asjGw==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-select/14.1.16_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-71XLHleuZmufpdV2vis5oituRkhg2WNvLpVMJBGWRar6WGAVOHXaY9DR5HvwWry3EGTn19BqnL6Xbybje6f8YA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-overflow: 1.2.8_biqbaboplfbrettd7655fr4n2y + rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-virtual-list: 3.4.11_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-slider/10.0.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-igTKF3zBet7oS/3yNiIlmU8KnZ45npmrmHlUUio8PNbIhzMcsh+oE/r2UD42Y6YD2D/s+kzCQkzQrPD6RY435Q==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + shallowequal: 1.1.0 + + /rc-slider/8.2.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-rnO36M3VhMoPWh1kRuCeJoluT4duAW7+5aLaAn9oLu2pKEKsuOFUh5DmA2kEo88UmvPV6nr7HHDeZuC8SNM/lA==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + prop-types: 15.8.1 + rc-tooltip: 3.7.3_biqbaboplfbrettd7655fr4n2y + rc-util: 4.21.1 + shallowequal: 1.1.0 + warning: 3.0.0 + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rc-steps/5.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-9TgRvnVYirdhbV0C3syJFj9EhCRqoJAsxt4i1rED5o8/ZcSv5TLIYyo4H8MCjLPvbe2R+oBAm/IYBEtC+OS1Rw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: true + + /rc-steps/6.0.0-alpha.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-d/GPx7ATlPbtFeOVt5FB19W11OBCmRd7lLknt4aSoCI6ukwJqpEhWu2INN4pDOQqN04y3PDsWl1q9hnw+ZC5AA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-swipeout/2.0.11: + resolution: {integrity: sha512-d37Lgn4RX4OOQyuA2BFo0rGlUwrmZk5q83srH3ixJ1Y1jidr2GKjgJDbNeGUVZPNfYBL91Elu6+xfVGftWf4Lg==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + rc-gesture: 0.0.22 + react-native-swipeout: 2.3.6 + dev: true + + /rc-switch/3.2.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: true + + /rc-switch/4.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-IfrYC99vN0gKaTyjQdqYuADU0eH00SAFHg3jOp8HrmUpJruhV1SohJzrCbPqPraZeX/6X/QKkdLfkdnUub05WA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-table/7.26.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-0cD8e6S+DTGAt5nBZQIPFYEaIukn17sfa5uFL98faHlH/whZzD8ii3dbFL4wmUDEL4BLybhYop+QUfZJ4CPvNQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + shallowequal: 1.1.0 + + /rc-tabs/12.4.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-FFlGwuTjQUznWzJtyhmHc6KAp5lRQFxKUv9Aj1UtsOYe2e7WGmuzcrd+/LQchuPe0VjhaZPdGkmFGcqGqNO6ow==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-dropdown: 4.0.1_biqbaboplfbrettd7655fr4n2y + rc-menu: 9.8.1_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-textarea/0.4.7_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-IQPd1CDI3mnMlkFyzt2O4gQ2lxUsnBAeJEoZGJnkkXgORNqyM9qovdrCj9NzcRfpHgLdzaEbU3AmobNFGUznwQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + shallowequal: 1.1.0 + + /rc-tooltip/3.7.3_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-dE2ibukxxkrde7wH9W8ozHKUO4aQnPZ6qBHtrTH9LoO836PjDdiaWO73fgPB05VfJs9FbZdmGPVEbXCeOP99Ww==} + dependencies: + babel-runtime: 6.26.0 + prop-types: 15.8.1 + rc-trigger: 2.6.5_biqbaboplfbrettd7655fr4n2y + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rc-tooltip/5.2.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-jtQzU/18S6EI3lhSGoDYhPqNpWajMtS5VV/ld1LwyfrDByQpYmw/LW6U7oFXXLukjfDHQ7Ju705A82PRNFWYhg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-tree-select/5.5.5_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-k2av7jF6tW9bIO4mQhaVdV4kJ1c54oxV3/hHVU+oD251Gb5JN+m1RbJFTMf1o0rAFqkvto33rxMdpafaGKQRJw==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-select: 14.1.16_biqbaboplfbrettd7655fr4n2y + rc-tree: 5.7.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-tree/5.7.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-nmnL6qLnfwVckO5zoqKL2I9UhwDqzyCtjITQCkwhimyz1zfuFkG5ZPIXpzD/Guzso94qQA/QrMsvzic5W6QDjg==} + engines: {node: '>=10.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-virtual-list: 3.4.11_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-trigger/2.6.5_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-m6Cts9hLeZWsTvWnuMm7oElhf+03GOjOLfTuU0QmdB9ZrW7jR2IpI5rpNM7i9MvAAlMAmTx5Zr7g3uu/aMvZAw==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + prop-types: 15.8.1 + rc-align: 2.4.5 + rc-animate: 2.11.1_biqbaboplfbrettd7655fr4n2y + rc-util: 4.21.1 + react-lifecycles-compat: 3.0.4 + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rc-trigger/5.3.4_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-mQv+vas0TwKcjAO2izNPkqR4j86OemLRmvL2nOzdP9OWNWA1ivoTt5hzFqYNW9zACwmTezRiN8bttrC7cZzYSw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-align: 4.0.12_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-upload/4.3.4_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-uVbtHFGNjHG/RyAfm9fluXB6pvArAGyAx8z7XzXXyorEgVIWj6mOlriuDm0XowDHYz4ycNK0nE0oP3cbFnzxiQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-util/4.21.1: + resolution: {integrity: sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg==} + dependencies: + add-dom-event-listener: 1.1.0 + prop-types: 15.8.1 + react-is: 16.13.1 + react-lifecycles-compat: 3.0.4 + shallowequal: 1.1.0 + + /rc-util/5.25.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-OyCO675K/rh4zG3e+LYaHw54WQFEYGV9ibkGawQxqCvf0G0PzUrLQjgZ6SfoHORdbEKN7eQMFn3hHQyA/P8Y5Q==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.6 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-is: 16.13.1 + shallowequal: 1.1.0 + + /rc-virtual-list/3.4.11_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-BvUUH60kkeTBPigN5F89HtGaA5jSP4y2aM6cJ4dk9Y42I9yY+h6i08wF6UKeDcxdfOU8j3I5HxkSS/xA77J3wA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.3.2 + rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /react-dev-inspector/1.8.3_tn6ozhzi5twwqsvqh5iimryhr4: + resolution: {integrity: sha512-okeWjG5M6BUpOzN1jymdnnx9cnTcj+4V0x8pmQkhToNMWEtn7IvihC0WIm3OXHgMXBfKg/lXE7s+0yoW2YWNmw==} + engines: {node: '>=12.0.0'} + peerDependencies: + react: '>=16.8.0' + dependencies: + '@babel/core': 7.20.5 + '@babel/generator': 7.20.5 + '@babel/parser': 7.20.5 + '@babel/traverse': 7.20.5 + '@babel/types': 7.20.5 + hotkeys-js: 3.10.1 + loader-utils: 2.0.4 + querystring: 0.2.1 + react: 18.2.0 + react-dev-utils: 12.0.1_ha6vam6werchizxrnqvarmz2zu + transitivePeerDependencies: + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack + dev: false + + /react-dev-utils/12.0.1_ha6vam6werchizxrnqvarmz2zu: + resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=2.7' + webpack: '>=4' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@babel/code-frame': 7.18.6 + address: 1.2.1 + browserslist: 4.21.4 + chalk: 4.1.2 + cross-spawn: 7.0.3 + detect-port-alt: 1.1.6 + escape-string-regexp: 4.0.0 + filesize: 8.0.7 + find-up: 5.0.0 + fork-ts-checker-webpack-plugin: 6.5.2_ha6vam6werchizxrnqvarmz2zu + global-modules: 2.0.0 + globby: 11.1.0 + gzip-size: 6.0.0 + immer: 9.0.16 + is-root: 2.1.0 + loader-utils: 3.2.1 + open: 8.4.0 + pkg-up: 3.1.0 + prompts: 2.4.2 + react-error-overlay: 6.0.11 + recursive-readdir: 2.2.3 + shell-quote: 1.7.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + typescript: 4.9.4 + transitivePeerDependencies: + - eslint + - supports-color + - vue-template-compiler + dev: false + + /react-dom/18.1.0_react@18.1.0: + resolution: {integrity: sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==} + peerDependencies: + react: ^18.1.0 + dependencies: + loose-envify: 1.4.0 + react: 18.1.0 + scheduler: 0.22.0 + dev: true + + /react-dom/18.2.0_react@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + + /react-error-overlay/6.0.11: + resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} + dev: false + + /react-error-overlay/6.0.9: + resolution: {integrity: sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==} + dev: true + + /react-fast-compare/3.2.0: + resolution: {integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==} + + /react-helmet-async/1.3.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@babel/runtime': 7.20.6 + invariant: 2.2.4 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-fast-compare: 3.2.0 + shallowequal: 1.1.0 + + /react-helmet-async/1.3.0_ef5jwxihqo6n7gxfmzogljlgcm: + resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} + peerDependencies: + react: ^16.6.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@babel/runtime': 7.20.6 + invariant: 2.2.4 + prop-types: 15.8.1 + react: 18.1.0 + react-dom: 18.1.0_react@18.1.0 + react-fast-compare: 3.2.0 + shallowequal: 1.1.0 + dev: true + + /react-intl/3.12.1_react@18.2.0: + resolution: {integrity: sha512-cgumW29mwROIqyp8NXStYsoIm27+8FqnxykiLSawWjOxGIBeLuN/+p2srei5SRIumcJefOkOIHP+NDck05RgHg==} + peerDependencies: + react: ^16.3.0 + dependencies: + '@formatjs/intl-displaynames': 1.2.10 + '@formatjs/intl-listformat': 1.4.8 + '@formatjs/intl-relativetimeformat': 4.5.16 + '@formatjs/intl-unified-numberformat': 3.3.7 + '@formatjs/intl-utils': 2.3.0 + '@types/hoist-non-react-statics': 3.3.1 + '@types/invariant': 2.2.35 + hoist-non-react-statics: 3.3.2 + intl-format-cache: 4.3.1 + intl-messageformat: 7.8.4 + intl-messageformat-parser: 3.6.4 + react: 18.2.0 + shallow-equal: 1.2.1 + dev: true + + /react-is/16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + /react-is/17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + dev: true + + /react-is/18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + + /react-lifecycles-compat/3.0.4: + resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + + /react-merge-refs/1.1.0: + resolution: {integrity: sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==} + dev: true + + /react-native-swipeout/2.3.6: + resolution: {integrity: sha512-t9suUCspzck4vp2pWggWe0frS/QOtX6yYCawHnEes75A7dZCEE74bxX2A1bQzGH9cUMjq6xsdfC94RbiDKIkJg==} + deprecated: Package no longer supported. Use at your own risk or consider using https://github.com/software-mansion/react-native-gesture-handler + dependencies: + create-react-class: 15.7.0 + prop-types: 15.8.1 + react-tween-state: 0.1.5 + dev: true + + /react-redux/7.2.9_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==} + peerDependencies: + react: ^16.8.3 || ^17 || ^18 + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + '@babel/runtime': 7.20.6 + '@types/react-redux': 7.1.24 + hoist-non-react-statics: 3.3.2 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-is: 17.0.2 + dev: true + + /react-redux/8.0.5_x3na3lw4ol2i5xbh2dqwzqy74u: + resolution: {integrity: sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==} + peerDependencies: + '@types/react': ^16.8 || ^17.0 || ^18.0 + '@types/react-dom': ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + react-native: '>=0.59' + redux: ^4 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + react-dom: + optional: true + react-native: + optional: true + redux: + optional: true + dependencies: + '@babel/runtime': 7.20.6 + '@types/hoist-non-react-statics': 3.3.1 + '@types/react': 17.0.52 + '@types/react-dom': 17.0.18 + '@types/use-sync-external-store': 0.0.3 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-is: 18.2.0 + redux: 4.2.0 + use-sync-external-store: 1.2.0_react@18.2.0 + dev: true + + /react-refresh/0.11.0: + resolution: {integrity: sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==} + engines: {node: '>=0.10.0'} + dev: true + + /react-refresh/0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + dev: true + + /react-router-dom/6.3.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + history: 5.3.0 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-router: 6.3.0_react@18.2.0 + dev: true + + /react-router-dom/6.3.0_ef5jwxihqo6n7gxfmzogljlgcm: + resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + history: 5.3.0 + react: 18.1.0 + react-dom: 18.1.0_react@18.1.0 + react-router: 6.3.0_react@18.1.0 + dev: true + + /react-router-dom/6.4.5_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-a7HsgikBR0wNfroBHcZUCd9+mLRqZS8R5U1Z1mzLWxFXEkUT3vR1XXmSIVoVpxVX8Bar0nQYYYc9Yipq8dWwAA==} + engines: {node: '>=14'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + '@remix-run/router': 1.0.5 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + react-router: 6.4.5_react@18.2.0 + dev: true + + /react-router/6.3.0_react@18.1.0: + resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==} + peerDependencies: + react: '>=16.8' + dependencies: + history: 5.3.0 + react: 18.1.0 + dev: true + + /react-router/6.3.0_react@18.2.0: + resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==} + peerDependencies: + react: '>=16.8' + dependencies: + history: 5.3.0 + react: 18.2.0 + dev: true + + /react-router/6.4.5_react@18.2.0: + resolution: {integrity: sha512-1RQJ8bM70YEumHIlNUYc6mFfUDoWa5EgPDenK/fq0bxD8DYpQUi/S6Zoft+9DBrh2xmtg92N5HMAJgGWDhKJ5Q==} + engines: {node: '>=14'} + peerDependencies: + react: '>=16.8' + dependencies: + '@remix-run/router': 1.0.5 + react: 18.2.0 + dev: true + + /react-sortable-hoc/2.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-JZUw7hBsAHXK7PTyErJyI7SopSBFRcFHDjWW5SWjcugY0i6iH7f+eJkY8cJmGMlZ1C9xz1J3Vjz0plFpavVeRg==} + peerDependencies: + react: ^16.3.0 || ^17.0.0 + react-dom: ^16.3.0 || ^17.0.0 + dependencies: + '@babel/runtime': 7.20.6 + invariant: 2.2.4 + prop-types: 15.8.1 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /react-tween-state/0.1.5: + resolution: {integrity: sha512-sJQpjsdn0wjlDIUpfpb7jQGnOG8hAEW2e8k0KPA+xmf5KFa6Xat2JldbmxBhaqP0S/uIXhVE5ymKyH/b9X8nYA==} + dependencies: + raf: 3.4.1 + tween-functions: 1.2.0 + dev: true + + /react/18.1.0: + resolution: {integrity: sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + dev: true + + /react/18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + + /reactcss/1.2.3_react@18.2.0: + resolution: {integrity: sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==} + peerDependencies: + react: '*' + dependencies: + lodash: 4.17.21 + react: 18.2.0 + + /read-pkg-up/7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg/5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.1 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + + /readable-stream/1.1.14: + resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + dev: true + + /readable-stream/2.3.7: + resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + + /readable-stream/3.6.0: + resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + + /real-require/0.1.0: + resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} + engines: {node: '>= 12.13.0'} + dev: true + + /recursive-readdir/2.2.3: + resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} + engines: {node: '>=6.0.0'} + dependencies: + minimatch: 3.1.2 + dev: false + + /redent/3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + dev: true + + /redux-saga/0.16.2: + resolution: {integrity: sha512-iIjKnRThI5sKPEASpUvySemjzwqwI13e3qP7oLub+FycCRDysLSAOwt958niZW6LhxfmS6Qm1BzbU70w/Koc4w==} + dev: true + + /redux/4.2.0: + resolution: {integrity: sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==} + dependencies: + '@babel/runtime': 7.20.6 + dev: true + + /reflect.getprototypeof/1.0.3: + resolution: {integrity: sha512-TTAOZpkJ2YLxl7mVHWrNo3iDMEkYlva/kgFcXndqMgbo/AZUmmavEkdXV+hXtE4P8xdyEKRzalaFqZVuwIk/Nw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.5 + get-intrinsic: 1.1.3 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: true + + /reftools/1.1.9: + resolution: {integrity: sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==} + dev: true + + /regenerate-unicode-properties/10.0.1: + resolution: {integrity: sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: true + + /regenerate-unicode-properties/10.1.0: + resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + dev: true + + /regenerate/1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + dev: true + + /regenerator-runtime/0.11.1: + resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} + dev: true + + /regenerator-runtime/0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + /regenerator-runtime/0.13.9: + resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} + dev: true + + /regenerator-transform/0.15.1: + resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} + dependencies: + '@babel/runtime': 7.20.6 + dev: true + + /regexp-tree/0.1.24: + resolution: {integrity: sha512-s2aEVuLhvnVJW6s/iPgEGK6R+/xngd2jNQ+xy4bXNDKxZKJH6jpPHY6kVeVv1IeLCHgswRj+Kl3ELaDjG6V1iw==} + hasBin: true + dev: true + + /regexp.prototype.flags/1.4.3: + resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + functions-have-names: 1.2.3 + dev: true + + /regexpp/3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + + /regexpu-core/5.2.2: + resolution: {integrity: sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.0 + regjsgen: 0.7.1 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + dev: true + + /regjsgen/0.7.1: + resolution: {integrity: sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==} + dev: true + + /regjsparser/0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + + /relateurl/0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + dev: true + + /remark-parse/9.0.0: + resolution: {integrity: sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==} + dependencies: + mdast-util-from-markdown: 0.8.5 + transitivePeerDependencies: + - supports-color + dev: true + + /remark-stringify/9.0.1: + resolution: {integrity: sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==} + dependencies: + mdast-util-to-markdown: 0.6.5 + dev: true + + /remark/13.0.0: + resolution: {integrity: sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==} + dependencies: + remark-parse: 9.0.0 + remark-stringify: 9.0.1 + unified: 9.2.2 + transitivePeerDependencies: + - supports-color + dev: true + + /renderkid/3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.21 + strip-ansi: 6.0.1 + dev: true + + /repeat-string/1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + dev: true + + /request/2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + dependencies: + aws-sign2: 0.7.0 + aws4: 1.11.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + dev: true + + /require-directory/2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-from-string/2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /requires-port/1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + dev: true + + /reserved-words/0.1.2: + resolution: {integrity: sha512-0S5SrIUJ9LfpbVl4Yzij6VipUdafHrOTzvmfazSw/jeZrZtQK303OPZW+obtkaw7jQlTQppy0UvZWm9872PbRw==} + dev: true + + /resize-observer-polyfill/1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + + /resolve-cwd/3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + dependencies: + resolve-from: 5.0.0 + dev: true + + /resolve-from/4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + /resolve-from/5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve.exports/1.1.0: + resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} + engines: {node: '>=10'} + dev: true + + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true + dependencies: + is-core-module: 2.11.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /resolve/2.0.0-next.4: + resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + hasBin: true + dependencies: + is-core-module: 2.11.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /restore-cursor/3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + + /reusify/1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + /rfdc/1.3.0: + resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + dev: true + + /rimraf/2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rimraf/3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + + /ripemd160/2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + dev: true + + /rmc-align/1.0.0: + resolution: {integrity: sha512-3gEa5/+hqqoEVoeQ25KoRc8DOsXIdSaVpaBq1zQFaV941LR3xvZIRTlxTDT/IagYwoGM1KZea/jd7cNMYP34Rg==} + dependencies: + babel-runtime: 6.26.0 + dom-align: 1.12.4 + rc-util: 4.21.1 + dev: true + + /rmc-calendar/1.1.4_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-xxQZaPFDnpHt4IFO8mukYrXSgC1W8LcNVp+EoX4iyeOJFimungOKB/iP5/cy+st8yXq8lUgk9TXsHNtM6Xo6ZA==} + dependencies: + babel-runtime: 6.26.0 + rc-animate: 2.11.1_biqbaboplfbrettd7655fr4n2y + rmc-date-picker: 6.0.10_biqbaboplfbrettd7655fr4n2y + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rmc-cascader/5.0.3_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-PxDhMjWViDdG4SMZqoXtAthGwgDyYnyxxZEE17IDDYsiCHpWtOhoIL8nsI+/hZ212UT/XF2LpqCsOlMoJiYk+w==} + dependencies: + array-tree-filter: 2.1.0 + babel-runtime: 6.26.0 + rmc-picker: 5.0.10_biqbaboplfbrettd7655fr4n2y + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rmc-date-picker/6.0.10_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-/9+I6lm3EDEl6M7862V6++zFuxwsM0UEq8wSHbotYIPPmyB/65gx1cviblghOv2QfB0O9+U2w3qEJlRP/WsMrA==} + dependencies: + babel-runtime: 6.26.0 + rmc-picker: 5.0.10_biqbaboplfbrettd7655fr4n2y + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rmc-dialog/1.1.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-28aJqtPTX6v13Z/aU1WBy1AFIXkE74PxZXde7JvtEIy9hQDTjH8fqOi822BpzAbXCyNE7jF9iFomy3H2ClsDJA==} + dependencies: + babel-runtime: 6.26.0 + rc-animate: 2.11.1_biqbaboplfbrettd7655fr4n2y + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rmc-drawer/0.4.11: + resolution: {integrity: sha512-YfB9XEJ8iM0MMuLWAK4313uOxSM8NAljC8Cqun1KamXutglYTuRviUuTLNSOzV8HHPp5kNpsVduvPCGLWXvThw==} + engines: {node: '>=4.0.0'} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + prop-types: 15.8.1 + dev: true + + /rmc-feedback/2.0.0: + resolution: {integrity: sha512-5PWOGOW7VXks/l3JzlOU9NIxRpuaSS8d9zA3UULUCuTKnpwBHNvv1jSJzxgbbCQeYzROWUpgKI4za3X4C/mKmQ==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + dev: true + + /rmc-input-number/1.0.5: + resolution: {integrity: sha512-prPkEtoOVde77GnEnEaBeWjBobMOPgGqU5bd0gxfp1kt1pUN740mMpVAcH7uxpJjVfmw+kuGWtiz4S7CueagSg==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + rmc-feedback: 2.0.0 + dev: true + + /rmc-list-view/0.11.5: + resolution: {integrity: sha512-eMOC5394tLNawcdEEhF7boMpQgpjJGDdL5lS+LblAWdBec7Q4EYkUdnrKNbt+O9k5RGM6nSLAGZK5oB4FN85Lg==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + fbjs: 0.8.18 + prop-types: 15.8.1 + warning: 3.0.0 + zscroller: 0.4.8 + dev: true + + /rmc-notification/1.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-9sPxjltFvtRLt2v312Hu7OXwk53pHkBYgINRDmnJ3A5NF1qtJeCCcdN0Xr0fzJ6sbQvtGju822tWHdzYA9u7Vw==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + prop-types: 15.8.1 + rc-animate: 2.11.1_biqbaboplfbrettd7655fr4n2y + rc-util: 4.21.1 + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rmc-nuka-carousel/3.0.1: + resolution: {integrity: sha512-w2EPTERMUUZqcUSKFuejjin7xsMlhrLrtS0A/igTXpFJGq3kemDKcRi7q3pSYDuZBHYBl5iV4UqsLLkjdFtrYA==} + dependencies: + exenv: 1.2.2 + raf: 3.4.1 + dev: true + + /rmc-picker/5.0.10_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-KZ70+WjcaZHnG5GyCxWCPFWAZ12s6NqyrbW73LeqH0WEqaTMMs0sOrk2f4mQAZ/CGT0XcFN6VZLw7Ozoxfn7LA==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + rmc-dialog: 1.1.1_biqbaboplfbrettd7655fr4n2y + rmc-feedback: 2.0.0 + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rmc-pull-to-refresh/1.0.13: + resolution: {integrity: sha512-iYLsURiR7G/sKmRA6p2kq6ZXicn7Hyeo6VQFljssV1eMW+fzDgihhaz0kv5mza0f88vphGJvjOihT9E6+xGb6Q==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + dev: true + + /rmc-steps/1.0.1: + resolution: {integrity: sha512-8ijtwp4D1CYTtI2yerXJYqCv+GQbiBc9T12nrFngd/vM0y+58CnznGphTAueF6IWf7qbxBwcjTrcFgg7bP2YGA==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + dev: true + + /rmc-tabs/1.2.29: + resolution: {integrity: sha512-wiJS9WSJi9JH9GQO+FqncX+zaHP31qHa/S8nDW9UXUx0qbCX294QcJEnvfB+WmsfUws7rXjs6sOQp5EDiObnHg==} + dependencies: + babel-runtime: 6.26.0 + rc-gesture: 0.0.22 + dev: true + + /rmc-tooltip/1.0.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-fSDArf2BlMVrHExmBiqb2TkCRJHshvXFJQ/7tMraLellwaJLNiwrxtWpW329k3S+zTtoVG8UxFS1TjBGEsMzRg==} + dependencies: + babel-runtime: 6.26.0 + rmc-trigger: 1.0.12_biqbaboplfbrettd7655fr4n2y + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rmc-trigger/1.0.12_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-AccQniX7PX7Pm8hBhHEsnf3JU6CA61Xc7fAt2WbO+oXrGaI/jqN8C3COhhOXG54S5iTOjLS26j858zshwAxR9A==} + dependencies: + babel-runtime: 6.26.0 + rc-animate: 2.11.1_biqbaboplfbrettd7655fr4n2y + rc-util: 4.21.1 + rmc-align: 1.0.0 + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rollup-plugin-visualizer/5.6.0: + resolution: {integrity: sha512-CKcc8GTUZjC+LsMytU8ocRr/cGZIfMR7+mdy4YnlyetlmIl/dM8BMnOEpD4JPIGt+ZVW7Db9ZtSsbgyeBH3uTA==} + engines: {node: '>=12'} + hasBin: true + peerDependencies: + rollup: ^2.0.0 + dependencies: + nanoid: 3.3.4 + open: 8.4.0 + source-map: 0.7.4 + yargs: 17.6.2 + dev: true + + /run-parallel/1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + + /rxjs/7.6.0: + resolution: {integrity: sha512-DDa7d8TFNUalGC9VqXvQ1euWNN7sc63TrUCuM9J998+ViviahMIjKSOU7rfcgFOF+FCD71BhDRv4hrFz+ImDLQ==} + dependencies: + tslib: 2.4.1 + dev: true + + /safe-buffer/5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true + + /safe-buffer/5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /safe-regex-test/1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + is-regex: 1.1.4 + dev: true + + /safe-regex/2.1.1: + resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} + dependencies: + regexp-tree: 0.1.24 + dev: true + + /safe-stable-stringify/2.4.1: + resolution: {integrity: sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==} + engines: {node: '>=10'} + dev: true + + /safer-buffer/2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /saxes/6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + dependencies: + xmlchars: 2.2.0 + dev: true + + /scheduler/0.22.0: + resolution: {integrity: sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==} + dependencies: + loose-envify: 1.4.0 + dev: true + + /scheduler/0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + dependencies: + loose-envify: 1.4.0 + + /schema-utils/2.7.0: + resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} + engines: {node: '>= 8.9.0'} + dependencies: + '@types/json-schema': 7.0.11 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: false + + /schema-utils/3.1.1: + resolution: {integrity: sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.11 + ajv: 6.12.6 + ajv-keywords: 3.5.2_ajv@6.12.6 + dev: true + + /screenfull/5.2.0: + resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} + engines: {node: '>=0.10.0'} + dev: true + + /scroll-into-view-if-needed/2.2.31: + resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} + dependencies: + compute-scroll-into-view: 1.0.20 + + /select-hose/2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + dev: true + + /semver-compare/1.0.0: + resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==} + dev: true + + /semver/5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + dev: true + + /semver/6.3.0: + resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + hasBin: true + + /semver/7.3.5: + resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /semver/7.3.8: + resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /send/0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /serve-static/1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + dev: true + + /setimmediate/1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: true + + /setprototypeof/1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + dev: true + + /sha.js/2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /shallow-equal/1.2.1: + resolution: {integrity: sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==} + dev: true + + /shallowequal/1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + + /shebang-command/2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex/3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + /shell-quote/1.7.4: + resolution: {integrity: sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==} + dev: false + + /should-equal/2.0.0: + resolution: {integrity: sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==} + dependencies: + should-type: 1.4.0 + dev: true + + /should-format/3.0.3: + resolution: {integrity: sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q==} + dependencies: + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + dev: true + + /should-type-adaptors/1.1.0: + resolution: {integrity: sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==} + dependencies: + should-type: 1.4.0 + should-util: 1.0.1 + dev: true + + /should-type/1.4.0: + resolution: {integrity: sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==} + dev: true + + /should-util/1.0.1: + resolution: {integrity: sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==} + dev: true + + /should/13.2.3: + resolution: {integrity: sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==} + dependencies: + should-equal: 2.0.0 + should-format: 3.0.3 + should-type: 1.4.0 + should-type-adaptors: 1.1.0 + should-util: 1.0.1 + dev: true + + /side-channel/1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + object-inspect: 1.12.2 + dev: true + + /signal-exit/3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /single-spa/5.9.4: + resolution: {integrity: sha512-QkEoh0AzGuU82qnbUUk0ydF78QbU5wMKqKKJn7uUQfBiOYlRQEfIOpLM4m23Sab+kTOLI1kbYhYeiQ7fX5KVVw==} + dev: true + + /sisteransi/1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + /slash/2.0.0: + resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} + engines: {node: '>=6'} + dev: true + + /slash/3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + /slash2/2.0.0: + resolution: {integrity: sha512-7ElvBydJPi3MHU/KEOblFSbO/skl4Z69jKkFCpYIYVOMSIZsKi4gYU43HGeZPmjxCXrHekoDAAewphPQNnsqtA==} + engines: {node: '>=6'} + dev: true + + /slice-ansi/3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /slice-ansi/4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + dev: true + + /sonic-boom/2.8.0: + resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} + dependencies: + atomic-sleep: 1.0.0 + dev: true + + /sort-object-keys/1.1.3: + resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} + dev: true + + /sort-package-json/1.57.0: + resolution: {integrity: sha512-FYsjYn2dHTRb41wqnv+uEqCUvBpK3jZcTp9rbz2qDTmel7Pmdtf+i2rLaaPMRZeSVM60V3Se31GyWFpmKs4Q5Q==} + hasBin: true + dependencies: + detect-indent: 6.1.0 + detect-newline: 3.1.0 + git-hooks-list: 1.0.3 + globby: 10.0.0 + is-plain-obj: 2.1.0 + sort-object-keys: 1.1.3 + dev: true + + /source-map-js/1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map-support/0.5.13: + resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map-support/0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map/0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + dev: false + + /source-map/0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map/0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: true + + /sourcemap-codec/1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + dev: true + + /spdx-correct/3.1.1: + resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.12 + dev: true + + /spdx-exceptions/2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: true + + /spdx-expression-parse/3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.12 + dev: true + + /spdx-license-ids/3.0.12: + resolution: {integrity: sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==} + dev: true + + /spdy-transport/3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + dependencies: + debug: 4.3.4 + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.0 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + dev: true + + /spdy/4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + dependencies: + debug: 4.3.4 + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /specificity/0.4.1: + resolution: {integrity: sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==} + hasBin: true + dev: true + + /split-on-first/1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + dev: true + + /split2/4.1.0: + resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} + engines: {node: '>= 10.x'} + dev: true + + /sprintf-js/1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + dev: true + + /sshpk/1.17.0: + resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + dev: true + + /stable/0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + dev: true + + /stack-utils/2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + dev: true + + /stackframe/1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + dev: true + + /statuses/2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + dev: true + + /stream-browserify/2.0.2: + resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.7 + dev: true + + /stream-buffers/1.0.1: + resolution: {integrity: sha512-t+8bSU8qPq7NnWHWAvikjcZf+biErLZzD15RroYft1IKQwYbkRyiwppT7kNqwdtYLS59YPxc4sTSvwbLSMaodw==} + engines: {node: '>= 0.3.0'} + dev: true + + /stream-http/2.8.3: + resolution: {integrity: sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==} + dependencies: + builtin-status-codes: 3.0.0 + inherits: 2.0.4 + readable-stream: 2.3.7 + to-arraybuffer: 1.0.1 + xtend: 4.0.2 + dev: true + + /stream-shift/1.0.1: + resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} + dev: true + + /streamroller/0.4.1: + resolution: {integrity: sha512-w0GGkMlWOiIBIYTmOWHTWKy9Y5hKxGKpQ5WpiHqwhvoSoMHXNTITrk6ZsR3fdgz3Bi/c+CXVHwmfPUQFkEPL+A==} + engines: {node: '>=0.12.0'} + deprecated: 0.x is no longer supported. Please upgrade to 3.x or higher. + dependencies: + date-format: 0.0.0 + debug: 0.7.4 + mkdirp: 0.5.6 + readable-stream: 1.1.14 + transitivePeerDependencies: + - supports-color + dev: true + + /strict-uri-encode/2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + dev: true + + /string-argv/0.3.1: + resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} + engines: {node: '>=0.6.19'} + dev: true + + /string-convert/0.2.1: + resolution: {integrity: sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==} + + /string-length/4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + dev: true + + /string-width/4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string.prototype.matchall/4.0.8: + resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.5 + get-intrinsic: 1.1.3 + has-symbols: 1.0.3 + internal-slot: 1.0.3 + regexp.prototype.flags: 1.4.3 + side-channel: 1.0.4 + dev: true + + /string.prototype.trimend/1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.5 + dev: true + + /string.prototype.trimstart/1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.1.4 + es-abstract: 1.20.5 + dev: true + + /string_decoder/0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + dev: true + + /string_decoder/1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: true + + /string_decoder/1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /stringify-object/3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + dev: true + + /strip-ansi/6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + + /strip-bom/4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + dev: true + + /strip-final-newline/2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-indent/3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + + /strip-json-comments/3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + /strip-outer/1.0.1: + resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} + engines: {node: '>=0.10.0'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /style-search/0.1.0: + resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} + dev: true + + /styled-components/6.0.0-beta.6_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-+2S/ejKUnQLV0q8C1uyjFiUCrXmUnDejRGMITEh4FR0Be2IWzE8Rk6ZTn4wwkbbC09lvMxOZECgYFyyh3vYwjQ==} + engines: {node: '>= 14'} + peerDependencies: + babel-plugin-styled-components: '>= 2' + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + peerDependenciesMeta: + babel-plugin-styled-components: + optional: true + dependencies: + '@babel/cli': 7.19.3_@babel+core@7.20.5 + '@babel/core': 7.20.5 + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-external-helpers': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-proposal-object-rest-spread': 7.20.2_@babel+core@7.20.5 + '@babel/preset-env': 7.20.2_@babel+core@7.20.5 + '@babel/preset-react': 7.18.6_@babel+core@7.20.5 + '@babel/preset-typescript': 7.18.6_@babel+core@7.20.5 + '@babel/traverse': 7.20.5 + '@emotion/unitless': 0.7.5 + css-to-react-native: 3.0.0 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + shallowequal: 1.1.0 + stylis: 4.1.3 + transitivePeerDependencies: + - supports-color + dev: true + + /stylelint-config-css-modules/2.3.0_stylelint@13.13.1: + resolution: {integrity: sha512-nSxwaJMv9wBrTAi+O4qXubyi1AR9eB36tJpY0uaFhKgEc3fwWGUzUK1Edl8AQHAoU7wmUeKtsuYjblyRP/V7rw==} + peerDependencies: + stylelint: 11.x - 14.x + dependencies: + stylelint: 13.13.1 + dev: true + + /stylelint-config-prettier/8.0.2_stylelint@13.13.1: + resolution: {integrity: sha512-TN1l93iVTXpF9NJstlvP7nOu9zY2k+mN0NSFQ/VEGz15ZIP9ohdDZTtCWHs5LjctAhSAzaILULGbgiM0ItId3A==} + engines: {node: '>= 10', npm: '>= 5'} + hasBin: true + peerDependencies: + stylelint: '>=11.0.0' + dependencies: + stylelint: 13.13.1 + dev: true + + /stylelint-config-recommended/3.0.0_stylelint@13.13.1: + resolution: {integrity: sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ==} + peerDependencies: + stylelint: '>=10.1.0' + dependencies: + stylelint: 13.13.1 + dev: true + + /stylelint-config-recommended/7.0.0: + resolution: {integrity: sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==} + peerDependencies: + stylelint: ^14.4.0 + dev: true + + /stylelint-config-recommended/7.0.0_stylelint@14.8.2: + resolution: {integrity: sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==} + peerDependencies: + stylelint: ^14.4.0 + dependencies: + stylelint: 14.8.2 + dev: true + + /stylelint-config-standard/20.0.0_stylelint@13.13.1: + resolution: {integrity: sha512-IB2iFdzOTA/zS4jSVav6z+wGtin08qfj+YyExHB3LF9lnouQht//YyB0KZq9gGz5HNPkddHOzcY8HsUey6ZUlA==} + peerDependencies: + stylelint: '>=10.1.0' + dependencies: + stylelint: 13.13.1 + stylelint-config-recommended: 3.0.0_stylelint@13.13.1 + dev: true + + /stylelint-config-standard/25.0.0: + resolution: {integrity: sha512-21HnP3VSpaT1wFjFvv9VjvOGDtAviv47uTp3uFmzcN+3Lt+RYRv6oAplLaV51Kf792JSxJ6svCJh/G18E9VnCA==} + peerDependencies: + stylelint: ^14.4.0 + dependencies: + stylelint-config-recommended: 7.0.0 + dev: true + + /stylelint-config-standard/25.0.0_stylelint@14.8.2: + resolution: {integrity: sha512-21HnP3VSpaT1wFjFvv9VjvOGDtAviv47uTp3uFmzcN+3Lt+RYRv6oAplLaV51Kf792JSxJ6svCJh/G18E9VnCA==} + peerDependencies: + stylelint: ^14.4.0 + dependencies: + stylelint: 14.8.2 + stylelint-config-recommended: 7.0.0_stylelint@14.8.2 + dev: true + + /stylelint-declaration-block-no-ignored-properties/2.6.0_stylelint@13.13.1: + resolution: {integrity: sha512-S9EC/tVJL19ppMRC4A4ecxtkENHZ7WNrEAukJVDtFt+iZgNP3SmokOLlYUhe6qZuB2XUvETqUx6r2p3Xfo7Rxw==} + engines: {node: '>=6'} + peerDependencies: + stylelint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 + dependencies: + stylelint: 13.13.1 + dev: true + + /stylelint/13.13.1: + resolution: {integrity: sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + '@stylelint/postcss-css-in-js': 0.37.3_j55xdkkcxc32kvnyvx3y7casfm + '@stylelint/postcss-markdown': 0.36.2_j55xdkkcxc32kvnyvx3y7casfm + autoprefixer: 9.8.8 + balanced-match: 2.0.0 + chalk: 4.1.2 + cosmiconfig: 7.1.0 + debug: 4.3.4 + execall: 2.0.0 + fast-glob: 3.2.12 + fastest-levenshtein: 1.0.16 + file-entry-cache: 6.0.1 + get-stdin: 8.0.0 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.2.0 + ignore: 5.2.1 + import-lazy: 4.0.0 + imurmurhash: 0.1.4 + known-css-properties: 0.21.0 + lodash: 4.17.21 + log-symbols: 4.1.0 + mathml-tag-names: 2.1.3 + meow: 9.0.0 + micromatch: 4.0.5 + normalize-selector: 0.2.0 + postcss: 7.0.39 + postcss-html: 0.36.0_j55xdkkcxc32kvnyvx3y7casfm + postcss-less: 3.1.4 + postcss-media-query-parser: 0.2.3 + postcss-resolve-nested-selector: 0.1.1 + postcss-safe-parser: 4.0.2 + postcss-sass: 0.4.4 + postcss-scss: 2.1.1 + postcss-selector-parser: 6.0.11 + postcss-syntax: 0.36.2_kei4jy7wdgbhc236h4oijypxom + postcss-value-parser: 4.2.0 + resolve-from: 5.0.0 + slash: 3.0.0 + specificity: 0.4.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + style-search: 0.1.0 + sugarss: 2.0.0 + svg-tags: 1.0.0 + table: 6.8.1 + v8-compile-cache: 2.3.0 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - postcss-jsx + - postcss-markdown + - supports-color + dev: true + + /stylelint/14.8.2: + resolution: {integrity: sha512-tjDfexCYfoPdl/xcDJ9Fv+Ko9cvzbDnmdiaqEn3ovXHXasi/hbkt5tSjsiReQ+ENqnz0eltaX/AOO+AlzVdcNA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dependencies: + balanced-match: 2.0.0 + colord: 2.9.3 + cosmiconfig: 7.1.0 + css-functions-list: 3.1.0 + debug: 4.3.4 + execall: 2.0.0 + fast-glob: 3.2.12 + fastest-levenshtein: 1.0.16 + file-entry-cache: 6.0.1 + get-stdin: 8.0.0 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.2.0 + ignore: 5.2.1 + import-lazy: 4.0.0 + imurmurhash: 0.1.4 + is-plain-object: 5.0.0 + known-css-properties: 0.25.0 + mathml-tag-names: 2.1.3 + meow: 9.0.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + normalize-selector: 0.2.0 + picocolors: 1.0.0 + postcss: 8.4.19 + postcss-media-query-parser: 0.2.3 + postcss-resolve-nested-selector: 0.1.1 + postcss-safe-parser: 6.0.0_postcss@8.4.19 + postcss-selector-parser: 6.0.11 + postcss-value-parser: 4.2.0 + resolve-from: 5.0.0 + specificity: 0.4.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + style-search: 0.1.0 + supports-hyperlinks: 2.3.0 + svg-tags: 1.0.0 + table: 6.8.1 + v8-compile-cache: 2.3.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /stylis/4.1.3: + resolution: {integrity: sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==} + + /sugarss/2.0.0: + resolution: {integrity: sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==} + dependencies: + postcss: 7.0.39 + dev: true + + /supports-color/5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + + /supports-color/7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + + /supports-color/8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-hyperlinks/2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + dev: true + + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + /svg-parser/2.0.4: + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + dev: true + + /svg-tags/1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + dev: true + + /svgo/2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.0.0 + stable: 0.1.8 + dev: true + + /swagger-ui-dist/4.15.5: + resolution: {integrity: sha512-V3eIa28lwB6gg7/wfNvAbjwJYmDXy1Jo1POjyTzlB6wPcHiGlRxq39TSjYGVjQrUSAzpv+a7nzp7mDxgNy57xA==} + dev: true + + /swagger2openapi/7.0.8: + resolution: {integrity: sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g==} + hasBin: true + dependencies: + call-me-maybe: 1.0.2 + node-fetch: 2.6.7 + node-fetch-h2: 2.3.0 + node-readfiles: 0.2.0 + oas-kit-common: 1.0.8 + oas-resolver: 2.5.6 + oas-schema-walker: 1.1.5 + oas-validator: 5.0.8 + reftools: 1.1.9 + yaml: 1.10.2 + yargs: 17.6.2 + transitivePeerDependencies: + - encoding + dev: true + + /swr/1.3.0_react@18.2.0: + resolution: {integrity: sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==} + peerDependencies: + react: ^16.11.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + + /symbol-tree/3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true + + /table/6.8.1: + resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} + engines: {node: '>=10.0.0'} + dependencies: + ajv: 8.11.2 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /tapable/1.1.3: + resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} + engines: {node: '>=6'} + dev: false + + /tapable/2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + dev: true + + /terser/5.16.1: + resolution: {integrity: sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.2 + acorn: 8.8.1 + commander: 2.20.3 + source-map-support: 0.5.21 + dev: true + + /test-exclude/6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + dev: true + + /text-table/0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + /thread-stream/0.15.2: + resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} + dependencies: + real-require: 0.1.0 + dev: true + + /through/2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /timers-browserify/2.0.12: + resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} + engines: {node: '>=0.6.0'} + dependencies: + setimmediate: 1.0.5 + dev: true + + /timers-ext/0.1.7: + resolution: {integrity: sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==} + dependencies: + es5-ext: 0.10.62 + next-tick: 1.1.0 + dev: true + + /tiny-pinyin/1.3.2: + resolution: {integrity: sha512-uHNGu4evFt/8eNLldazeAM1M8JrMc1jshhJJfVRARTN3yT8HEEibofeQ7QETWQ5ISBjd6fKtTVBCC/+mGS6FpA==} + dev: true + + /tinycolor2/1.4.2: + resolution: {integrity: sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==} + + /tmpl/1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + dev: true + + /to-arraybuffer/1.0.1: + resolution: {integrity: sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==} + dev: true + + /to-fast-properties/1.0.3: + resolution: {integrity: sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==} + engines: {node: '>=0.10.0'} + dev: true + + /to-fast-properties/2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /toggle-selection/1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + + /toidentifier/1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + dev: true + + /tough-cookie/2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + dependencies: + psl: 1.9.0 + punycode: 2.1.1 + dev: true + + /tough-cookie/4.1.2: + resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.1.1 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: true + + /tr46/0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + dev: true + + /tr46/3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + dependencies: + punycode: 2.1.1 + dev: true + + /trim-newlines/3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + dev: true + + /trim-repeated/1.0.0: + resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} + engines: {node: '>=0.10.0'} + dependencies: + escape-string-regexp: 1.0.5 + dev: true + + /trough/1.0.5: + resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} + dev: true + + /ts-node/10.9.1_typescript@4.9.4: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.3 + acorn: 8.8.1 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 4.9.4 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /tslib/1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib/2.4.1: + resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + dev: true + + /tsutils/3.21.0_typescript@4.9.4: + 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.9.4 + dev: true + + /tsx/3.12.1: + resolution: {integrity: sha512-Rcg1x+rNe7qwlP8j7kx4VjP/pJo/V57k+17hlrn6a7FuQLNwkaw5W4JF75tYornNVCxkXdSUnqlIT8JY/ttvIw==} + hasBin: true + dependencies: + '@esbuild-kit/cjs-loader': 2.4.1 + '@esbuild-kit/core-utils': 3.0.0 + '@esbuild-kit/esm-loader': 2.5.4 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /tty-browserify/0.0.0: + resolution: {integrity: sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==} + dev: true + + /tunnel-agent/0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /tween-functions/1.2.0: + resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==} + dev: true + + /tweetnacl/0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + dev: true + + /type-check/0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.1.2 + dev: true + + /type-check/0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + + /type-detect/4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest/0.18.1: + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + engines: {node: '>=10'} + dev: true + + /type-fest/0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + /type-fest/0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + dev: true + + /type-fest/0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true + + /type-fest/0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true + + /type-is/1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + dev: true + + /type/1.2.0: + resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} + dev: true + + /type/2.7.2: + resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} + dev: true + + /typedarray-to-buffer/3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + dependencies: + is-typedarray: 1.0.0 + dev: true + + /typedarray/0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + dev: true + + /typescript/3.9.10: + resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /typescript/4.9.4: + resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} + engines: {node: '>=4.2.0'} + hasBin: true + + /ua-parser-js/0.7.32: + resolution: {integrity: sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==} + dev: true + + /umi-presets-pro/2.0.0_gz5lvdtqfbr75jwfu5jagggsw4: + resolution: {integrity: sha512-x/aQygHQlRl9TcHQf90thEfJaDaZjAVeh/R3iYnj9SZAZmZT9vzkvmjVGHanppYiA6yAo1MJtxI6zgDETv3tUA==} + dependencies: + '@alita/plugins': 3.2.6_gz5lvdtqfbr75jwfu5jagggsw4 + '@umijs/max-plugin-openapi': 2.0.0 + '@umijs/plugins': 4.0.35_gz5lvdtqfbr75jwfu5jagggsw4 + '@umijs/request-record': 1.1.2 + swagger-ui-dist: 4.15.5 + transitivePeerDependencies: + - '@babel/helper-module-imports' + - '@babel/types' + - '@types/lodash.merge' + - '@types/react' + - '@types/react-dom' + - antd + - aslemammad-vite-plugin-macro + - babel-plugin-macros + - babel-plugin-styled-components + - chokidar + - debug + - dva + - encoding + - postcss-jsx + - postcss-markdown + - rc-field-form + - react + - react-dom + - react-native + - supports-color + - umi + - vite + dev: true + + /umi-request/1.4.0: + resolution: {integrity: sha512-OknwtQZddZHi0Ggi+Vr/olJ7HNMx4AzlywyK0W3NZBT7B0stjeZ9lcztA85dBgdAj3KVk8uPJPZSnGaDjELhrA==} + dependencies: + isomorphic-fetch: 2.2.1 + qs: 6.11.0 + dev: true + + /umi-utils/1.7.3: + resolution: {integrity: sha512-KLUGIKXkuPOq8LACQN57nj9rSPIjLz8eLbR4mZpihJ3BgL3f1bZFvmUV/VYHr9D7PfFH2Vb1Y6UAOuNkKL9g2g==} + dependencies: + chalk: 2.4.2 + dotenv: 8.6.0 + is-url: 1.2.4 + node-fetch: 2.6.0 + prettier: 1.15.3 + slash2: 2.0.0 + dev: true + + /umi/4.0.35_b3zq4vnhqh7moefpp7mqr7nqry: + resolution: {integrity: sha512-5+k3dp19X51hoGimdzyk4igztm4Mx0AvcEgHVkJcEj/cFo2ydzVoDhjofqnGkpwoLPovu4aU4dLpFS6zZaT13g==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@babel/runtime': 7.18.9 + '@umijs/bundler-utils': 4.0.35 + '@umijs/bundler-webpack': 4.0.35_typescript@4.9.4 + '@umijs/core': 4.0.35 + '@umijs/lint': 4.0.35_p4csibq5ks3vioan4srswcqg5u + '@umijs/preset-umi': 4.0.35_wuwhjehtb3nhae7urou2zggzfe + '@umijs/renderer-react': 4.0.35_biqbaboplfbrettd7655fr4n2y + '@umijs/server': 4.0.35 + '@umijs/test': 4.0.35 + '@umijs/utils': 4.0.35 + prettier-plugin-organize-imports: 2.3.4_2gbcgqmzq2pxiocqw2qs7hdeqe + prettier-plugin-packagejson: 2.3.0_prettier@2.8.1 + transitivePeerDependencies: + - '@babel/core' + - '@types/react' + - '@types/webpack' + - encoding + - eslint + - jest + - postcss + - postcss-html + - postcss-jsx + - postcss-less + - postcss-markdown + - postcss-scss + - prettier + - react + - react-dom + - rollup + - sockjs-client + - styled-components + - stylelint + - supports-color + - type-fest + - typescript + - vue-template-compiler + - webpack + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: true + + /unbox-primitive/1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /underscore/1.7.0: + resolution: {integrity: sha512-cp0oQQyZhUM1kpJDLdGO1jPZHgS/MpzoWYfe9+CM2h/QGDZlqwT2T3YGukuBdaNJ/CAPoeyAZRRHz8JFo176vA==} + dev: true + + /unfetch/4.2.0: + resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} + dev: true + + /unicode-canonical-property-names-ecmascript/2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + dev: true + + /unicode-match-property-ecmascript/2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + dev: true + + /unicode-match-property-value-ecmascript/2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + dev: true + + /unicode-property-aliases-ecmascript/2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + dev: true + + /unified/9.2.2: + resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==} + dependencies: + '@types/unist': 2.0.6 + bail: 1.0.5 + extend: 3.0.2 + is-buffer: 2.0.5 + is-plain-obj: 2.1.0 + trough: 1.0.5 + vfile: 4.2.1 + dev: true + + /unist-util-find-all-after/3.0.2: + resolution: {integrity: sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==} + dependencies: + unist-util-is: 4.1.0 + dev: true + + /unist-util-is/4.1.0: + resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} + dev: true + + /unist-util-stringify-position/2.0.3: + resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} + dependencies: + '@types/unist': 2.0.6 + dev: true + + /universalify/0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify/0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: true + + /universalify/2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + + /unpipe/1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: true + + /unstated-next/1.1.0: + resolution: {integrity: sha512-AAn47ZncPvgBGOvMcn8tSRxsrqwf2VdAPxLASTuLJvZt4rhKfDvUkmYZLGfclImSfTVMv7tF4ynaVxin0JjDCA==} + + /update-browserslist-db/1.0.10_browserslist@4.21.4: + resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.4 + escalade: 3.1.1 + picocolors: 1.0.0 + + /uri-js/4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.1.1 + + /url-parse/1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + dev: true + + /url/0.11.0: + resolution: {integrity: sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==} + dependencies: + punycode: 1.3.2 + querystring: 0.2.0 + dev: true + + /use-isomorphic-layout-effect/1.1.2_nik5kfrnrsctffq6o6vr6ceura: + resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 17.0.52 + react: 18.1.0 + dev: true + + /use-json-comparison/1.0.6_react@18.2.0: + resolution: {integrity: sha512-xPadt5yMRbEmVfOSGFSMqjjICrq7nLbfSH3rYIXsrtcuFX7PmbYDN/ku8ObBn3v8o/yZelO1OxUS5+5TI3+fUw==} + peerDependencies: + react: '>=16.9.0' + dependencies: + react: 18.2.0 + + /use-media-antd-query/1.1.0_react@18.2.0: + resolution: {integrity: sha512-B6kKZwNV4R+l4Rl11sWO7HqOay9alzs1Vp1b4YJqjz33YxbltBCZtt/yxXxkXN9rc1S7OeEL/GbwC30Wmqhw6Q==} + peerDependencies: + react: '>=16.9.0' + dependencies: + react: 18.2.0 + + /use-sync-external-store/1.2.0_react@18.2.0: + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: true + + /util-deprecate/1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /util/0.10.3: + resolution: {integrity: sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==} + dependencies: + inherits: 2.0.1 + dev: true + + /util/0.11.1: + resolution: {integrity: sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==} + dependencies: + inherits: 2.0.3 + dev: true + + /utila/0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + dev: true + + /utils-merge/1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: true + + /uuid/3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + dev: true + + /v8-compile-cache-lib/3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + dev: true + + /v8-compile-cache/2.3.0: + resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} + dev: true + + /v8-to-istanbul/9.0.1: + resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.17 + '@types/istanbul-lib-coverage': 2.0.4 + convert-source-map: 1.9.0 + dev: true + + /validate-npm-package-license/3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.1.1 + spdx-expression-parse: 3.0.1 + dev: true + + /valtio/1.7.0_react@18.2.0: + resolution: {integrity: sha512-3Tnix66EERwMcrl1rfB3ylcewOcL5L/GiPmC3FlVNreQzqf2jufEeqlNmgnLgSGchkEmH3WYVtS+x6Qw4r+yzQ==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@babel/helper-module-imports': '>=7.12' + '@babel/types': '>=7.13' + aslemammad-vite-plugin-macro: '>=1.0.0-alpha.1' + babel-plugin-macros: '>=3.0' + react: '>=16.8' + vite: '>=2.8.6' + peerDependenciesMeta: + '@babel/helper-module-imports': + optional: true + '@babel/types': + optional: true + aslemammad-vite-plugin-macro: + optional: true + babel-plugin-macros: + optional: true + react: + optional: true + vite: + optional: true + dependencies: + proxy-compare: 2.3.0 + react: 18.2.0 + use-sync-external-store: 1.2.0_react@18.2.0 + dev: true + + /vary/1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: true + + /verror/1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + dev: true + + /vfile-message/2.0.4: + resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} + dependencies: + '@types/unist': 2.0.6 + unist-util-stringify-position: 2.0.3 + dev: true + + /vfile/4.2.1: + resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} + dependencies: + '@types/unist': 2.0.6 + is-buffer: 2.0.5 + unist-util-stringify-position: 2.0.3 + vfile-message: 2.0.4 + dev: true + + /vm-browserify/1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + dev: true + + /w3c-xmlserializer/4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} + dependencies: + xml-name-validator: 4.0.0 + dev: true + + /walker/1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + dev: true + + /warning/3.0.0: + resolution: {integrity: sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==} + dependencies: + loose-envify: 1.4.0 + dev: true + + /warning/4.0.3: + resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + dependencies: + loose-envify: 1.4.0 + + /wbuf/1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + dependencies: + minimalistic-assert: 1.0.1 + dev: true + + /wcwidth/1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + dev: true + + /webidl-conversions/3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + dev: true + + /webidl-conversions/7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true + + /whatwg-encoding/2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + dependencies: + iconv-lite: 0.6.3 + dev: true + + /whatwg-fetch/3.6.2: + resolution: {integrity: sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==} + dev: true + + /whatwg-mimetype/3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + dev: true + + /whatwg-url/11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + dev: true + + /whatwg-url/5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + dev: true + + /which-boxed-primitive/1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-builtin-type/1.1.3: + resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} + engines: {node: '>= 0.4'} + dependencies: + function.prototype.name: 1.1.5 + has-tostringtag: 1.0.0 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.9 + dev: true + + /which-collection/1.0.1: + resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: true + + /which-typed-array/1.1.9: + resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + is-typed-array: 1.1.10 + dev: true + + /which/1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + + /which/2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + + /word-wrap/1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + + /wrap-ansi/6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi/7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrappy/1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + /write-file-atomic/3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + dev: true + + /write-file-atomic/4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + dev: true + + /ws/6.2.2: + resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dependencies: + async-limiter: 1.0.1 + dev: true + + /ws/8.11.0: + resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /xml-name-validator/4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + dev: true + + /xmlchars/2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true + + /xtend/4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: true + + /y18n/5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist/4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + /yaml/1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + /yargs-parser/20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + dev: true + + /yargs-parser/21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs/17.6.2: + resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yauzl/2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + dev: true + + /yn/3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + dev: true + + /yocto-queue/0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + /zscroller/0.4.8: + resolution: {integrity: sha512-G5NiNLKx2+QhhvZi2yV1jjVXY50otktxkseX2hG2N/eixohOUk0AY8ZpbAxNqS9oJS/NxItCsowupy2tsXxAMw==} + dependencies: + babel-runtime: 6.26.0 + dev: true + + /zwitch/1.0.5: + resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} + dev: true diff --git a/src/app.tsx b/src/app.tsx index 65f1563c..42f7c66c 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -8,7 +8,7 @@ import { history, Link } from '@umijs/max'; import defaultSettings from '../config/defaultSettings'; import { errorConfig } from './requestErrorConfig'; import { currentUser as queryCurrentUser } from './services/ant-design-pro/api'; - +import React from 'react'; const isDev = process.env.NODE_ENV === 'development'; const loginPath = '/user/login'; @@ -95,24 +95,22 @@ export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) = // 自定义 403 页面 // unAccessible:
    unAccessible
    , // 增加一个 loading 的状态 - childrenRender: (children, props) => { + childrenRender: (children) => { // if (initialState?.loading) return ; return ( <> {children} - {!props.location?.pathname?.includes('/login') && ( - { - setInitialState((preInitialState) => ({ - ...preInitialState, - settings, - })); - }} - /> - )} + { + setInitialState((preInitialState) => ({ + ...preInitialState, + settings, + })); + }} + /> ); }, diff --git a/src/components/Footer/index.tsx b/src/components/Footer/index.tsx index 22fee878..03ac1468 100644 --- a/src/components/Footer/index.tsx +++ b/src/components/Footer/index.tsx @@ -1,6 +1,7 @@ import { GithubOutlined } from '@ant-design/icons'; import { DefaultFooter } from '@ant-design/pro-components'; import { useIntl } from '@umijs/max'; +import React from 'react'; const Footer: React.FC = () => { const intl = useIntl(); diff --git a/src/components/HeaderDropdown/index.less b/src/components/HeaderDropdown/index.less deleted file mode 100644 index f583513f..00000000 --- a/src/components/HeaderDropdown/index.less +++ /dev/null @@ -1,16 +0,0 @@ -@import (reference) '~antd/es/style/themes/index'; - -.container > * { - background-color: @popover-bg; - border-radius: 4px; - box-shadow: @shadow-1-down; -} - -@media screen and (max-width: @screen-xs) { - .container { - width: 100% !important; - } - .container > * { - border-radius: 0 !important; - } -} diff --git a/src/components/HeaderDropdown/index.tsx b/src/components/HeaderDropdown/index.tsx index 07df291b..8474be51 100644 --- a/src/components/HeaderDropdown/index.tsx +++ b/src/components/HeaderDropdown/index.tsx @@ -1,21 +1,29 @@ import { Dropdown } from 'antd'; import type { DropDownProps } from 'antd/es/dropdown'; -import classNames from 'classnames'; import React from 'react'; -import styles from './index.less'; +import { useEmotionCss } from '@ant-design/use-emotion-css'; +import classNames from 'classnames'; export type HeaderDropdownProps = { overlayClassName?: string; - overlay: React.ReactNode | (() => React.ReactNode) | any; placement?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topCenter' | 'topRight' | 'bottomCenter'; } & Omit; -const HeaderDropdown: React.FC = ({ overlayClassName: cls, ...restProps }) => ( - target.parentElement || document.body} - {...restProps} - /> -); +const HeaderDropdown: React.FC = ({ overlayClassName: cls, ...restProps }) => { + const className = useEmotionCss(({ token }) => { + return { + [`@media screen and (max-width: ${token.screenXS})`]: { + width: '100%', + }, + }; + }); + return ( + target.parentElement || document.body} + {...restProps} + /> + ); +}; export default HeaderDropdown; diff --git a/src/components/HeaderSearch/index.less b/src/components/HeaderSearch/index.less deleted file mode 100644 index 7dc3eaa0..00000000 --- a/src/components/HeaderSearch/index.less +++ /dev/null @@ -1,25 +0,0 @@ -@import (reference) '~antd/es/style/themes/index'; - -.headerSearch { - display: inline-flex; - align-items: center; - .input { - width: 0; - min-width: 0; - overflow: hidden; - background: transparent; - border-radius: 0; - transition: width 0.3s, margin-left 0.3s; - :global(.ant-select-selection) { - background: transparent; - } - input { - box-shadow: none !important; - } - - &.show { - width: 210px; - margin-left: 8px; - } - } -} diff --git a/src/components/HeaderSearch/index.tsx b/src/components/HeaderSearch/index.tsx deleted file mode 100644 index 211014a1..00000000 --- a/src/components/HeaderSearch/index.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import { SearchOutlined } from '@ant-design/icons'; -import type { InputRef } from 'antd'; -import { AutoComplete, Input } from 'antd'; -import type { AutoCompleteProps } from 'antd/es/auto-complete'; -import classNames from 'classnames'; -import useMergedState from 'rc-util/es/hooks/useMergedState'; -import React, { useRef } from 'react'; -import styles from './index.less'; - -export type HeaderSearchProps = { - onSearch?: (value?: string) => void; - onChange?: (value?: string) => void; - onVisibleChange?: (b: boolean) => void; - className?: string; - placeholder?: string; - options: AutoCompleteProps['options']; - defaultVisible?: boolean; - visible?: boolean; - defaultValue?: string; - value?: string; -}; - -const HeaderSearch: React.FC = (props) => { - const { - className, - defaultValue, - onVisibleChange, - placeholder, - visible, - defaultVisible, - ...restProps - } = props; - - const inputRef = useRef(null); - - const [value, setValue] = useMergedState(defaultValue, { - value: props.value, - onChange: props.onChange, - }); - - const [searchMode, setSearchMode] = useMergedState(defaultVisible ?? false, { - value: props.visible, - onChange: onVisibleChange, - }); - - const inputClass = classNames(styles.input, { - [styles.show]: searchMode, - }); - return ( -
    { - setSearchMode(true); - if (inputRef.current) { - inputRef.current.focus(); - } - }} - onTransitionEnd={({ propertyName }) => { - if (propertyName === 'width' && !searchMode) { - if (onVisibleChange) { - onVisibleChange(searchMode); - } - } - }} - > - - setValue(completeValue)} - > - { - if (e.key === 'Enter') { - if (restProps.onSearch) { - restProps.onSearch(value); - } - } - }} - onBlur={() => { - setSearchMode(false); - }} - /> - -
    - ); -}; - -export default HeaderSearch; diff --git a/src/components/NoticeIcon/NoticeIcon.tsx b/src/components/NoticeIcon/NoticeIcon.tsx deleted file mode 100644 index 20607b57..00000000 --- a/src/components/NoticeIcon/NoticeIcon.tsx +++ /dev/null @@ -1,126 +0,0 @@ -import { BellOutlined } from '@ant-design/icons'; -import { Badge, Spin, Tabs } from 'antd'; -import classNames from 'classnames'; -import useMergedState from 'rc-util/es/hooks/useMergedState'; -import React from 'react'; -import HeaderDropdown from '../HeaderDropdown'; -import styles from './index.less'; -import type { NoticeIconTabProps } from './NoticeList'; -import NoticeList from './NoticeList'; - -const { TabPane } = Tabs; - -export type NoticeIconProps = { - count?: number; - bell?: React.ReactNode; - className?: string; - loading?: boolean; - onClear?: (tabName: string, tabKey: string) => void; - onItemClick?: (item: API.NoticeIconItem, tabProps: NoticeIconTabProps) => void; - onViewMore?: (tabProps: NoticeIconTabProps, e: MouseEvent) => void; - onTabChange?: (tabTile: string) => void; - style?: React.CSSProperties; - onPopupVisibleChange?: (visible: boolean) => void; - popupVisible?: boolean; - clearText?: string; - viewMoreText?: string; - clearClose?: boolean; - emptyImage?: string; - children?: React.ReactElement[]; -}; - -const NoticeIcon: React.FC & { - Tab: typeof NoticeList; -} = (props) => { - const getNotificationBox = (): React.ReactNode => { - const { - children, - loading, - onClear, - onTabChange, - onItemClick, - onViewMore, - clearText, - viewMoreText, - } = props; - if (!children) { - return null; - } - const panes: React.ReactNode[] = []; - React.Children.forEach(children, (child: React.ReactElement): void => { - if (!child) { - return; - } - const { list, title, count, tabKey, showClear, showViewMore } = child.props; - const len = list && list.length ? list.length : 0; - const msgCount = count || count === 0 ? count : len; - const tabTitle: string = msgCount > 0 ? `${title} (${msgCount})` : title; - panes.push( - - onClear && onClear(title, tabKey)} - onClick={(item): void => onItemClick && onItemClick(item, child.props)} - onViewMore={(event): void => onViewMore && onViewMore(child.props, event)} - showClear={showClear} - showViewMore={showViewMore} - title={title} - /> - , - ); - }); - return ( - <> - - - {panes} - - - - ); - }; - - const { className, count, bell } = props; - - const [visible, setVisible] = useMergedState(false, { - value: props.popupVisible, - onChange: props.onPopupVisibleChange, - }); - const noticeButtonClass = classNames(className, styles.noticeButton); - const notificationBox = getNotificationBox(); - const NoticeBellIcon = bell || ; - const trigger = ( - - - {NoticeBellIcon} - - - ); - if (!notificationBox) { - return trigger; - } - - return ( - - {trigger} - - ); -}; - -NoticeIcon.defaultProps = { - emptyImage: 'https://gw.alipayobjects.com/zos/rmsportal/wAhyIChODzsoKIOBHcBk.svg', -}; - -NoticeIcon.Tab = NoticeList; - -export default NoticeIcon; diff --git a/src/components/NoticeIcon/NoticeList.less b/src/components/NoticeIcon/NoticeList.less deleted file mode 100755 index c87fece4..00000000 --- a/src/components/NoticeIcon/NoticeList.less +++ /dev/null @@ -1,103 +0,0 @@ -@import (reference) '~antd/es/style/themes/index'; - -.list { - max-height: 400px; - overflow: auto; - &::-webkit-scrollbar { - display: none; - } - .item { - padding-right: 24px; - padding-left: 24px; - overflow: hidden; - cursor: pointer; - transition: all 0.3s; - - .meta { - width: 100%; - } - - .avatar { - margin-top: 4px; - background: @component-background; - } - .iconElement { - font-size: 32px; - } - - &.read { - opacity: 0.4; - } - &:last-child { - border-bottom: 0; - } - &:hover { - background: @primary-1; - } - .title { - margin-bottom: 8px; - font-weight: normal; - } - .description { - font-size: 12px; - line-height: @line-height-base; - } - .datetime { - margin-top: 4px; - font-size: 12px; - line-height: @line-height-base; - } - .extra { - float: right; - margin-top: -1.5px; - margin-right: 0; - color: @text-color-secondary; - font-weight: normal; - } - } - .loadMore { - padding: 8px 0; - color: @primary-6; - text-align: center; - cursor: pointer; - &.loadedAll { - color: rgba(0, 0, 0, 0.25); - cursor: unset; - } - } -} - -.notFound { - padding: 73px 0 88px; - color: @text-color-secondary; - text-align: center; - img { - display: inline-block; - height: 76px; - margin-bottom: 16px; - } -} - -.bottomBar { - height: 46px; - color: @text-color; - line-height: 46px; - text-align: center; - border-top: 1px solid @border-color-split; - border-radius: 0 0 @border-radius-base @border-radius-base; - transition: all 0.3s; - div { - display: inline-block; - width: 50%; - cursor: pointer; - transition: all 0.3s; - user-select: none; - - &:only-child { - width: 100%; - } - &:not(:only-child):last-child { - border-left: 1px solid @border-color-split; - } - } -} diff --git a/src/components/NoticeIcon/NoticeList.tsx b/src/components/NoticeIcon/NoticeList.tsx deleted file mode 100644 index f53aa3d4..00000000 --- a/src/components/NoticeIcon/NoticeList.tsx +++ /dev/null @@ -1,112 +0,0 @@ -import { Avatar, List } from 'antd'; -import classNames from 'classnames'; -import React from 'react'; -import styles from './NoticeList.less'; - -export type NoticeIconTabProps = { - count?: number; - showClear?: boolean; - showViewMore?: boolean; - style?: React.CSSProperties; - title: string; - tabKey: API.NoticeIconItemType; - onClick?: (item: API.NoticeIconItem) => void; - onClear?: () => void; - emptyText?: string; - clearText?: string; - viewMoreText?: string; - list: API.NoticeIconItem[]; - onViewMore?: (e: any) => void; -}; -const NoticeList: React.FC = ({ - list = [], - onClick, - onClear, - title, - onViewMore, - emptyText, - showClear = true, - clearText, - viewMoreText, - showViewMore = false, -}) => { - if (!list || list.length === 0) { - return ( -
    - not found -
    {emptyText}
    -
    - ); - } - return ( -
    - - className={styles.list} - dataSource={list} - renderItem={(item, i) => { - const itemCls = classNames(styles.item, { - [styles.read]: item.read, - }); - // eslint-disable-next-line no-nested-ternary - const leftIcon = item.avatar ? ( - typeof item.avatar === 'string' ? ( - - ) : ( - {item.avatar} - ) - ) : null; - - return ( -
    { - onClick?.(item); - }} - > - - - {item.title} -
    {item.extra}
    -
    - } - description={ -
    -
    {item.description}
    -
    {item.datetime}
    -
    - } - /> - -
    - ); - }} - /> -
    - {showClear ? ( -
    - {clearText} {title} -
    - ) : null} - {showViewMore ? ( -
    { - if (onViewMore) { - onViewMore(e); - } - }} - > - {viewMoreText} -
    - ) : null} -
    - - ); -}; - -export default NoticeList; diff --git a/src/components/NoticeIcon/index.less b/src/components/NoticeIcon/index.less deleted file mode 100644 index a2e44f15..00000000 --- a/src/components/NoticeIcon/index.less +++ /dev/null @@ -1,35 +0,0 @@ -@import (reference) '~antd/es/style/themes/index'; - -.popover { - position: relative; - width: 336px; -} - -.noticeButton { - display: inline-block; - cursor: pointer; - transition: all 0.3s; -} -.icon { - padding: 4px; - vertical-align: middle; -} - -.badge { - font-size: 16px; -} - -.tabs { - :global { - .ant-tabs-nav-list { - margin: auto; - } - - .ant-tabs-nav-scroll { - text-align: center; - } - .ant-tabs-nav { - margin-bottom: 0; - } - } -} diff --git a/src/components/NoticeIcon/index.tsx b/src/components/NoticeIcon/index.tsx deleted file mode 100644 index 66265c4d..00000000 --- a/src/components/NoticeIcon/index.tsx +++ /dev/null @@ -1,152 +0,0 @@ -import { getNotices } from '@/services/ant-design-pro/api'; -import { useModel, useRequest } from '@umijs/max'; -import { message, Tag } from 'antd'; -import { groupBy } from 'lodash'; -import moment from 'moment'; -import { useEffect, useState } from 'react'; -import styles from './index.less'; -import NoticeIcon from './NoticeIcon'; - -export type GlobalHeaderRightProps = { - fetchingNotices?: boolean; - onNoticeVisibleChange?: (visible: boolean) => void; - onNoticeClear?: (tabName?: string) => void; -}; - -const getNoticeData = (notices: API.NoticeIconItem[]): Record => { - if (!notices || notices.length === 0 || !Array.isArray(notices)) { - return {}; - } - - const newNotices = notices.map((notice) => { - const newNotice = { ...notice }; - - if (newNotice.datetime) { - newNotice.datetime = moment(notice.datetime as string).fromNow(); - } - - if (newNotice.id) { - newNotice.key = newNotice.id; - } - - if (newNotice.extra && newNotice.status) { - const color = { - todo: '', - processing: 'blue', - urgent: 'red', - doing: 'gold', - }[newNotice.status]; - newNotice.extra = ( - - {newNotice.extra} - - ) as any; - } - - return newNotice; - }); - return groupBy(newNotices, 'type'); -}; - -const getUnreadData = (noticeData: Record) => { - const unreadMsg: Record = {}; - Object.keys(noticeData).forEach((key) => { - const value = noticeData[key]; - - if (!unreadMsg[key]) { - unreadMsg[key] = 0; - } - - if (Array.isArray(value)) { - unreadMsg[key] = value.filter((item) => !item.read).length; - } - }); - return unreadMsg; -}; - -const NoticeIconView: React.FC = () => { - const { initialState } = useModel('@@initialState'); - const { currentUser } = initialState || {}; - const [notices, setNotices] = useState([]); - const { data } = useRequest(getNotices); - - useEffect(() => { - setNotices(data || []); - }, [data]); - - const noticeData = getNoticeData(notices); - const unreadMsg = getUnreadData(noticeData || {}); - - const changeReadState = (id: string) => { - setNotices( - notices.map((item) => { - const notice = { ...item }; - if (notice.id === id) { - notice.read = true; - } - return notice; - }), - ); - }; - - const clearReadState = (title: string, key: string) => { - setNotices( - notices.map((item) => { - const notice = { ...item }; - if (notice.type === key) { - notice.read = true; - } - return notice; - }), - ); - message.success(`${'清空了'} ${title}`); - }; - - return ( - { - changeReadState(item.id!); - }} - onClear={(title: string, key: string) => clearReadState(title, key)} - loading={false} - clearText="清空" - viewMoreText="查看更多" - onViewMore={() => message.info('Click on view more')} - clearClose - > - - - - - ); -}; - -export default NoticeIconView; diff --git a/src/components/RightContent/AvatarDropdown.tsx b/src/components/RightContent/AvatarDropdown.tsx index 6a789296..e4dfaf03 100644 --- a/src/components/RightContent/AvatarDropdown.tsx +++ b/src/components/RightContent/AvatarDropdown.tsx @@ -1,19 +1,59 @@ import { outLogin } from '@/services/ant-design-pro/api'; import { LogoutOutlined, SettingOutlined, UserOutlined } from '@ant-design/icons'; +import { useEmotionCss } from '@ant-design/use-emotion-css'; import { history, useModel } from '@umijs/max'; -import { Avatar, Menu, Spin } from 'antd'; -import type { ItemType } from 'antd/es/menu/hooks/useItems'; +import { Avatar, Spin } from 'antd'; +import { setAlpha } from '@ant-design/pro-components'; import { stringify } from 'querystring'; import type { MenuInfo } from 'rc-menu/lib/interface'; import React, { useCallback } from 'react'; import { flushSync } from 'react-dom'; import HeaderDropdown from '../HeaderDropdown'; -import styles from './index.less'; export type GlobalHeaderRightProps = { menu?: boolean; }; +const Name = () => { + const { initialState } = useModel('@@initialState'); + const { currentUser } = initialState || {}; + + const nameClassName = useEmotionCss(({ token }) => { + return { + width: '70px', + height: '48px', + overflow: 'hidden', + lineHeight: '48px', + whiteSpace: 'nowrap', + textOverflow: 'ellipsis', + [`@media only screen and (max-width: ${token.screenMD}px)`]: { + display: 'none', + }, + }; + }); + + return {currentUser?.name}; +}; + +const AvatarLogo = () => { + const { initialState } = useModel('@@initialState'); + const { currentUser } = initialState || {}; + + const avatarClassName = useEmotionCss(({ token }) => { + return { + marginRight: '8px', + color: token.colorPrimary, + verticalAlign: 'top', + background: setAlpha(token.colorBgContainer, 0.85), + [`@media only screen and (max-width: ${token.screenMD}px)`]: { + margin: 0, + }, + }; + }); + + return ; +}; + const AvatarDropdown: React.FC = ({ menu }) => { /** * 退出登录,并且将当前的 url 保存 @@ -34,6 +74,21 @@ const AvatarDropdown: React.FC = ({ menu }) => { }); } }; + const actionClassName = useEmotionCss(({ token }) => { + return { + display: 'flex', + height: '48px', + marginLeft: 'auto', + overflow: 'hidden', + alignItems: 'center', + padding: '0 8px', + cursor: 'pointer', + borderRadius: token.borderRadius, + '&:hover': { + backgroundColor: token.colorBgTextHover, + }, + }; + }); const { initialState, setInitialState } = useModel('@@initialState'); const onMenuClick = useCallback( @@ -52,7 +107,7 @@ const AvatarDropdown: React.FC = ({ menu }) => { ); const loading = ( - + = ({ menu }) => { return loading; } - const menuItems: ItemType[] = [ + const menuItems = [ ...(menu ? [ { @@ -98,15 +153,17 @@ const AvatarDropdown: React.FC = ({ menu }) => { }, ]; - const menuHeaderDropdown = ( - - ); - return ( - - - - {currentUser.name} + + + + ); diff --git a/src/components/RightContent/index.less b/src/components/RightContent/index.less deleted file mode 100644 index d867d998..00000000 --- a/src/components/RightContent/index.less +++ /dev/null @@ -1,82 +0,0 @@ -@import (reference) '~antd/es/style/themes/index'; - -@pro-header-hover-bg: rgba(0, 0, 0, 0.025); - -.menu { - :global(.anticon) { - margin-right: 8px; - } - :global(.ant-dropdown-menu-item) { - min-width: 160px; - } -} - -.right { - display: flex; - float: right; - height: 48px; - margin-left: auto; - overflow: hidden; - - .name { - width: 70px; - height: 48px; - overflow: hidden; - line-height: 48px; - white-space: nowrap; - text-overflow: ellipsis; - } - .action { - display: flex; - align-items: center; - height: 48px; - padding: 0 12px; - cursor: pointer; - transition: all 0.3s; - > span { - vertical-align: middle; - } - &:hover { - background: @pro-header-hover-bg; - } - &:global(.opened) { - background: @pro-header-hover-bg; - } - } - .search { - padding: 0 12px; - &:hover { - background: transparent; - } - } - .account { - .avatar { - margin-right: 8px; - color: @primary-color; - vertical-align: top; - background: rgba(255, 255, 255, 0.85); - } - } -} - -@media only screen and (max-width: @screen-md) { - :global(.ant-divider-vertical) { - vertical-align: unset; - } - .name { - display: none; - } - .right { - position: absolute; - top: 0; - right: 12px; - .account { - .avatar { - margin-right: 0; - } - } - .search { - display: none; - } - } -} diff --git a/src/components/RightContent/index.tsx b/src/components/RightContent/index.tsx index 7a3a6bf3..2d007929 100644 --- a/src/components/RightContent/index.tsx +++ b/src/components/RightContent/index.tsx @@ -1,53 +1,48 @@ import { QuestionCircleOutlined } from '@ant-design/icons'; +import { useEmotionCss } from '@ant-design/use-emotion-css'; import { SelectLang, useModel } from '@umijs/max'; -import { Space } from 'antd'; import React from 'react'; -import HeaderSearch from '../HeaderSearch'; import Avatar from './AvatarDropdown'; -import styles from './index.less'; export type SiderTheme = 'light' | 'dark'; const GlobalHeaderRight: React.FC = () => { + const className = useEmotionCss(() => { + return { + display: 'flex', + height: '48px', + marginLeft: 'auto', + overflow: 'hidden', + gap: 8, + }; + }); + + const actionClassName = useEmotionCss(({ token }) => { + return { + display: 'flex', + float: 'right', + height: '48px', + marginLeft: 'auto', + overflow: 'hidden', + cursor: 'pointer', + padding: '0 12px', + borderRadius: token.borderRadius, + '&:hover': { + backgroundColor: token.colorBgTextHover, + }, + }; + }); + const { initialState } = useModel('@@initialState'); if (!initialState || !initialState.settings) { return null; } - const { navTheme, layout } = initialState.settings; - let className = styles.right; - - if ((navTheme === 'realDark' && layout === 'top') || layout === 'mix') { - className = `${styles.right} ${styles.dark}`; - } return ( - - umi ui, value: 'umi ui' }, - { - label: Ant Design, - value: 'Ant Design', - }, - { - label: Pro Table, - value: 'Pro Table', - }, - { - label: Pro Layout, - value: 'Pro Layout', - }, - ]} - // onSearch={value => { - // console.log('input', value); - // }} - /> +
    { window.open('https://pro.ant.design/docs/getting-started'); }} @@ -55,8 +50,8 @@ const GlobalHeaderRight: React.FC = () => { - - + +
    ); }; export default GlobalHeaderRight; diff --git a/src/components/index.md b/src/components/index.md deleted file mode 100644 index 8b645090..00000000 --- a/src/components/index.md +++ /dev/null @@ -1,267 +0,0 @@ ---- -title: 业务组件 -sidemenu: false ---- - -> 此功能由[dumi](https://d.umijs.org/zh-CN/guide/advanced#umi-%E9%A1%B9%E7%9B%AE%E9%9B%86%E6%88%90%E6%A8%A1%E5%BC%8F)提供,dumi 是一个 📖 为组件开发场景而生的文档工具,用过的都说好。 - -# 业务组件 - -这里列举了 Pro 中所有用到的组件,这些组件不适合作为组件库,但是在业务中却真实需要。所以我们准备了这个文档,来指导大家是否需要使用这个组件。 - -## Footer 页脚组件 - -这个组件自带了一些 Pro 的配置,你一般都需要改掉它的信息。 - -```tsx -/** - * background: '#f0f2f5' - */ -import Footer from '@/components/Footer'; - -export default () =>
    ; -``` - -## HeaderDropdown 头部下拉列表 - -HeaderDropdown 是 antd Dropdown 的封装,但是增加了移动端的特殊处理,用法也是相同的。 - -```tsx -/** - * background: '#f0f2f5' - */ -import HeaderDropdown from '@/components/HeaderDropdown'; -import { Button, Menu } from 'antd'; - -export default () => { - const menuHeaderDropdown = ( - - 个人中心 - 个人设置 - - 退出登录 - - ); - return ( - - - - ); -}; -``` - -## HeaderSearch 头部搜索框 - -一个带补全数据的输入框,支持收起和展开 Input - -```tsx -/** - * background: '#f0f2f5' - */ -import HeaderSearch from '@/components/HeaderSearch'; - -export default () => { - return ( - { - console.log('input', value); - }} - /> - ); -}; -``` - -### API - -| 参数 | 说明 | 类型 | 默认值 | -| --------------- | ---------------------------------- | ---------------------------- | ------ | -| value | 输入框的值 | `string` | - | -| onChange | 值修改后触发 | `(value?: string) => void` | - | -| onSearch | 查询后触发 | `(value?: string) => void` | - | -| options | 选项菜单的的列表 | `{label,value}[]` | - | -| defaultVisible | 输入框默认是否显示,只有第一次生效 | `boolean` | - | -| visible | 输入框是否显示 | `boolean` | - | -| onVisibleChange | 输入框显示隐藏的回调函数 | `(visible: boolean) => void` | - | - -## NoticeIcon 通知工具 - -通知工具提供一个展示多种通知信息的界面。 - -```tsx -/** - * background: '#f0f2f5' - */ -import NoticeIcon from '@/components/NoticeIcon/NoticeIcon'; -import { message } from 'antd'; - -export default () => { - const list = [ - { - id: '000000001', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ThXAXghbEsBCCSDihZxY.png', - title: '你收到了 14 份新周报', - datetime: '2017-08-09', - type: 'notification', - }, - { - id: '000000002', - avatar: 'https://gw.alipayobjects.com/zos/rmsportal/OKJXDXrmkNshAMvwtvhu.png', - title: '你推荐的 曲妮妮 已通过第三轮面试', - datetime: '2017-08-08', - type: 'notification', - }, - ]; - return ( - { - message.info(`${item.title} 被点击了`); - }} - onClear={(title: string, key: string) => message.info('点击了清空更多')} - loading={false} - clearText="清空" - viewMoreText="查看更多" - onViewMore={() => message.info('点击了查看更多')} - clearClose - > - - - - - ); -}; -``` - -### NoticeIcon API - -| 参数 | 说明 | 类型 | 默认值 | -| --- | --- | --- | --- | -| count | 有多少未读通知 | `number` | - | -| bell | 铃铛的图表 | `ReactNode` | - | -| onClear | 点击清空数据按钮 | `(tabName: string, tabKey: string) => void` | - | -| onItemClick | 未读消息列被点击 | `(item: API.NoticeIconData, tabProps: NoticeIconTabProps) => void` | - | -| onViewMore | 查看更多的按钮点击 | `(tabProps: NoticeIconTabProps, e: MouseEvent) => void` | - | -| onTabChange | 通知 Tab 的切换 | `(tabTile: string) => void;` | - | -| popupVisible | 通知显示是否展示 | `boolean` | - | -| onPopupVisibleChange | 通知信息显示隐藏的回调函数 | `(visible: boolean) => void` | - | -| clearText | 清空按钮的文字 | `string` | - | -| viewMoreText | 查看更多的按钮文字 | `string` | - | -| clearClose | 展示清空按钮 | `boolean` | - | -| emptyImage | 列表为空时的兜底展示 | `ReactNode` | - | - -### NoticeIcon.Tab API - -| 参数 | 说明 | 类型 | 默认值 | -| ------------ | ------------------ | ------------------------------------ | ------ | -| count | 有多少未读通知 | `number` | - | -| title | 通知 Tab 的标题 | `ReactNode` | - | -| showClear | 展示清除按钮 | `boolean` | `true` | -| showViewMore | 展示加载更 | `boolean` | `true` | -| tabKey | Tab 的唯一 key | `string` | - | -| onClick | 子项的单击事件 | `(item: API.NoticeIconData) => void` | - | -| onClear | 清楚按钮的点击 | `()=>void` | - | -| emptyText | 为空的时候测试 | `()=>void` | - | -| viewMoreText | 查看更多的按钮文字 | `string` | - | -| onViewMore | 查看更多的按钮点击 | `( e: MouseEvent) => void` | - | -| list | 通知信息的列表 | `API.NoticeIconData` | - | - -### NoticeIconData - -```tsx | pure -export type NoticeIconData { - id: string; - key: string; - avatar: string; - title: string; - datetime: string; - type: string; - read?: boolean; - description: string; - clickClose?: boolean; - extra: any; - status: string; -} -``` - -## RightContent - -RightContent 是以上几个组件的组合,同时新增了 plugins 的 `SelectLang` 插件。 - -```tsx | pure - - umi ui, value: 'umi ui' }, - { - label: Ant Design, - value: 'Ant Design', - }, - { - label: Pro Table, - value: 'Pro Table', - }, - { - label: Pro Layout, - value: 'Pro Layout', - }, - ]} - /> - - { - window.location.href = 'https://pro.ant.design/docs/getting-started'; - }} - > - - - - - {REACT_APP_ENV && ( - - {REACT_APP_ENV} - - )} - - -``` diff --git a/src/e2e/baseLayout.e2e.spec.ts b/src/e2e/baseLayout.e2e.spec.ts deleted file mode 100644 index d2c2008d..00000000 --- a/src/e2e/baseLayout.e2e.spec.ts +++ /dev/null @@ -1,44 +0,0 @@ -import type { Page } from '@playwright/test'; -import { expect, test } from '@playwright/test'; -const RouterConfig = require('../../config/routes').default; - -const BASE_URL = `http://localhost:${process.env.PORT || 8001}`; - -function formatter(routes: any, parentPath = ''): string[] { - const fixedParentPath = parentPath.replace(/\/{1,}/g, '/'); - let result: string[] = []; - routes.forEach((item: { path: string; routes: string }) => { - if (item.path && !item.path.startsWith('/')) { - result.push(`${fixedParentPath}/${item.path}`.replace(/\/{1,}/g, '/')); - } - if (item.path && item.path.startsWith('/')) { - result.push(`${item.path}`.replace(/\/{1,}/g, '/')); - } - if (item.routes) { - result = result.concat( - formatter(item.routes, item.path ? `${fixedParentPath}/${item.path}` : parentPath), - ); - } - }); - return [...new Set(result.filter((item) => !!item))]; -} - -const testPage = (path: string, page: Page) => async () => { - await page.evaluate(() => { - localStorage.setItem('antd-pro-authority', '["admin"]'); - }); - await page.goto(`${BASE_URL}${path}`); - await page.waitForSelector('footer', { - timeout: 2000, - }); - const haveFooter = await page.evaluate(() => document.getElementsByTagName('footer').length > 0); - expect(haveFooter).toBeTruthy(); -}; - -const routers = formatter(RouterConfig); - -routers.forEach((route) => { - test(`test route page ${route}`, async ({ page }) => { - await testPage(route, page); - }); -}); diff --git a/src/global.less b/src/global.less index 83ef55b8..a9a0c51b 100644 --- a/src/global.less +++ b/src/global.less @@ -1,9 +1,12 @@ -@import '~antd/es/style/variable.less'; - html, body, #root { height: 100%; + margin: 0; + padding: 0; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, + 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', + 'Noto Color Emoji'; } .colorWeak { @@ -32,7 +35,7 @@ ol { list-style: none; } -@media (max-width: @screen-xs) { +@media (max-width: 768px) { .ant-table { width: 100%; overflow-x: auto; diff --git a/src/global.tsx b/src/global.tsx index 8903a36c..afa1fab5 100644 --- a/src/global.tsx +++ b/src/global.tsx @@ -58,7 +58,7 @@ if (pwa) { + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    + + + Forgot Password ? + +
    + + + + + + + + + + +`; diff --git a/src/pages/User/Login/index.less b/src/pages/User/Login/index.less deleted file mode 100644 index 36eb7d63..00000000 --- a/src/pages/User/Login/index.less +++ /dev/null @@ -1,48 +0,0 @@ -@import (reference) '~antd/es/style/themes/index'; - -.container { - display: flex; - flex-direction: column; - height: 100vh; - overflow: auto; - background: @layout-body-background; -} - -.lang { - width: 100%; - height: 40px; - line-height: 44px; - text-align: right; - :global(.ant-dropdown-trigger) { - margin-right: 24px; - } -} - -.content { - flex: 1; - padding: 32px 0; -} - -@media (min-width: @screen-md-min) { - .container { - background-image: url('https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/V-_oS6r-i7wAAAAAAAAAAAAAFl94AQBr'); - background-size: cover; - } - - .content { - padding: 32px 0 24px; - } -} - -.icon { - margin-left: 8px; - color: rgba(0, 0, 0, 0.2); - font-size: 24px; - vertical-align: middle; - cursor: pointer; - transition: color 0.3s; - - &:hover { - color: @primary-color; - } -} diff --git a/src/pages/User/Login/index.tsx b/src/pages/User/Login/index.tsx index 6fd9b100..5cf6ae20 100644 --- a/src/pages/User/Login/index.tsx +++ b/src/pages/User/Login/index.tsx @@ -15,11 +15,57 @@ import { ProFormCheckbox, ProFormText, } from '@ant-design/pro-components'; +import { useEmotionCss } from '@ant-design/use-emotion-css'; import { FormattedMessage, history, SelectLang, useIntl, useModel } from '@umijs/max'; import { Alert, message, Tabs } from 'antd'; import React, { useState } from 'react'; import { flushSync } from 'react-dom'; -import styles from './index.less'; + +const ActionIcons = () => { + const langClassName = useEmotionCss(({ token }) => { + return { + marginLeft: '8px', + color: 'rgba(0, 0, 0, 0.2)', + fontSize: '24px', + verticalAlign: 'middle', + cursor: 'pointer', + transition: 'color 0.3s', + '&:hover': { + color: token.colorPrimaryActive, + }, + }; + }); + + return ( + <> + + + + + ); +}; + +const Lang = () => { + const langClassName = useEmotionCss(({ token }) => { + return { + width: 42, + height: 42, + lineHeight: '42px', + position: 'fixed', + right: 16, + borderRadius: token.borderRadius, + ':hover': { + backgroundColor: token.colorBgTextHover, + }, + }; + }); + + return ( +
    + {SelectLang && } +
    + ); +}; const LoginMessage: React.FC<{ content: string; @@ -41,6 +87,18 @@ const Login: React.FC = () => { const [type, setType] = useState('account'); const { initialState, setInitialState } = useModel('@@initialState'); + const containerClassName = useEmotionCss(() => { + return { + display: 'flex', + flexDirection: 'column', + height: '100vh', + overflow: 'auto', + backgroundImage: + "url('https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/V-_oS6r-i7wAAAAAAAAAAAAAFl94AQBr')", + backgroundSize: '100% 100%', + }; + }); + const intl = useIntl(); const fetchUserInfo = async () => { @@ -85,12 +143,19 @@ const Login: React.FC = () => { const { status, type: loginType } = userLoginState; return ( -
    -
    - {SelectLang && } -
    -
    +
    + +
    } title="Ant Design" subTitle={intl.formatMessage({ id: 'pages.layouts.userLayout.title' })} @@ -103,9 +168,7 @@ const Login: React.FC = () => { id="pages.login.loginWith" defaultMessage="其他登录方式" />, - , - , - , + , ]} onFinish={async (values) => { await handleSubmit(values as API.LoginParams); @@ -147,7 +210,7 @@ const Login: React.FC = () => { name="username" fieldProps={{ size: 'large', - prefix: , + prefix: , }} placeholder={intl.formatMessage({ id: 'pages.login.username.placeholder', @@ -169,7 +232,7 @@ const Login: React.FC = () => { name="password" fieldProps={{ size: 'large', - prefix: , + prefix: , }} placeholder={intl.formatMessage({ id: 'pages.login.password.placeholder', @@ -196,7 +259,7 @@ const Login: React.FC = () => { , + prefix: , }} name="mobile" placeholder={intl.formatMessage({ @@ -227,7 +290,7 @@ const Login: React.FC = () => { , + prefix: , }} captchaProps={{ size: 'large', @@ -264,7 +327,7 @@ const Login: React.FC = () => { const result = await getFakeCaptcha({ phone, }); - if (result === false) { + if (!result) { return; } message.success('获取验证码成功!验证码为:1234'); diff --git a/src/pages/User/Login/login.test.tsx b/src/pages/User/Login/login.test.tsx new file mode 100644 index 00000000..8f470581 --- /dev/null +++ b/src/pages/User/Login/login.test.tsx @@ -0,0 +1,95 @@ +import { render, fireEvent, act } from '@testing-library/react'; +import React from 'react'; +import { TestBrowser } from '@@/testBrowser'; + +import { startMock } from '@@/requestRecordMock'; + +const waitTime = (time: number = 100) => { + return new Promise((resolve) => { + setTimeout(() => { + resolve(true); + }, time); + }); +}; + +let server: { + close: () => void; +}; + +describe('Login Page', () => { + beforeAll(async () => { + server = await startMock({ + port: 8000, + scene: 'login', + }); + }); + + afterAll(() => { + server?.close(); + }); + + it('should show login form', async () => { + const historyRef = React.createRef(); + const rootContainer = render( + , + ); + + await rootContainer.findAllByText('Ant Design'); + + act(() => { + historyRef.current?.push('/user/login'); + }); + + expect(rootContainer.baseElement?.querySelector('.ant-pro-form-login-desc')?.textContent).toBe( + 'Ant Design is the most influential web design specification in Xihu district', + ); + + expect(rootContainer.asFragment()).toMatchSnapshot(); + + rootContainer.unmount(); + }); + + it('should login success', async () => { + const historyRef = React.createRef(); + const rootContainer = render( + , + ); + + await rootContainer.findAllByText('Ant Design'); + + const userNameInput = await rootContainer.findByPlaceholderText('Username: admin or user'); + + act(() => { + fireEvent.change(userNameInput, { target: { value: 'admin' } }); + }); + + const passwordInput = await rootContainer.findByPlaceholderText('Password: ant.design'); + + act(() => { + fireEvent.change(passwordInput, { target: { value: 'ant.design' } }); + }); + + await (await rootContainer.findByText('Login')).click(); + + // 等待接口返回结果 + await waitTime(5000); + + await rootContainer.findAllByText('Ant Design Pro'); + + expect(rootContainer.asFragment()).toMatchSnapshot(); + + await waitTime(2000); + + rootContainer.unmount(); + }); +}); diff --git a/src/pages/Welcome.tsx b/src/pages/Welcome.tsx index 3b5730ca..d0c49f7a 100644 --- a/src/pages/Welcome.tsx +++ b/src/pages/Welcome.tsx @@ -1,5 +1,6 @@ import { PageContainer } from '@ant-design/pro-components'; -import { Card } from 'antd'; +import { useModel } from '@umijs/max'; +import { Card, theme } from 'antd'; import React from 'react'; /** @@ -13,17 +14,21 @@ const InfoCard: React.FC<{ desc: string; href: string; }> = ({ title, href, index, desc }) => { + const { useToken } = theme; + + const { token } = useToken(); + return (
    @@ -53,7 +58,7 @@ const InfoCard: React.FC<{
    @@ -63,7 +68,7 @@ const InfoCard: React.FC<{
    { + const { token } = theme.useToken(); + const { initialState } = useModel('@@initialState'); return ( { }} bodyStyle={{ backgroundImage: - 'radial-gradient(circle at 97% 10%, #EBF2FF 0%, #F5F8FF 28%, #EBF1FF 124%)', + initialState?.settings?.navTheme === 'realDark' + ? 'background-image: linear-gradient(75deg, #1A1B1F 0%, #191C1F 100%)' + : 'background-image: linear-gradient(75deg, #FBFDFF 0%, #F5F7FF 100%)', }} >
    {
    欢迎使用 Ant Design Pro @@ -110,7 +119,7 @@ const Welcome: React.FC = () => {

    {

    diff --git a/src/requestErrorConfig.ts b/src/requestErrorConfig.ts index f3c579e5..c0c4a6a2 100644 --- a/src/requestErrorConfig.ts +++ b/src/requestErrorConfig.ts @@ -51,7 +51,7 @@ export const errorConfig: RequestConfig = { // do nothing break; case ErrorShowType.WARN_MESSAGE: - message.warn(errorMessage); + message.warning(errorMessage); break; case ErrorShowType.ERROR_MESSAGE: message.error(errorMessage); diff --git a/src/typings.d.ts b/src/typings.d.ts index 7ed4bbdd..742f70c6 100644 --- a/src/typings.d.ts +++ b/src/typings.d.ts @@ -17,8 +17,4 @@ declare module 'mockjs'; declare module 'react-fittext'; declare module 'bizcharts-plugin-slider'; -// preview.pro.ant.design only do not use in your production ; -// preview.pro.ant.design Dedicated environment variable, please do not use it in your project. -declare let ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION: 'site' | undefined; - declare const REACT_APP_ENV: 'test' | 'dev' | 'pre' | false; diff --git a/tests/run-tests.js b/tests/run-tests.js deleted file mode 100644 index d4e0fc8e..00000000 --- a/tests/run-tests.js +++ /dev/null @@ -1,47 +0,0 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ -const { spawn } = require('child_process'); -const { kill } = require('cross-port-killer'); - -const env = Object.create(process.env); -env.BROWSER = 'none'; -env.TEST = true; -env.UMI_UI = 'none'; -env.PROGRESS = 'none'; -// flag to prevent multiple test -let once = false; - -const startServer = spawn(/^win/.test(process.platform) ? 'npm.cmd' : 'npm', ['run', 'serve'], { - env, -}); - -startServer.stderr.on('data', (data) => { - // eslint-disable-next-line - console.log(data.toString()); -}); - -startServer.on('exit', () => { - kill(process.env.PORT || 8000); -}); - -console.log('Starting development server for e2e tests...'); -startServer.stdout.on('data', (data) => { - console.log(data.toString()); - // hack code , wait umi - if (!once && data.toString().indexOf('Serving your umi project!') >= 0) { - // eslint-disable-next-line - once = true; - console.log('Development server is started, ready to run tests.'); - const testCmd = spawn( - /^win/.test(process.platform) ? 'npm.cmd' : 'npm', - ['run', 'playwright'], - { - stdio: 'inherit', - }, - ); - testCmd.on('exit', (code) => { - console.log('服务已经退出,退出码:', code); - startServer.kill(); - process.exit(code); - }); - } -}); diff --git a/tests/setupTests.js b/tests/setupTests.js deleted file mode 100644 index 78b50683..00000000 --- a/tests/setupTests.js +++ /dev/null @@ -1,10 +0,0 @@ -// do some test init - -const localStorageMock = { - getItem: jest.fn(), - setItem: jest.fn(), - removeItem: jest.fn(), - clear: jest.fn(), -}; - -global.localStorage = localStorageMock; diff --git a/tests/setupTests.jsx b/tests/setupTests.jsx new file mode 100644 index 00000000..952561d5 --- /dev/null +++ b/tests/setupTests.jsx @@ -0,0 +1,64 @@ +const localStorageMock = { + getItem: jest.fn(), + setItem: jest.fn(), + removeItem: jest.fn(), + clear: jest.fn(), +}; + +global.localStorage = localStorageMock; + +Object.defineProperty(URL, 'createObjectURL', { + writable: true, + value: jest.fn(), +}); + +class Worker { + constructor(stringUrl) { + this.url = stringUrl; + this.onmessage = () => {}; + } + + postMessage(msg) { + this.onmessage(msg); + } +} +window.Worker = Worker; + +/* eslint-disable global-require */ +if (typeof window !== 'undefined') { + // ref: https://github.com/ant-design/ant-design/issues/18774 + if (!window.matchMedia) { + Object.defineProperty(global.window, 'matchMedia', { + writable: true, + configurable: true, + value: jest.fn(() => ({ + matches: false, + addListener: jest.fn(), + removeListener: jest.fn(), + })), + }); + } + if (!window.matchMedia) { + Object.defineProperty(global.window, 'matchMedia', { + writable: true, + configurable: true, + value: jest.fn((query) => ({ + matches: query.includes('max-width'), + addListener: jest.fn(), + removeListener: jest.fn(), + })), + }); + } +} +const errorLog = console.error; +Object.defineProperty(global.window.console, 'error', { + writable: true, + configurable: true, + value: (...rest) => { + const logStr = rest.join(''); + if (logStr.includes('Warning: An update to %s inside a test was not wrapped in act(...)')) { + return; + } + errorLog(...rest); + }, +}); diff --git a/tsconfig.json b/tsconfig.json index 56ba13c6..85733f68 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,41 +1,23 @@ { "compilerOptions": { - "outDir": "build/dist", - "module": "esnext", "target": "esnext", - "lib": ["esnext", "dom"], - "sourceMap": true, - "baseUrl": ".", - "jsx": "react-jsx", - "resolveJsonModule": true, - "allowSyntheticDefaultImports": true, + "module": "esnext", "moduleResolution": "node", - "forceConsistentCasingInFileNames": true, - "noImplicitReturns": true, - "suppressImplicitAnyIndexErrors": true, - "noUnusedLocals": true, - "allowJs": true, + "importHelpers": true, + "jsx": "preserve", + "esModuleInterop": true, + "sourceMap": true, + "baseUrl": "./", "skipLibCheck": true, "experimentalDecorators": true, "strict": true, + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, "paths": { "@/*": ["./src/*"], - "@@/*": ["./src/.umi/*"] + "@@/*": ["./src/.umi/*"], + "@@test/*": ["./src/.umi-test/*"] } }, - "include": [ - "mock/**/*", - "src/**/*", - "playwright.config.ts", - "tests/**/*", - "test/**/*", - "__test__/**/*", - "typings/**/*", - "config/**/*", - ".eslintrc.js", - ".prettierrc.js", - "jest.config.js", - "mock/*" - ], - "exclude": ["node_modules", "build", "dist", "scripts", "src/.umi/*", "webpack", "jest"] + "include": ["./**/*.d.ts", "./**/*.ts", "./**/*.tsx"] } diff --git a/types/cache/cache.json b/types/cache/cache.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/types/cache/cache.json @@ -0,0 +1 @@ +{} diff --git a/types/cache/login.cache.json b/types/cache/login.cache.json new file mode 100644 index 00000000..81109b40 --- /dev/null +++ b/types/cache/login.cache.json @@ -0,0 +1,386 @@ +{ + "GET /api/currentUser": { + "res": { + "data": { + "name": "Serati Ma", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png", + "userid": "00000001", + "email": "antdesign@alipay.com", + "signature": "海纳百川,有容乃大", + "title": "交互专家", + "group": "蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED", + "tags": [ + { + "key": "0", + "label": "很有想法的" + }, + { + "key": "1", + "label": "专注设计" + }, + { + "key": "2", + "label": "辣~" + }, + { + "key": "3", + "label": "大长腿" + }, + { + "key": "4", + "label": "川妹子" + }, + { + "key": "5", + "label": "海纳百川" + } + ], + "notifyCount": 12, + "unreadCount": 11, + "country": "China", + "geographic": { + "province": { + "label": "浙江省", + "key": "330000" + }, + "city": { + "label": "杭州市", + "key": "330100" + } + }, + "address": "西湖区工专路 77 号", + "phone": "0752-268888888" + } + }, + "query": { + "token ": " 123" + }, + "payload": {}, + "types": "/** GET /api/currentUser */\nexport type GET_API_CURRENT_USER_QUERY = {\n /** example: 123 */\n token : string\n}\n \n\nexport type GET_API_CURRENT_USER_PAYLOAD = {\n \n}\n \n\nexport type GET_API_CURRENT_USER_RES = {\n /** example: {\"name\": \"Serati Ma\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png\", \"userid\": \"00000001\", \"email\": \"antdesign@alipay.com\", \"signature\": \"海纳百川,有容乃大\", \"title\": \"交互专家\", \"group\": \"蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED\", \"tags\": [{\"key\": \"0\", \"label\": \"很有想法的\"}, {\"key\": \"1\", \"label\": \"专注设计\"}, {\"key\": \"2\", \"label\": \"辣~\"}, {\"key\": \"3\", \"label\": \"大长腿\"}, {\"key\": \"4\", \"label\": \"川妹子\"}, {\"key\": \"5\", \"label\": \"海纳百川\"}], \"notifyCount\": 12, \"unreadCount\": 11, \"country\": \"China\", \"geographic\": {\"province\": {\"label\": \"浙江省\", \"key\": \"330000\"}, \"city\": {\"label\": \"杭州市\", \"key\": \"330100\"}}, \"address\": \"西湖区工专路 77 号\", \"phone\": \"0752-268888888\"} */\n data: {\n name: string,\navatar: string,\nuserid: string,\nemail: string,\nsignature: string,\ntitle: string,\ngroup: string,\ntags: {\n key: string,\nlabel: string\n }[],\nnotifyCount: number,\nunreadCount: number,\ncountry: string,\ngeographic: {\n province: {\n label: string,\nkey: string\n },\ncity: {\n label: string,\nkey: string\n }\n },\naddress: string,\nphone: string\n }\n}\n " + }, + "GET /api/rule": { + "res": { + "data": [ + { + "key": 99, + "disabled": false, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", + "name": "TradeCode 99", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 503, + "status": "0", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 81 + }, + { + "key": 98, + "disabled": false, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", + "name": "TradeCode 98", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 164, + "status": "0", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 12 + }, + { + "key": 97, + "disabled": false, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", + "name": "TradeCode 97", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 174, + "status": "1", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 81 + }, + { + "key": 96, + "disabled": true, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", + "name": "TradeCode 96", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 914, + "status": "0", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 7 + }, + { + "key": 95, + "disabled": false, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", + "name": "TradeCode 95", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 698, + "status": "2", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 82 + }, + { + "key": 94, + "disabled": false, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", + "name": "TradeCode 94", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 488, + "status": "1", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 14 + }, + { + "key": 93, + "disabled": false, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", + "name": "TradeCode 93", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 580, + "status": "2", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 77 + }, + { + "key": 92, + "disabled": false, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", + "name": "TradeCode 92", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 244, + "status": "3", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 58 + }, + { + "key": 91, + "disabled": false, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", + "name": "TradeCode 91", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 959, + "status": "0", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 66 + }, + { + "key": 90, + "disabled": true, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", + "name": "TradeCode 90", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 958, + "status": "0", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 72 + }, + { + "key": 89, + "disabled": false, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", + "name": "TradeCode 89", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 301, + "status": "2", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 2 + }, + { + "key": 88, + "disabled": false, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", + "name": "TradeCode 88", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 277, + "status": "1", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 12 + }, + { + "key": 87, + "disabled": false, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", + "name": "TradeCode 87", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 810, + "status": "1", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 82 + }, + { + "key": 86, + "disabled": false, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", + "name": "TradeCode 86", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 780, + "status": "3", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 22 + }, + { + "key": 85, + "disabled": false, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", + "name": "TradeCode 85", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 705, + "status": "3", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 12 + }, + { + "key": 84, + "disabled": true, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", + "name": "TradeCode 84", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 203, + "status": "0", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 79 + }, + { + "key": 83, + "disabled": false, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", + "name": "TradeCode 83", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 491, + "status": "2", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 59 + }, + { + "key": 82, + "disabled": false, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", + "name": "TradeCode 82", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 73, + "status": "0", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 100 + }, + { + "key": 81, + "disabled": false, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", + "name": "TradeCode 81", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 406, + "status": "3", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 61 + }, + { + "key": 80, + "disabled": false, + "href": "https://ant.design", + "avatar": "https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", + "name": "TradeCode 80", + "owner": "曲丽丽", + "desc": "这是一段描述", + "callNo": 112, + "status": "2", + "updatedAt": "2022-12-06T05:00:57.040Z", + "createdAt": "2022-12-06T05:00:57.040Z", + "progress": 20 + } + ], + "total": 100, + "success": true, + "pageSize": 20, + "current": 1 + }, + "query": { + "token ": " 123", + "current": "1", + "pageSize": "20" + }, + "payload": {}, + "types": "/** GET /api/rule */\nexport type GET_API_RULE_QUERY = {\n /** example: 123 */\n token : string;\n /** example: 1 */\n current: string;\n /** example: 20 */\n pageSize: string\n}\n \n\nexport type GET_API_RULE_PAYLOAD = {\n \n}\n \n\nexport type GET_API_RULE_RES = {\n /** example: [{\"key\": 99, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 99\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 503, \"status\": \"0\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 81}, {\"key\": 98, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 98\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 164, \"status\": \"0\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 12}, {\"key\": 97, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 97\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 174, \"status\": \"1\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 81}, {\"key\": 96, \"disabled\": true, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 96\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 914, \"status\": \"0\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 7}, {\"key\": 95, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 95\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 698, \"status\": \"2\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 82}, {\"key\": 94, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 94\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 488, \"status\": \"1\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 14}, {\"key\": 93, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 93\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 580, \"status\": \"2\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 77}, {\"key\": 92, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 92\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 244, \"status\": \"3\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 58}, {\"key\": 91, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 91\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 959, \"status\": \"0\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 66}, {\"key\": 90, \"disabled\": true, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 90\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 958, \"status\": \"0\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 72}, {\"key\": 89, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 89\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 301, \"status\": \"2\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 2}, {\"key\": 88, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 88\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 277, \"status\": \"1\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 12}, {\"key\": 87, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 87\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 810, \"status\": \"1\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 82}, {\"key\": 86, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 86\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 780, \"status\": \"3\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 22}, {\"key\": 85, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 85\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 705, \"status\": \"3\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 12}, {\"key\": 84, \"disabled\": true, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 84\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 203, \"status\": \"0\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 79}, {\"key\": 83, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 83\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 491, \"status\": \"2\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 59}, {\"key\": 82, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 82\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 73, \"status\": \"0\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 100}, {\"key\": 81, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png\", \"name\": \"TradeCode 81\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 406, \"status\": \"3\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 61}, {\"key\": 80, \"disabled\": false, \"href\": \"https: //ant.design\", \"avatar\": \"https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png\", \"name\": \"TradeCode 80\", \"owner\": \"曲丽丽\", \"desc\": \"这是一段描述\", \"callNo\": 112, \"status\": \"2\", \"updatedAt\": \"2022-12-06T05: 00: 57.040Z\", \"createdAt\": \"2022-12-06T05: 00: 57.040Z\", \"progress\": 20}] */\n data: {\n key: number,\ndisabled: boolean,\nhref: string,\navatar: string,\nname: string,\nowner: string,\ndesc: string,\ncallNo: number,\nstatus: string,\nupdatedAt: string,\ncreatedAt: string,\nprogress: number\n }[];\n /** example: 100 */\n total: number;\n /** example: true */\n success: boolean;\n /** example: 20 */\n pageSize: number;\n /** example: 1 */\n current: number\n}\n " + }, + "POST /api/login/outLogin": { + "res": { + "data": {}, + "success": true + }, + "query": { + "token ": " 123" + }, + "payload": {}, + "types": "/** POST /api/login/outLogin */\nexport type POST_API_LOGIN_OUT_LOGIN_QUERY = {\n /** example: 123 */\n token : string\n}\n \n\nexport type POST_API_LOGIN_OUT_LOGIN_PAYLOAD = {\n \n}\n \n\nexport type POST_API_LOGIN_OUT_LOGIN_RES = {\n /** example: {} */\n data: {\n \n };\n /** example: true */\n success: boolean\n}\n " + }, + "POST /api/login/account": { + "res": { + "status": "ok", + "type": "account", + "currentAuthority": "admin" + }, + "query": { + "token ": " 123" + }, + "payload": { + "username": "admin", + "password": "ant.design", + "autoLogin": true, + "type": "account" + }, + "types": "/** POST /api/login/account */\nexport type POST_API_LOGIN_ACCOUNT_QUERY = {\n /** example: 123 */\n token : string\n}\n \n\nexport type POST_API_LOGIN_ACCOUNT_PAYLOAD = {\n /** example: admin */\n username: string;\n /** example: ant.design */\n password: string;\n /** example: true */\n autoLogin: boolean;\n /** example: account */\n type: string\n}\n \n\nexport type POST_API_LOGIN_ACCOUNT_RES = {\n /** example: ok */\n status: string;\n /** example: account */\n type: string;\n /** example: admin */\n currentAuthority: string\n}\n " + } +} diff --git a/types/cache/mock/login.mock.cache.js b/types/cache/mock/login.mock.cache.js new file mode 100644 index 00000000..6c59e198 --- /dev/null +++ b/types/cache/mock/login.mock.cache.js @@ -0,0 +1,324 @@ +module.exports = { + 'GET /api/currentUser': { + data: { + name: 'Serati Ma', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png', + userid: '00000001', + email: 'antdesign@alipay.com', + signature: '海纳百川,有容乃大', + title: '交互专家', + group: '蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED', + tags: [ + { key: '0', label: '很有想法的' }, + { key: '1', label: '专注设计' }, + { key: '2', label: '辣~' }, + { key: '3', label: '大长腿' }, + { key: '4', label: '川妹子' }, + { key: '5', label: '海纳百川' }, + ], + notifyCount: 12, + unreadCount: 11, + country: 'China', + geographic: { + province: { label: '浙江省', key: '330000' }, + city: { label: '杭州市', key: '330100' }, + }, + address: '西湖区工专路 77 号', + phone: '0752-268888888', + }, + }, + 'GET /api/rule': { + data: [ + { + key: 99, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 99', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 503, + status: '0', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 81, + }, + { + key: 98, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 98', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 164, + status: '0', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 12, + }, + { + key: 97, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 97', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 174, + status: '1', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 81, + }, + { + key: 96, + disabled: true, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 96', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 914, + status: '0', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 7, + }, + { + key: 95, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 95', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 698, + status: '2', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 82, + }, + { + key: 94, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 94', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 488, + status: '1', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 14, + }, + { + key: 93, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 93', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 580, + status: '2', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 77, + }, + { + key: 92, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 92', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 244, + status: '3', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 58, + }, + { + key: 91, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 91', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 959, + status: '0', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 66, + }, + { + key: 90, + disabled: true, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 90', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 958, + status: '0', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 72, + }, + { + key: 89, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 89', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 301, + status: '2', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 2, + }, + { + key: 88, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 88', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 277, + status: '1', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 12, + }, + { + key: 87, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 87', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 810, + status: '1', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 82, + }, + { + key: 86, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 86', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 780, + status: '3', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 22, + }, + { + key: 85, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 85', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 705, + status: '3', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 12, + }, + { + key: 84, + disabled: true, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 84', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 203, + status: '0', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 79, + }, + { + key: 83, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 83', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 491, + status: '2', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 59, + }, + { + key: 82, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 82', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 73, + status: '0', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 100, + }, + { + key: 81, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png', + name: 'TradeCode 81', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 406, + status: '3', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 61, + }, + { + key: 80, + disabled: false, + href: 'https://ant.design', + avatar: 'https://gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png', + name: 'TradeCode 80', + owner: '曲丽丽', + desc: '这是一段描述', + callNo: 112, + status: '2', + updatedAt: '2022-12-06T05:00:57.040Z', + createdAt: '2022-12-06T05:00:57.040Z', + progress: 20, + }, + ], + total: 100, + success: true, + pageSize: 20, + current: 1, + }, + 'POST /api/login/outLogin': { data: {}, success: true }, + 'POST /api/login/account': { + status: 'ok', + type: 'account', + currentAuthority: 'admin', + }, +}; diff --git a/types/cache/mock/mock.cache.js b/types/cache/mock/mock.cache.js new file mode 100644 index 00000000..e69de29b diff --git a/types/index.d.ts b/types/index.d.ts new file mode 100644 index 00000000..39723937 --- /dev/null +++ b/types/index.d.ts @@ -0,0 +1,120 @@ +export namespace API { + /** GET /api/currentUser */ + export type GET_API_CURRENT_USER_QUERY = { + /** example: 123 */ + token: string; + }; + + export type GET_API_CURRENT_USER_PAYLOAD = {}; + + export type GET_API_CURRENT_USER_RES = { + /** example: {"name": "Serati Ma", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png", "userid": "00000001", "email": "antdesign@alipay.com", "signature": "海纳百川,有容乃大", "title": "交互专家", "group": "蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED", "tags": [{"key": "0", "label": "很有想法的"}, {"key": "1", "label": "专注设计"}, {"key": "2", "label": "辣~"}, {"key": "3", "label": "大长腿"}, {"key": "4", "label": "川妹子"}, {"key": "5", "label": "海纳百川"}], "notifyCount": 12, "unreadCount": 11, "country": "China", "geographic": {"province": {"label": "浙江省", "key": "330000"}, "city": {"label": "杭州市", "key": "330100"}}, "address": "西湖区工专路 77 号", "phone": "0752-268888888"} */ + data: { + name: string; + avatar: string; + userid: string; + email: string; + signature: string; + title: string; + group: string; + tags: { + key: string; + label: string; + }[]; + notifyCount: number; + unreadCount: number; + country: string; + geographic: { + province: { + label: string; + key: string; + }; + city: { + label: string; + key: string; + }; + }; + address: string; + phone: string; + }; + }; + + /** GET /api/rule */ + export type GET_API_RULE_QUERY = { + /** example: 123 */ + token: string; + /** example: 1 */ + current: string; + /** example: 20 */ + pageSize: string; + }; + + export type GET_API_RULE_PAYLOAD = {}; + + export type GET_API_RULE_RES = { + /** example: [{"key": 99, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 99", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 503, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 81}, {"key": 98, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 98", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 164, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 12}, {"key": 97, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 97", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 174, "status": "1", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 81}, {"key": 96, "disabled": true, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 96", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 914, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 7}, {"key": 95, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 95", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 698, "status": "2", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 82}, {"key": 94, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 94", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 488, "status": "1", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 14}, {"key": 93, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 93", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 580, "status": "2", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 77}, {"key": 92, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 92", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 244, "status": "3", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 58}, {"key": 91, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 91", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 959, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 66}, {"key": 90, "disabled": true, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 90", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 958, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 72}, {"key": 89, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 89", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 301, "status": "2", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 2}, {"key": 88, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 88", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 277, "status": "1", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 12}, {"key": 87, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 87", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 810, "status": "1", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 82}, {"key": 86, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 86", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 780, "status": "3", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 22}, {"key": 85, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 85", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 705, "status": "3", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 12}, {"key": 84, "disabled": true, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 84", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 203, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 79}, {"key": 83, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 83", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 491, "status": "2", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 59}, {"key": 82, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 82", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 73, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 100}, {"key": 81, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 81", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 406, "status": "3", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 61}, {"key": 80, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 80", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 112, "status": "2", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 20}] */ + data: { + key: number; + disabled: boolean; + href: string; + avatar: string; + name: string; + owner: string; + desc: string; + callNo: number; + status: string; + updatedAt: string; + createdAt: string; + progress: number; + }[]; + /** example: 100 */ + total: number; + /** example: true */ + success: boolean; + /** example: 20 */ + pageSize: number; + /** example: 1 */ + current: number; + }; + + /** POST /api/login/outLogin */ + export type POST_API_LOGIN_OUT_LOGIN_QUERY = { + /** example: 123 */ + token: string; + }; + + export type POST_API_LOGIN_OUT_LOGIN_PAYLOAD = {}; + + export type POST_API_LOGIN_OUT_LOGIN_RES = { + /** example: {} */ + data: {}; + /** example: true */ + success: boolean; + }; + + /** POST /api/login/account */ + export type POST_API_LOGIN_ACCOUNT_QUERY = { + /** example: 123 */ + token: string; + }; + + export type POST_API_LOGIN_ACCOUNT_PAYLOAD = { + /** example: admin */ + username: string; + /** example: ant.design */ + password: string; + /** example: true */ + autoLogin: boolean; + /** example: account */ + type: string; + }; + + export type POST_API_LOGIN_ACCOUNT_RES = { + /** example: ok */ + status: string; + /** example: account */ + type: string; + /** example: admin */ + currentAuthority: string; + }; +} From b8cf69055ade57916623ab45501eb0475b8e7098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Tue, 13 Dec 2022 10:54:05 +0800 Subject: [PATCH 76/89] fix: fix login page no work title error close https://github.com/ant-design/ant-design-pro/issues/10335 close https://github.com/ant-design/ant-design-pro/issues/10403 --- src/pages/User/Login/index.tsx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/pages/User/Login/index.tsx b/src/pages/User/Login/index.tsx index 5cf6ae20..ef483074 100644 --- a/src/pages/User/Login/index.tsx +++ b/src/pages/User/Login/index.tsx @@ -16,8 +16,9 @@ import { ProFormText, } from '@ant-design/pro-components'; import { useEmotionCss } from '@ant-design/use-emotion-css'; -import { FormattedMessage, history, SelectLang, useIntl, useModel } from '@umijs/max'; +import { FormattedMessage, history, SelectLang, useIntl, useModel, Helmet } from '@umijs/max'; import { Alert, message, Tabs } from 'antd'; +import Settings from '../../../../config/defaultSettings'; import React, { useState } from 'react'; import { flushSync } from 'react-dom'; @@ -144,6 +145,15 @@ const Login: React.FC = () => { return (
    + + + {intl.formatMessage({ + id: 'menu.login', + defaultMessage: '登录页', + })} + - {Settings.title} + +
    Date: Thu, 15 Dec 2022 22:39:05 +0800 Subject: [PATCH 77/89] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dantd=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E9=80=89=E6=8B=A9=E5=99=A8=E8=AF=AD=E8=A8=80=E5=8C=85?= =?UTF-8?q?=E4=B8=AD=E6=96=87=E7=BC=BA=E5=A4=B1=E9=97=AE=E9=A2=98=20(#1044?= =?UTF-8?q?0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/config/config.ts b/config/config.ts index 54c7d6d7..54b6a589 100644 --- a/config/config.ts +++ b/config/config.ts @@ -80,6 +80,15 @@ export default defineConfig({ locale: true, ...defaultSettings, }, + /** + * @name moment2dayjs 插件 + * @description 将项目中的 moment 替换为 dayjs + * @doc https://umijs.org/docs/max/moment2dayjs + */ + moment2dayjs: { + preset: 'antd', + plugins: ['duration'], + }, /** * @name 国际化插件 * @doc https://umijs.org/docs/max/i18n From bd93eb0a2f18027a015dec9391581e0216876769 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E5=A8=81?= Date: Wed, 28 Dec 2022 10:46:47 +0800 Subject: [PATCH 78/89] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E6=97=B6=20title=20=E4=B8=8D=E6=98=BE=E7=A4=BA=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20(#10455)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/config/config.ts b/config/config.ts index 54b6a589..bea47a1c 100644 --- a/config/config.ts +++ b/config/config.ts @@ -76,6 +76,7 @@ export default defineConfig({ * @name layout 插件 * @doc https://umijs.org/docs/max/layout-menu */ + title: 'Ant Design Pro', layout: { locale: true, ...defaultSettings, From 78c90346b0436b3f90f8c28a8eb6d06761644630 Mon Sep 17 00:00:00 2001 From: Taocap Date: Wed, 28 Dec 2022 10:47:24 +0800 Subject: [PATCH 79/89] =?UTF-8?q?fix:=20=E8=A7=A3=E5=86=B3=E9=A6=96?= =?UTF-8?q?=E6=AC=A1=E5=8A=A0=E8=BD=BD=E6=97=B6=E7=99=BD=E5=B1=8F=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20(#10347)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.ts | 8 ++ public/scripts/loading.js | 202 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 210 insertions(+) create mode 100644 public/scripts/loading.js diff --git a/config/config.ts b/config/config.ts index bea47a1c..acf2afd6 100644 --- a/config/config.ts +++ b/config/config.ts @@ -119,6 +119,14 @@ export default defineConfig({ * @doc https://umijs.org/docs/max/access */ access: {}, + /** + * @name 中额外的 script + * @description 配置 中额外的 script + */ + headScripts: [ + // 解决首次加载时白屏的问题 + { src: '/scripts/loading.js', async: true }, + ], //================ pro 插件配置 ================= presets: ['umi-presets-pro'], /** diff --git a/public/scripts/loading.js b/public/scripts/loading.js new file mode 100644 index 00000000..c1ced54c --- /dev/null +++ b/public/scripts/loading.js @@ -0,0 +1,202 @@ +/** + * loading 占位 + * 解决首次加载时白屏的问题 + */ + (function () { + const _root = document.querySelector('#root'); + if (_root && _root.innerHTML === '') { + _root.innerHTML = ` + + +
    +
    +
    + + + + + + +
    +
    +
    + 正在加载资源 +
    +
    + 初次加载资源可能需要较多时间 请耐心等待 +
    +
    + `; + } +})(); From 0b4b0b14ba70d31fd796f6464bfb06db326942c9 Mon Sep 17 00:00:00 2001 From: Tony Han Date: Wed, 28 Dec 2022 10:47:52 +0800 Subject: [PATCH 80/89] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dapi=20=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E9=97=AE=E9=A2=98=20(#10453)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/proxy.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/config/proxy.ts b/config/proxy.ts index 59e3d82e..075d3c03 100644 --- a/config/proxy.ts +++ b/config/proxy.ts @@ -10,7 +10,18 @@ * @doc https://umijs.org/docs/guides/proxy */ export default { - dev: {}, + // 如果需要自定义本地开发服务器 请取消注释按需调整 + // dev: { + // // localhost:8000/api/** -> https://preview.pro.ant.design/api/** + // '/api/': { + // // 要代理的地址 + // target: 'https://preview.pro.ant.design', + // // 配置了这个可以从 http 代理到 https + // // 依赖 origin 的功能可能需要这个,比如 cookie + // changeOrigin: true, + // }, + // }, + /** * @name 详细的代理配置 * @doc https://github.com/chimurai/http-proxy-middleware From 12863fdb3b076a688799c597bbadf39735759eb9 Mon Sep 17 00:00:00 2001 From: Tony Han Date: Sun, 8 Jan 2023 20:50:40 +0800 Subject: [PATCH 81/89] =?UTF-8?q?fix:=20=E6=9B=B4=E6=96=B0TS=20=E5=A3=B0?= =?UTF-8?q?=E6=98=8E=20(#10480)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/defaultSettings.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/config/defaultSettings.ts b/config/defaultSettings.ts index 6bd3ddf8..b0711647 100644 --- a/config/defaultSettings.ts +++ b/config/defaultSettings.ts @@ -1,9 +1,9 @@ -import { Settings as LayoutSettings } from '@ant-design/pro-components'; +import { ProLayoutProps } from '@ant-design/pro-components'; /** * @name */ -const Settings: LayoutSettings & { +const Settings: ProLayoutProps & { pwa?: boolean; logo?: string; } = { @@ -16,9 +16,13 @@ const Settings: LayoutSettings & { fixSiderbar: true, colorWeak: false, title: 'Ant Design Pro', - pwa: false, + pwa: true, logo: 'https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg', iconfontUrl: '', + token: { + // 参见ts声明,demo 见文档,通过token 修改样式 + //https://procomponents.ant.design/components/layout#%E9%80%9A%E8%BF%87-token-%E4%BF%AE%E6%94%B9%E6%A0%B7%E5%BC%8F + } }; -export default Settings; +export default Settings From fe199f7e3dbf8048fcf98a271b067ccd2a6b1112 Mon Sep 17 00:00:00 2001 From: Hexi <66669483+Hexi1997@users.noreply.github.com> Date: Sun, 8 Jan 2023 20:51:04 +0800 Subject: [PATCH 82/89] feat: bump react type version to 18 (#10478) --- package.json | 4 +-- pnpm-lock.yaml | 96 +++++++++++++++++++++++--------------------------- 2 files changed, 47 insertions(+), 53 deletions(-) diff --git a/package.json b/package.json index 2bf84187..8f0b0a6d 100644 --- a/package.json +++ b/package.json @@ -70,8 +70,8 @@ "@types/history": "^4.7.11", "@types/jest": "^29.2.1", "@types/lodash": "^4.14.186", - "@types/react": "^17.0.0", - "@types/react-dom": "^17.0.0", + "@types/react": "^18.0.0", + "@types/react-dom": "^18.0.0", "@types/react-helmet": "^6.1.5", "@umijs/lint": "^4.0.34", "@umijs/max": "^4.0.33", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c7c567f0..035f973b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,8 +11,8 @@ specifiers: '@types/history': ^4.7.11 '@types/jest': ^29.2.1 '@types/lodash': ^4.14.186 - '@types/react': ^17.0.0 - '@types/react-dom': ^17.0.0 + '@types/react': ^18.0.0 + '@types/react-dom': ^18.0.0 '@types/react-helmet': ^6.1.5 '@umijs/lint': ^4.0.34 '@umijs/max': ^4.0.33 @@ -68,11 +68,11 @@ devDependencies: '@types/history': 4.7.11 '@types/jest': 29.2.4 '@types/lodash': 4.14.191 - '@types/react': 17.0.52 - '@types/react-dom': 17.0.18 + '@types/react': 18.0.26 + '@types/react-dom': 18.0.9 '@types/react-helmet': 6.1.6 '@umijs/lint': 4.0.35_jig7mdlcju4lt57i33g5qicbgy - '@umijs/max': 4.0.35_6f5xgdrvtycvcwlwz2s4cplhka + '@umijs/max': 4.0.35_2caics5fpyhs6yxqssqr7m26zi cross-env: 7.0.3 eslint: 8.29.0 express: 4.18.2 @@ -86,7 +86,7 @@ devDependencies: swagger-ui-dist: 4.15.5 ts-node: 10.9.1_typescript@4.9.4 typescript: 4.9.4 - umi-presets-pro: 2.0.0_gz5lvdtqfbr75jwfu5jagggsw4 + umi-presets-pro: 2.0.0_reqejh5yylq3ssqvxkfphxdmza packages: @@ -114,7 +114,7 @@ packages: react: 18.2.0 dev: true - /@alita/plugins/3.2.6_gz5lvdtqfbr75jwfu5jagggsw4: + /@alita/plugins/3.2.6_reqejh5yylq3ssqvxkfphxdmza: resolution: {integrity: sha512-XRhY2x07oVZ4s8PRIvVrcf7XXP7S2rfv4CvFd37oV2lOSM7mFvgagw1LGHdY2peBnT63r8yVfFPoRLmrZFjCjg==} dependencies: '@alita/babel-transform-jsx-class': 0.0.2 @@ -122,7 +122,7 @@ packages: '@alita/request': 3.1.0 '@alita/types': 3.1.0 '@umijs/bundler-utils': 4.0.34 - '@umijs/plugins': 4.0.34_gz5lvdtqfbr75jwfu5jagggsw4 + '@umijs/plugins': 4.0.34_reqejh5yylq3ssqvxkfphxdmza '@umijs/utils': 4.0.34 ahooks: 3.7.2_react@18.2.0 antd-mobile-alita: 2.3.4_biqbaboplfbrettd7655fr4n2y @@ -2743,20 +2743,20 @@ packages: '@floating-ui/core': 0.6.2 dev: true - /@floating-ui/react-dom-interactions/0.3.1_bynveq746y3g6trbvbqtemqkhe: + /@floating-ui/react-dom-interactions/0.3.1_2wivdsbsvmk3pblmocpmpqwn2e: resolution: {integrity: sha512-tP2KEh7EHJr5hokSBHcPGojb+AorDNUf0NYfZGg/M+FsMvCOOsSEeEF0O1NDfETIzDnpbHnCs0DuvCFhSMSStg==} dependencies: - '@floating-ui/react-dom': 0.6.3_bynveq746y3g6trbvbqtemqkhe - aria-hidden: 1.2.2_nik5kfrnrsctffq6o6vr6ceura + '@floating-ui/react-dom': 0.6.3_2wivdsbsvmk3pblmocpmpqwn2e + aria-hidden: 1.2.2_3d3cqnhbk5jgdxsmxlr7d24np4 point-in-polygon: 1.1.0 - use-isomorphic-layout-effect: 1.1.2_nik5kfrnrsctffq6o6vr6ceura + use-isomorphic-layout-effect: 1.1.2_3d3cqnhbk5jgdxsmxlr7d24np4 transitivePeerDependencies: - '@types/react' - react - react-dom dev: true - /@floating-ui/react-dom/0.6.3_bynveq746y3g6trbvbqtemqkhe: + /@floating-ui/react-dom/0.6.3_2wivdsbsvmk3pblmocpmpqwn2e: resolution: {integrity: sha512-hC+pS5D6AgS2wWjbmSQ6UR6Kpy+drvWGJIri6e1EDGADTPsCaa4KzCgmCczHrQeInx9tqs81EyDmbKJYY2swKg==} peerDependencies: react: '>=16.8.0' @@ -2765,7 +2765,7 @@ packages: '@floating-ui/dom': 0.4.5 react: 18.1.0 react-dom: 18.1.0_react@18.1.0 - use-isomorphic-layout-effect: 1.1.2_nik5kfrnrsctffq6o6vr6ceura + use-isomorphic-layout-effect: 1.1.2_3d3cqnhbk5jgdxsmxlr7d24np4 transitivePeerDependencies: - '@types/react' dev: true @@ -3789,7 +3789,7 @@ packages: /@types/hoist-non-react-statics/3.3.1: resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} dependencies: - '@types/react': 17.0.52 + '@types/react': 18.0.26 hoist-non-react-statics: 3.3.2 dev: true @@ -3892,35 +3892,29 @@ packages: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: true - /@types/react-dom/17.0.18: - resolution: {integrity: sha512-rLVtIfbwyur2iFKykP2w0pl/1unw26b5td16d5xMgp7/yjTHomkyxPYChFoCr/FtEX1lN9wY6lFj1qvKdS5kDw==} - dependencies: - '@types/react': 17.0.52 - dev: true - /@types/react-dom/18.0.9: resolution: {integrity: sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==} dependencies: - '@types/react': 17.0.52 + '@types/react': 18.0.26 dev: true /@types/react-helmet/6.1.6: resolution: {integrity: sha512-ZKcoOdW/Tg+kiUbkFCBtvDw0k3nD4HJ/h/B9yWxN4uDO8OkRksWTO+EL+z/Qu3aHTeTll3Ro0Cc/8UhwBCMG5A==} dependencies: - '@types/react': 17.0.52 + '@types/react': 18.0.26 dev: true /@types/react-redux/7.1.24: resolution: {integrity: sha512-7FkurKcS1k0FHZEtdbbgN8Oc6b+stGSfZYjQGicofJ0j4U0qIn/jaSvnP2pLwZKiai3/17xqqxkkrxTgN8UNbQ==} dependencies: '@types/hoist-non-react-statics': 3.3.1 - '@types/react': 17.0.52 + '@types/react': 18.0.26 hoist-non-react-statics: 3.3.2 redux: 4.2.0 dev: true - /@types/react/17.0.52: - resolution: {integrity: sha512-vwk8QqVODi0VaZZpDXQCmEmiOuyjEFPY7Ttaw5vjM112LOq37yz1CDJGrRJwA1fYEq4Iitd5rnjd1yWAc/bT+A==} + /@types/react/18.0.26: + resolution: {integrity: sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 @@ -4667,16 +4661,16 @@ packages: - supports-color dev: true - /@umijs/max/4.0.35_6f5xgdrvtycvcwlwz2s4cplhka: + /@umijs/max/4.0.35_2caics5fpyhs6yxqssqr7m26zi: resolution: {integrity: sha512-fc00c56J3nlP+5rLJg2aDqnqcDbfKr2o2sxwhKpuXPXZDtHIPDUrUG5HVWDKmJEoEbVLfsmNhPhaoeRyPNw/cA==} hasBin: true dependencies: '@umijs/lint': 4.0.35_p4csibq5ks3vioan4srswcqg5u - '@umijs/plugins': 4.0.35_dx4u7azef3skd24mgiwvchjwe4 + '@umijs/plugins': 4.0.35_ii54bkuv4u5lulfkc7hunvvogq antd: 4.24.5_biqbaboplfbrettd7655fr4n2y eslint: 8.15.0 stylelint: 14.8.2 - umi: 4.0.35_b3zq4vnhqh7moefpp7mqr7nqry + umi: 4.0.35_ew6kx7lupa6qwvuxl2p2nnz2da transitivePeerDependencies: - '@babel/core' - '@babel/helper-module-imports' @@ -4761,7 +4755,7 @@ packages: tsx: 3.12.1 dev: true - /@umijs/plugins/4.0.34_gz5lvdtqfbr75jwfu5jagggsw4: + /@umijs/plugins/4.0.34_reqejh5yylq3ssqvxkfphxdmza: resolution: {integrity: sha512-6mkqpXUqkaSARUw/P8vveFDKmXtYZXVDzwZsB1QMTxCHWZ3JoqiiN3blIbxvjwRRUGlHRpaHyvqTC1s+y0Va2w==} dependencies: '@ahooksjs/use-request': 2.8.15_react@18.2.0 @@ -4784,7 +4778,7 @@ packages: moment: 2.29.4 qiankun: 2.8.4 react-intl: 3.12.1_react@18.2.0 - react-redux: 8.0.5_x3na3lw4ol2i5xbh2dqwzqy74u + react-redux: 8.0.5_6fpxtwwxc52cyvwzdgczt4jvpq redux: 4.2.0 warning: 4.0.3 transitivePeerDependencies: @@ -4806,7 +4800,7 @@ packages: - vite dev: true - /@umijs/plugins/4.0.35_dx4u7azef3skd24mgiwvchjwe4: + /@umijs/plugins/4.0.35_ii54bkuv4u5lulfkc7hunvvogq: resolution: {integrity: sha512-+Abxf9fKmjDdV+ZPpSXDiR5OnNvMflYQopkQVPs21r58maF6gNwtjcQHCEewWyG+mTgnX6f4RBxXyJBg/V3evw==} dependencies: '@ahooksjs/use-request': 2.8.15_react@18.2.0 @@ -4829,7 +4823,7 @@ packages: moment: 2.29.4 qiankun: 2.8.4 react-intl: 3.12.1_react@18.2.0 - react-redux: 8.0.5_x3na3lw4ol2i5xbh2dqwzqy74u + react-redux: 8.0.5_6fpxtwwxc52cyvwzdgczt4jvpq redux: 4.2.0 styled-components: 6.0.0-beta.6_biqbaboplfbrettd7655fr4n2y warning: 4.0.3 @@ -4853,7 +4847,7 @@ packages: - vite dev: true - /@umijs/plugins/4.0.35_gz5lvdtqfbr75jwfu5jagggsw4: + /@umijs/plugins/4.0.35_reqejh5yylq3ssqvxkfphxdmza: resolution: {integrity: sha512-+Abxf9fKmjDdV+ZPpSXDiR5OnNvMflYQopkQVPs21r58maF6gNwtjcQHCEewWyG+mTgnX6f4RBxXyJBg/V3evw==} dependencies: '@ahooksjs/use-request': 2.8.15_react@18.2.0 @@ -4876,7 +4870,7 @@ packages: moment: 2.29.4 qiankun: 2.8.4 react-intl: 3.12.1_react@18.2.0 - react-redux: 8.0.5_x3na3lw4ol2i5xbh2dqwzqy74u + react-redux: 8.0.5_6fpxtwwxc52cyvwzdgczt4jvpq redux: 4.2.0 styled-components: 6.0.0-beta.6_biqbaboplfbrettd7655fr4n2y warning: 4.0.3 @@ -4900,7 +4894,7 @@ packages: - vite dev: true - /@umijs/preset-umi/4.0.35_wuwhjehtb3nhae7urou2zggzfe: + /@umijs/preset-umi/4.0.35_gxci7zjypbzwkagmgqo6pdnhwa: resolution: {integrity: sha512-+BQNP2zNlhG9HzQxVJGEhadelVuCBj6jRV6xZgjBrRHzbZZdp2SwBfiMCRnnhZqhMllcqM7Slr2ecm1RJa1hdA==} dependencies: '@umijs/ast': 4.0.35 @@ -4917,7 +4911,7 @@ packages: '@umijs/server': 4.0.35 '@umijs/utils': 4.0.35 babel-plugin-dynamic-import-node: 2.3.3 - click-to-react-component: 1.0.8_bynveq746y3g6trbvbqtemqkhe + click-to-react-component: 1.0.8_2wivdsbsvmk3pblmocpmpqwn2e core-js: 3.22.4 current-script-polyfill: 1.0.0 enhanced-resolve: 5.9.3 @@ -5423,7 +5417,7 @@ packages: /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - /aria-hidden/1.2.2_nik5kfrnrsctffq6o6vr6ceura: + /aria-hidden/1.2.2_3d3cqnhbk5jgdxsmxlr7d24np4: resolution: {integrity: sha512-6y/ogyDTk/7YAe91T3E2PR1ALVKyM2QbTio5HwM+N1Q6CMlCKhvClyIjkckBswa0f2xJhjsfzIGa1yVSe1UMVA==} engines: {node: '>=10'} peerDependencies: @@ -5433,7 +5427,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 17.0.52 + '@types/react': 18.0.26 react: 18.1.0 tslib: 2.4.1 dev: true @@ -6231,12 +6225,12 @@ packages: string-width: 4.2.3 dev: true - /click-to-react-component/1.0.8_bynveq746y3g6trbvbqtemqkhe: + /click-to-react-component/1.0.8_2wivdsbsvmk3pblmocpmpqwn2e: resolution: {integrity: sha512-YBNYOp00udy+NBEnUmM/3Df0Yco1iHNQ8k0ltlJVcDYK9AuYt14xPoJicBh/BokLqbzkci1p+pbdY5r4JXZC4g==} peerDependencies: react: '>=16.8.0' dependencies: - '@floating-ui/react-dom-interactions': 0.3.1_bynveq746y3g6trbvbqtemqkhe + '@floating-ui/react-dom-interactions': 0.3.1_2wivdsbsvmk3pblmocpmpqwn2e htm: 3.1.1 react: 18.1.0 react-merge-refs: 1.1.0 @@ -13692,7 +13686,7 @@ packages: react-is: 17.0.2 dev: true - /react-redux/8.0.5_x3na3lw4ol2i5xbh2dqwzqy74u: + /react-redux/8.0.5_6fpxtwwxc52cyvwzdgczt4jvpq: resolution: {integrity: sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==} peerDependencies: '@types/react': ^16.8 || ^17.0 || ^18.0 @@ -13715,8 +13709,8 @@ packages: dependencies: '@babel/runtime': 7.20.6 '@types/hoist-non-react-statics': 3.3.1 - '@types/react': 17.0.52 - '@types/react-dom': 17.0.18 + '@types/react': 18.0.26 + '@types/react-dom': 18.0.9 '@types/use-sync-external-store': 0.0.3 hoist-non-react-statics: 3.3.2 react: 18.2.0 @@ -15584,12 +15578,12 @@ packages: resolution: {integrity: sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==} dev: true - /umi-presets-pro/2.0.0_gz5lvdtqfbr75jwfu5jagggsw4: + /umi-presets-pro/2.0.0_reqejh5yylq3ssqvxkfphxdmza: resolution: {integrity: sha512-x/aQygHQlRl9TcHQf90thEfJaDaZjAVeh/R3iYnj9SZAZmZT9vzkvmjVGHanppYiA6yAo1MJtxI6zgDETv3tUA==} dependencies: - '@alita/plugins': 3.2.6_gz5lvdtqfbr75jwfu5jagggsw4 + '@alita/plugins': 3.2.6_reqejh5yylq3ssqvxkfphxdmza '@umijs/max-plugin-openapi': 2.0.0 - '@umijs/plugins': 4.0.35_gz5lvdtqfbr75jwfu5jagggsw4 + '@umijs/plugins': 4.0.35_reqejh5yylq3ssqvxkfphxdmza '@umijs/request-record': 1.1.2 swagger-ui-dist: 4.15.5 transitivePeerDependencies: @@ -15635,7 +15629,7 @@ packages: slash2: 2.0.0 dev: true - /umi/4.0.35_b3zq4vnhqh7moefpp7mqr7nqry: + /umi/4.0.35_ew6kx7lupa6qwvuxl2p2nnz2da: resolution: {integrity: sha512-5+k3dp19X51hoGimdzyk4igztm4Mx0AvcEgHVkJcEj/cFo2ydzVoDhjofqnGkpwoLPovu4aU4dLpFS6zZaT13g==} engines: {node: '>=14'} hasBin: true @@ -15645,7 +15639,7 @@ packages: '@umijs/bundler-webpack': 4.0.35_typescript@4.9.4 '@umijs/core': 4.0.35 '@umijs/lint': 4.0.35_p4csibq5ks3vioan4srswcqg5u - '@umijs/preset-umi': 4.0.35_wuwhjehtb3nhae7urou2zggzfe + '@umijs/preset-umi': 4.0.35_gxci7zjypbzwkagmgqo6pdnhwa '@umijs/renderer-react': 4.0.35_biqbaboplfbrettd7655fr4n2y '@umijs/server': 4.0.35 '@umijs/test': 4.0.35 @@ -15801,7 +15795,7 @@ packages: querystring: 0.2.0 dev: true - /use-isomorphic-layout-effect/1.1.2_nik5kfrnrsctffq6o6vr6ceura: + /use-isomorphic-layout-effect/1.1.2_3d3cqnhbk5jgdxsmxlr7d24np4: resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} peerDependencies: '@types/react': '*' @@ -15810,7 +15804,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 17.0.52 + '@types/react': 18.0.26 react: 18.1.0 dev: true From 732581083c2812630ec5de4172170535e62b63b0 Mon Sep 17 00:00:00 2001 From: chenshuai2144 Date: Sun, 8 Jan 2023 22:41:37 +0800 Subject: [PATCH 83/89] fix test error --- config/proxy.ts | 2 +- src/pages/User/Login/login.test.tsx | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/config/proxy.ts b/config/proxy.ts index 075d3c03..1b568e2f 100644 --- a/config/proxy.ts +++ b/config/proxy.ts @@ -21,7 +21,7 @@ export default { // changeOrigin: true, // }, // }, - + /** * @name 详细的代理配置 * @doc https://github.com/chimurai/http-proxy-middleware diff --git a/src/pages/User/Login/login.test.tsx b/src/pages/User/Login/login.test.tsx index 8f470581..18593f83 100644 --- a/src/pages/User/Login/login.test.tsx +++ b/src/pages/User/Login/login.test.tsx @@ -2,6 +2,7 @@ import React from 'react'; import { TestBrowser } from '@@/testBrowser'; +// @ts-ignore import { startMock } from '@@/requestRecordMock'; const waitTime = (time: number = 100) => { From 8c6ac3486b8c58a11d274faf4024ed95be8facf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Fri, 13 Jan 2023 15:16:45 +0800 Subject: [PATCH 84/89] chore: update typescript --- config/defaultSettings.ts | 6 +- pnpm-lock.yaml | 4711 +++++++++++++++++++------------------ src/app.tsx | 4 +- types/index.d.ts | 8 +- 4 files changed, 2396 insertions(+), 2333 deletions(-) diff --git a/config/defaultSettings.ts b/config/defaultSettings.ts index b0711647..2796a7ec 100644 --- a/config/defaultSettings.ts +++ b/config/defaultSettings.ts @@ -20,9 +20,9 @@ const Settings: ProLayoutProps & { logo: 'https://gw.alipayobjects.com/zos/rmsportal/KDpgvguMpGfqaHPjicRK.svg', iconfontUrl: '', token: { - // 参见ts声明,demo 见文档,通过token 修改样式 + // 参见ts声明,demo 见文档,通过token 修改样式 //https://procomponents.ant.design/components/layout#%E9%80%9A%E8%BF%87-token-%E4%BF%AE%E6%94%B9%E6%A0%B7%E5%BC%8F - } + }, }; -export default Settings +export default Settings; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 035f973b..f921c339 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,18 +45,18 @@ specifiers: dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-components': 2.3.44_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/use-emotion-css': 1.0.4_oyfmaw7obiocvtyvu3c64vlxvi + '@ant-design/pro-components': 2.3.52_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/use-emotion-css': 1.0.4_3eprgtpjc4b52y4s5m2payzg5q '@umijs/route-utils': 2.2.2 - antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 lodash: 4.17.21 moment: 2.29.4 omit.js: 2.0.2 rc-menu: 9.8.1_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 - react-dev-inspector: 1.8.3_tn6ozhzi5twwqsvqh5iimryhr4 + react-dev-inspector: 1.8.4_ol4nhuzbuflsbzk2mijpqykzba react-dom: 18.2.0_react@18.2.0 react-helmet-async: 1.3.0_biqbaboplfbrettd7655fr4n2y @@ -64,17 +64,17 @@ devDependencies: '@ant-design/pro-cli': 2.1.5 '@testing-library/react': 13.4.0_biqbaboplfbrettd7655fr4n2y '@types/classnames': 2.3.1 - '@types/express': 4.17.14 + '@types/express': 4.17.15 '@types/history': 4.7.11 - '@types/jest': 29.2.4 + '@types/jest': 29.2.5 '@types/lodash': 4.14.191 '@types/react': 18.0.26 - '@types/react-dom': 18.0.9 + '@types/react-dom': 18.0.10 '@types/react-helmet': 6.1.6 - '@umijs/lint': 4.0.35_jig7mdlcju4lt57i33g5qicbgy - '@umijs/max': 4.0.35_2caics5fpyhs6yxqssqr7m26zi + '@umijs/lint': 4.0.44_kudefufnb5v4dzpyosesvz63ky + '@umijs/max': 4.0.44_qgo5fbsqag6anccdzo2ypcvrri cross-env: 7.0.3 - eslint: 8.29.0 + eslint: 8.31.0 express: 4.18.2 gh-pages: 3.2.3 husky: 7.0.4 @@ -82,11 +82,11 @@ devDependencies: jest-environment-jsdom: 29.3.1 lint-staged: 10.5.4 mockjs: 1.1.0 - prettier: 2.8.1 + prettier: 2.8.2 swagger-ui-dist: 4.15.5 ts-node: 10.9.1_typescript@4.9.4 typescript: 4.9.4 - umi-presets-pro: 2.0.0_reqejh5yylq3ssqvxkfphxdmza + umi-presets-pro: 2.0.0_aegj6e4bshbj2ek6a2qagy3lt4 packages: @@ -114,20 +114,20 @@ packages: react: 18.2.0 dev: true - /@alita/plugins/3.2.6_reqejh5yylq3ssqvxkfphxdmza: - resolution: {integrity: sha512-XRhY2x07oVZ4s8PRIvVrcf7XXP7S2rfv4CvFd37oV2lOSM7mFvgagw1LGHdY2peBnT63r8yVfFPoRLmrZFjCjg==} + /@alita/plugins/3.2.7_aegj6e4bshbj2ek6a2qagy3lt4: + resolution: {integrity: sha512-N4rpPLpqpC2GAsb9Wh0zBCf7sNxFi72EgMRQpLWWAl7J9SLgTlJjmB0vTersee/uXAvZO2WSwmPpreEpQAh8aQ==} dependencies: '@alita/babel-transform-jsx-class': 0.0.2 '@alita/inspx': 0.0.2_react@18.2.0 '@alita/request': 3.1.0 '@alita/types': 3.1.0 - '@umijs/bundler-utils': 4.0.34 - '@umijs/plugins': 4.0.34_reqejh5yylq3ssqvxkfphxdmza - '@umijs/utils': 4.0.34 - ahooks: 3.7.2_react@18.2.0 + '@umijs/bundler-utils': 4.0.36 + '@umijs/plugins': 4.0.36_aegj6e4bshbj2ek6a2qagy3lt4 + '@umijs/utils': 4.0.36 + ahooks: 3.7.4_react@18.2.0 antd-mobile-alita: 2.3.4_biqbaboplfbrettd7655fr4n2y antd-mobile-icons: 0.2.2 - babel-plugin-import: 1.13.5 + babel-plugin-import: 1.13.6 babel-runtime-jsx-plus: 0.1.5 classnames: 2.3.2 dva-core: 2.0.4_redux@4.2.0 @@ -135,7 +135,7 @@ packages: dva-loading: 3.0.22_dva-core@2.0.4 history: 5.3.0 react-redux: 7.2.9_biqbaboplfbrettd7655fr4n2y - react-router-dom: 6.4.5_biqbaboplfbrettd7655fr4n2y + react-router-dom: 6.6.2_biqbaboplfbrettd7655fr4n2y redux: 4.2.0 semver: 7.3.5 transitivePeerDependencies: @@ -147,6 +147,7 @@ packages: - antd - aslemammad-vite-plugin-macro - babel-plugin-macros + - babel-plugin-styled-components - debug - dva - rc-field-form @@ -183,18 +184,18 @@ packages: dependencies: '@ctrl/tinycolor': 3.5.0 - /@ant-design/cssinjs/1.1.1_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-GtgALFUwwkOAwc8JundzcdLDckyrc+tgxpx4RGZQTDNOuh5VnngybpRfwvug8znt5/Zy9uNkzrSUPO05kBivcg==} + /@ant-design/cssinjs/1.4.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-siFyX5VyiJWKBQAffI8zE0WZ4OWfI35QnqesbtHaVg49QxHFAcFN9VbJ+Qoos24JxABcxfopEwMWe2joZ2QVBQ==} peerDependencies: react: '>=16.0.0' react-dom: '>=16.0.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 '@emotion/hash': 0.8.0 '@emotion/unitless': 0.7.5 classnames: 2.3.2 csstype: 3.1.1 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 stylis: 4.1.3 @@ -211,58 +212,60 @@ packages: dependencies: '@ant-design/colors': 6.0.0 '@ant-design/icons-svg': 4.2.1 - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - /@ant-design/pro-card/2.1.4_64eqgvq3haz2hl2tk2jtpjblg4: - resolution: {integrity: sha512-AOyfT1aB+1alD4P3phy+5RM4vc3QGYy2g2Lq4BfM76LnNjp33ejTLA6E09yRI/DMw122mxgAL01cEJv6tNGWxw==} + /@ant-design/pro-card/2.1.10_3eprgtpjc4b52y4s5m2payzg5q: + resolution: {integrity: sha512-edajGd2/35w73tLC7yMZf2/8tWg4Wz9pmN6jQgFo+QIRXoaHd5zpeQaOMxZojeqzCxTH0Qt60YpeLp/S+ahupQ==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-utils': 2.4.4_64eqgvq3haz2hl2tk2jtpjblg4 - '@babel/runtime': 7.20.6 - antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q + '@babel/runtime': 7.20.7 + antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 omit.js: 2.0.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 transitivePeerDependencies: - react-dom - dev: true - /@ant-design/pro-card/2.1.4_oyfmaw7obiocvtyvu3c64vlxvi: - resolution: {integrity: sha512-AOyfT1aB+1alD4P3phy+5RM4vc3QGYy2g2Lq4BfM76LnNjp33ejTLA6E09yRI/DMw122mxgAL01cEJv6tNGWxw==} + /@ant-design/pro-card/2.1.10_b6pt25ruzstflsuamv2lnyq45m: + resolution: {integrity: sha512-edajGd2/35w73tLC7yMZf2/8tWg4Wz9pmN6jQgFo+QIRXoaHd5zpeQaOMxZojeqzCxTH0Qt60YpeLp/S+ahupQ==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-utils': 2.4.4_oyfmaw7obiocvtyvu3c64vlxvi - '@babel/runtime': 7.20.6 - antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + '@ant-design/pro-provider': 2.4.0_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-utils': 2.5.4_b6pt25ruzstflsuamv2lnyq45m + '@babel/runtime': 7.20.7 + antd: 4.24.7_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 omit.js: 2.0.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 transitivePeerDependencies: - react-dom + dev: true /@ant-design/pro-cli/2.1.5: resolution: {integrity: sha512-nFdVRlKRFh6UcjKmkEnpImCz3mOCMz1u6lo9IIVo2lwlbNInc5EZxXfJJm4tAXUSrOfsiIl/Iwc2bsQ5xJBLeA==} hasBin: true dependencies: - '@babel/core': 7.20.5 - '@babel/generator': 7.20.5 - '@babel/parser': 7.20.5 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 + '@babel/core': 7.20.12 + '@babel/generator': 7.20.7 + '@babel/parser': 7.20.7 + '@babel/traverse': 7.20.12 + '@babel/types': 7.20.7 '@umijs/fabric': 2.14.0 babel-types: 6.26.0 blink-diff: 1.0.13 @@ -276,11 +279,11 @@ packages: import-fresh: 3.3.0 intl-messageformat: 9.13.0 lodash.groupby: 4.6.0 - node-fetch: 2.6.7 + node-fetch: 2.6.8 node-import-ts: 1.0.6 ora: 5.4.1 pngjs-image: 0.11.7 - prettier: 2.8.1 + prettier: 2.8.2 rimraf: 3.0.2 semver: 7.3.8 typescript: 4.9.4 @@ -295,145 +298,145 @@ packages: - utf-8-validate dev: true - /@ant-design/pro-components/2.3.44_64eqgvq3haz2hl2tk2jtpjblg4: - resolution: {integrity: sha512-dqlvlmuZ0KE5Nrw+1sHsMQJiPW0smjfEJGBF08aawsiBdLOMrkx1kmtcci5922oz5B5DBRyIwTI2GYnbZO7jNQ==} + /@ant-design/pro-components/2.3.52_3eprgtpjc4b52y4s5m2payzg5q: + resolution: {integrity: sha512-df51Xi59QRXXIc5uMcO/7/tPjNziGt1w40860yCztFBNCoNc9B+xvDwsuRWgvRL1yqM4SZL1Al7T392CtyESSg==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@ant-design/pro-card': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-descriptions': 2.0.37_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-field': 2.1.28_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-form': 2.4.5_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-layout': 7.3.7_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-list': 2.0.38_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-provider': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-skeleton': 2.0.7_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-table': 3.2.5_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-utils': 2.4.4_64eqgvq3haz2hl2tk2jtpjblg4 - '@babel/runtime': 7.20.6 - antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-card': 2.1.10_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-descriptions': 2.0.44_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-field': 2.2.5_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-form': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-layout': 7.6.1_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-list': 2.0.45_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-skeleton': 2.0.7_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-table': 3.2.12_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q + '@babel/runtime': 7.20.7 + antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva react: 18.2.0 react-dom: 18.2.0_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' - rc-field-form - dev: true - /@ant-design/pro-components/2.3.44_oyfmaw7obiocvtyvu3c64vlxvi: - resolution: {integrity: sha512-dqlvlmuZ0KE5Nrw+1sHsMQJiPW0smjfEJGBF08aawsiBdLOMrkx1kmtcci5922oz5B5DBRyIwTI2GYnbZO7jNQ==} + /@ant-design/pro-components/2.3.52_b6pt25ruzstflsuamv2lnyq45m: + resolution: {integrity: sha512-df51Xi59QRXXIc5uMcO/7/tPjNziGt1w40860yCztFBNCoNc9B+xvDwsuRWgvRL1yqM4SZL1Al7T392CtyESSg==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@ant-design/pro-card': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-descriptions': 2.0.37_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-field': 2.1.28_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-form': 2.4.5_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-layout': 7.3.7_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-list': 2.0.38_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-provider': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-skeleton': 2.0.7_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-table': 3.2.5_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-utils': 2.4.4_oyfmaw7obiocvtyvu3c64vlxvi - '@babel/runtime': 7.20.6 - antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + '@ant-design/pro-card': 2.1.10_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-descriptions': 2.0.44_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-field': 2.2.5_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-form': 2.5.4_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-layout': 7.6.1_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-list': 2.0.45_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-provider': 2.4.0_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-skeleton': 2.0.7_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-table': 3.2.12_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-utils': 2.5.4_b6pt25ruzstflsuamv2lnyq45m + '@babel/runtime': 7.20.7 + antd: 4.24.7_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' - rc-field-form + dev: true - /@ant-design/pro-descriptions/2.0.37_64eqgvq3haz2hl2tk2jtpjblg4: - resolution: {integrity: sha512-U5AVUR8vQU0IWECmQ5wTQZB+qKte+ojNNz5J8aA/qGGQ6b0deNXA1+Mf3QUzoNWXZ1JGOnfc4UgTHZTAEl513g==} + /@ant-design/pro-descriptions/2.0.44_3eprgtpjc4b52y4s5m2payzg5q: + resolution: {integrity: sha512-UEwZbvjOBTxWvPGv8qb3i+Q5czuHFYwRokSgVzVyS2el6xLYr4ZjG0a2CQsjbBnIb0MvZCfnkIn+W0XD/bjS3g==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' dependencies: - '@ant-design/pro-field': 2.1.28_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-form': 2.4.5_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-skeleton': 2.0.7_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-utils': 2.4.4_64eqgvq3haz2hl2tk2jtpjblg4 - '@babel/runtime': 7.20.6 - antd: 4.24.5_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-field': 2.2.5_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-form': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-skeleton': 2.0.7_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q + '@babel/runtime': 7.20.7 + antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 use-json-comparison: 1.0.6_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' - rc-field-form - react-dom - dev: true - /@ant-design/pro-descriptions/2.0.37_oyfmaw7obiocvtyvu3c64vlxvi: - resolution: {integrity: sha512-U5AVUR8vQU0IWECmQ5wTQZB+qKte+ojNNz5J8aA/qGGQ6b0deNXA1+Mf3QUzoNWXZ1JGOnfc4UgTHZTAEl513g==} + /@ant-design/pro-descriptions/2.0.44_b6pt25ruzstflsuamv2lnyq45m: + resolution: {integrity: sha512-UEwZbvjOBTxWvPGv8qb3i+Q5czuHFYwRokSgVzVyS2el6xLYr4ZjG0a2CQsjbBnIb0MvZCfnkIn+W0XD/bjS3g==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' dependencies: - '@ant-design/pro-field': 2.1.28_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-form': 2.4.5_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-skeleton': 2.0.7_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-utils': 2.4.4_oyfmaw7obiocvtyvu3c64vlxvi - '@babel/runtime': 7.20.6 - antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-field': 2.2.5_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-form': 2.5.4_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-skeleton': 2.0.7_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-utils': 2.5.4_b6pt25ruzstflsuamv2lnyq45m + '@babel/runtime': 7.20.7 + antd: 4.24.7_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 use-json-comparison: 1.0.6_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' - rc-field-form - react-dom + dev: true - /@ant-design/pro-field/2.1.28_64eqgvq3haz2hl2tk2jtpjblg4: - resolution: {integrity: sha512-8dGoBuDvEqAoEeMFb8j5FCwYDXO2wEoHtYuoKkuDnMZ/BDUWjuNChxthZPZk9TCedxVsT7PdPDK3t7dgrif85Q==} + /@ant-design/pro-field/2.2.5_3eprgtpjc4b52y4s5m2payzg5q: + resolution: {integrity: sha512-7Rp0uRhdCUnOFKXkId5wCjjQJBWo0sMhOQs10y40/hNpGpTEpVuEmJo2Jx4Sj2hj/g663WOUSF0YBK7PhFtTFA==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-utils': 2.4.4_64eqgvq3haz2hl2tk2jtpjblg4 - '@babel/runtime': 7.20.6 + '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q + '@babel/runtime': 7.20.7 '@chenshuai2144/sketch-color': 1.0.8_react@18.2.0 - antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 dayjs: 1.11.7 lodash.tonumber: 4.0.3 omit.js: 2.0.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 - swr: 1.3.0_react@18.2.0 + swr: 2.0.0_react@18.2.0 transitivePeerDependencies: - react-dom - dev: true - /@ant-design/pro-field/2.1.28_oyfmaw7obiocvtyvu3c64vlxvi: - resolution: {integrity: sha512-8dGoBuDvEqAoEeMFb8j5FCwYDXO2wEoHtYuoKkuDnMZ/BDUWjuNChxthZPZk9TCedxVsT7PdPDK3t7dgrif85Q==} + /@ant-design/pro-field/2.2.5_b6pt25ruzstflsuamv2lnyq45m: + resolution: {integrity: sha512-7Rp0uRhdCUnOFKXkId5wCjjQJBWo0sMhOQs10y40/hNpGpTEpVuEmJo2Jx4Sj2hj/g663WOUSF0YBK7PhFtTFA==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-utils': 2.4.4_oyfmaw7obiocvtyvu3c64vlxvi - '@babel/runtime': 7.20.6 + '@ant-design/pro-provider': 2.4.0_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-utils': 2.5.4_b6pt25ruzstflsuamv2lnyq45m + '@babel/runtime': 7.20.7 '@chenshuai2144/sketch-color': 1.0.8_react@18.2.0 - antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + antd: 4.24.7_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 dayjs: 1.11.7 lodash.tonumber: 4.0.3 omit.js: 2.0.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 - swr: 1.3.0_react@18.2.0 + swr: 2.0.0_react@18.2.0 transitivePeerDependencies: - react-dom + dev: true - /@ant-design/pro-form/2.4.5_64eqgvq3haz2hl2tk2jtpjblg4: - resolution: {integrity: sha512-4ILEj7Gcj096GVyjNFuq98dEe89hNUuxG0fhSg8Gk/sxjvudk6uolC+jmwve1F7Qmg3r4AILTIwD+sz/ZJXOMQ==} + /@ant-design/pro-form/2.5.4_3eprgtpjc4b52y4s5m2payzg5q: + resolution: {integrity: sha512-Udzs2BLLHK9xhryB0GqE4FvC0KVjiD88z0NqSkJT1AfFMbBn5ERUh2TJ87vfSc8CS4UPGGeU868YzXVMR9AkbA==} peerDependencies: '@types/lodash.merge': ^4.6.7 antd: '>=4.23.0' @@ -445,25 +448,24 @@ packages: optional: true dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-field': 2.1.28_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-provider': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-utils': 2.4.4_64eqgvq3haz2hl2tk2jtpjblg4 - '@babel/runtime': 7.20.6 + '@ant-design/pro-field': 2.2.5_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q + '@babel/runtime': 7.20.7 '@umijs/use-params': 1.0.9_react@18.2.0 - antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 lodash.merge: 4.6.2 omit.js: 2.0.2 - rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 use-json-comparison: 1.0.6_react@18.2.0 use-media-antd-query: 1.1.0_react@18.2.0 - dev: true - /@ant-design/pro-form/2.4.5_oyfmaw7obiocvtyvu3c64vlxvi: - resolution: {integrity: sha512-4ILEj7Gcj096GVyjNFuq98dEe89hNUuxG0fhSg8Gk/sxjvudk6uolC+jmwve1F7Qmg3r4AILTIwD+sz/ZJXOMQ==} + /@ant-design/pro-form/2.5.4_b6pt25ruzstflsuamv2lnyq45m: + resolution: {integrity: sha512-Udzs2BLLHK9xhryB0GqE4FvC0KVjiD88z0NqSkJT1AfFMbBn5ERUh2TJ87vfSc8CS4UPGGeU868YzXVMR9AkbA==} peerDependencies: '@types/lodash.merge': ^4.6.7 antd: '>=4.23.0' @@ -475,95 +477,96 @@ packages: optional: true dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-field': 2.1.28_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-provider': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-utils': 2.4.4_oyfmaw7obiocvtyvu3c64vlxvi - '@babel/runtime': 7.20.6 + '@ant-design/pro-field': 2.2.5_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-provider': 2.4.0_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-utils': 2.5.4_b6pt25ruzstflsuamv2lnyq45m + '@babel/runtime': 7.20.7 '@umijs/use-params': 1.0.9_react@18.2.0 - antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + antd: 4.24.7_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 lodash.merge: 4.6.2 omit.js: 2.0.2 - rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 use-json-comparison: 1.0.6_react@18.2.0 use-media-antd-query: 1.1.0_react@18.2.0 + dev: true - /@ant-design/pro-layout/7.3.7_64eqgvq3haz2hl2tk2jtpjblg4: - resolution: {integrity: sha512-uNPAwbpoxKy+wj0UWh8OGRLYv4eaBI/eS+A4oGpeNdXpsZnuYeO0sfMwRhdhb9QdJTNqy8AaddpCbL8cf1e6Iw==} + /@ant-design/pro-layout/7.6.1_3eprgtpjc4b52y4s5m2payzg5q: + resolution: {integrity: sha512-MNmOALRmVbAUbsbJSmUdXyKgvxyTG1pp9YYwway5AqKz28PdfDp6HhqrvCE7zRnxIaJWv9Vb6IZ/XqstI5zDeg==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-utils': 2.4.4_64eqgvq3haz2hl2tk2jtpjblg4 - '@babel/runtime': 7.20.6 - '@umijs/route-utils': 2.2.2 + '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q + '@babel/runtime': 7.20.7 + '@umijs/route-utils': 4.0.1 '@umijs/use-params': 1.0.9_react@18.2.0 - antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 lodash.merge: 4.6.2 omit.js: 2.0.2 path-to-regexp: 2.4.0 - rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - swr: 1.3.0_react@18.2.0 + swr: 2.0.0_react@18.2.0 unstated-next: 1.1.0 use-json-comparison: 1.0.6_react@18.2.0 use-media-antd-query: 1.1.0_react@18.2.0 warning: 4.0.3 - dev: true - /@ant-design/pro-layout/7.3.7_oyfmaw7obiocvtyvu3c64vlxvi: - resolution: {integrity: sha512-uNPAwbpoxKy+wj0UWh8OGRLYv4eaBI/eS+A4oGpeNdXpsZnuYeO0sfMwRhdhb9QdJTNqy8AaddpCbL8cf1e6Iw==} + /@ant-design/pro-layout/7.6.1_b6pt25ruzstflsuamv2lnyq45m: + resolution: {integrity: sha512-MNmOALRmVbAUbsbJSmUdXyKgvxyTG1pp9YYwway5AqKz28PdfDp6HhqrvCE7zRnxIaJWv9Vb6IZ/XqstI5zDeg==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-utils': 2.4.4_oyfmaw7obiocvtyvu3c64vlxvi - '@babel/runtime': 7.20.6 - '@umijs/route-utils': 2.2.2 + '@ant-design/pro-provider': 2.4.0_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-utils': 2.5.4_b6pt25ruzstflsuamv2lnyq45m + '@babel/runtime': 7.20.7 + '@umijs/route-utils': 4.0.1 '@umijs/use-params': 1.0.9_react@18.2.0 - antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + antd: 4.24.7_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 lodash.merge: 4.6.2 omit.js: 2.0.2 path-to-regexp: 2.4.0 - rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - swr: 1.3.0_react@18.2.0 + swr: 2.0.0_react@18.2.0 unstated-next: 1.1.0 use-json-comparison: 1.0.6_react@18.2.0 use-media-antd-query: 1.1.0_react@18.2.0 warning: 4.0.3 + dev: true - /@ant-design/pro-list/2.0.38_64eqgvq3haz2hl2tk2jtpjblg4: - resolution: {integrity: sha512-/0mNG2E4nJSWuYDVXtmg/jPIJtUSYRniCkagmQPgxhhqaSO+fHOMKdeLnzDgSAmVuVWjAIQ464xqE1JBV9bl5A==} + /@ant-design/pro-list/2.0.45_3eprgtpjc4b52y4s5m2payzg5q: + resolution: {integrity: sha512-jGcTqL+ziAKZ71NERmbfFST+BoOIyVy6NQNDvTNa2V/r2ZYR+eLStEcRfTp0MyWaWillXJqBIi3jNhDUIXWVhg==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-card': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-field': 2.1.28_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-table': 3.2.5_64eqgvq3haz2hl2tk2jtpjblg4 - '@babel/runtime': 7.20.6 - antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-card': 2.1.10_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-field': 2.2.5_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-table': 3.2.12_3eprgtpjc4b52y4s5m2payzg5q + '@babel/runtime': 7.20.7 + antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 dayjs: 1.11.7 - rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y rc-util: 4.21.1 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -572,24 +575,23 @@ packages: transitivePeerDependencies: - '@types/lodash.merge' - rc-field-form - dev: true - /@ant-design/pro-list/2.0.38_oyfmaw7obiocvtyvu3c64vlxvi: - resolution: {integrity: sha512-/0mNG2E4nJSWuYDVXtmg/jPIJtUSYRniCkagmQPgxhhqaSO+fHOMKdeLnzDgSAmVuVWjAIQ464xqE1JBV9bl5A==} + /@ant-design/pro-list/2.0.45_b6pt25ruzstflsuamv2lnyq45m: + resolution: {integrity: sha512-jGcTqL+ziAKZ71NERmbfFST+BoOIyVy6NQNDvTNa2V/r2ZYR+eLStEcRfTp0MyWaWillXJqBIi3jNhDUIXWVhg==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-card': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-field': 2.1.28_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-table': 3.2.5_oyfmaw7obiocvtyvu3c64vlxvi - '@babel/runtime': 7.20.6 - antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + '@ant-design/pro-card': 2.1.10_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-field': 2.2.5_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-table': 3.2.12_b6pt25ruzstflsuamv2lnyq45m + '@babel/runtime': 7.20.7 + antd: 4.24.7_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 dayjs: 1.11.7 - rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y rc-util: 4.21.1 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -598,69 +600,70 @@ packages: transitivePeerDependencies: - '@types/lodash.merge' - rc-field-form + dev: true - /@ant-design/pro-provider/2.1.4_64eqgvq3haz2hl2tk2jtpjblg4: - resolution: {integrity: sha512-XjXiIDwxbH2G/jvjBWr5cQ2V5ZgLeP+D+Y8WLcfikTqG6wfoptsqxSkgrfYvioO6Va/wQOWLx36IXbo7rrk7bw==} + /@ant-design/pro-provider/2.4.0_3eprgtpjc4b52y4s5m2payzg5q: + resolution: {integrity: sha512-toz3F7moI6o99DCaEJRQv/jYrQXYlxiM3RpTb5L+zXYwc4hFxfv8Jj2Qm6XMX0DRZgCsDt5KK7R+9c9LzoNxbg==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@ant-design/cssinjs': 1.1.1_biqbaboplfbrettd7655fr4n2y - '@babel/runtime': 7.20.6 + '@ant-design/cssinjs': 1.4.0_biqbaboplfbrettd7655fr4n2y + '@babel/runtime': 7.20.7 '@ctrl/tinycolor': 3.5.0 - antd: 4.24.5_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - swr: 1.3.0_react@18.2.0 - dev: true + swr: 2.0.0_react@18.2.0 - /@ant-design/pro-provider/2.1.4_oyfmaw7obiocvtyvu3c64vlxvi: - resolution: {integrity: sha512-XjXiIDwxbH2G/jvjBWr5cQ2V5ZgLeP+D+Y8WLcfikTqG6wfoptsqxSkgrfYvioO6Va/wQOWLx36IXbo7rrk7bw==} + /@ant-design/pro-provider/2.4.0_b6pt25ruzstflsuamv2lnyq45m: + resolution: {integrity: sha512-toz3F7moI6o99DCaEJRQv/jYrQXYlxiM3RpTb5L+zXYwc4hFxfv8Jj2Qm6XMX0DRZgCsDt5KK7R+9c9LzoNxbg==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@ant-design/cssinjs': 1.1.1_biqbaboplfbrettd7655fr4n2y - '@babel/runtime': 7.20.6 + '@ant-design/cssinjs': 1.4.0_biqbaboplfbrettd7655fr4n2y + '@babel/runtime': 7.20.7 '@ctrl/tinycolor': 3.5.0 - antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + antd: 4.24.7_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - swr: 1.3.0_react@18.2.0 + swr: 2.0.0_react@18.2.0 + dev: true - /@ant-design/pro-skeleton/2.0.7_64eqgvq3haz2hl2tk2jtpjblg4: + /@ant-design/pro-skeleton/2.0.7_3eprgtpjc4b52y4s5m2payzg5q: resolution: {integrity: sha512-7RoCUVgWDTGrWeNuFlscsxrrXc5jshYXk6gjkQKospR0hQ1AK/aWlkttAAaqDFZlvPxSyLu8w11TmquRuYcNcg==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 - antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + '@babel/runtime': 7.20.7 + antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva react: 18.2.0 react-dom: 18.2.0_react@18.2.0 use-media-antd-query: 1.1.0_react@18.2.0 - dev: true - /@ant-design/pro-skeleton/2.0.7_oyfmaw7obiocvtyvu3c64vlxvi: + /@ant-design/pro-skeleton/2.0.7_b6pt25ruzstflsuamv2lnyq45m: resolution: {integrity: sha512-7RoCUVgWDTGrWeNuFlscsxrrXc5jshYXk6gjkQKospR0hQ1AK/aWlkttAAaqDFZlvPxSyLu8w11TmquRuYcNcg==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 - antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + '@babel/runtime': 7.20.7 + antd: 4.24.7_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 use-media-antd-query: 1.1.0_react@18.2.0 + dev: true - /@ant-design/pro-table/3.2.5_64eqgvq3haz2hl2tk2jtpjblg4: - resolution: {integrity: sha512-uko+GIi4o9JlrZtanXX3TGOCseCPM9z8wNPC3G7ZPsnlOK5q7G+0hGJJmQ6ZZUFcfbDtbHQpVtNxiKfoQDEP3Q==} + /@ant-design/pro-table/3.2.12_3eprgtpjc4b52y4s5m2payzg5q: + resolution: {integrity: sha512-jhfKBtU5DnOlj0eL/Tz3D5j9DZt6KeWCcaJOA/FDr/ZTj5ROUThhK5DqzeLjR9O/DTBCgiwB8Vpiqt0uWPWlXw==} peerDependencies: antd: '>=4.23.0' rc-field-form: ^1.22.0 @@ -668,29 +671,28 @@ packages: react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-card': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-field': 2.1.28_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-form': 2.4.5_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-provider': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 - '@ant-design/pro-utils': 2.4.4_64eqgvq3haz2hl2tk2jtpjblg4 - '@babel/runtime': 7.20.6 - antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-card': 2.1.10_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-field': 2.2.5_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-form': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q + '@babel/runtime': 7.20.7 + antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 dayjs: 1.11.7 omit.js: 2.0.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-sortable-hoc: 2.0.0_biqbaboplfbrettd7655fr4n2y unstated-next: 1.1.0 use-json-comparison: 1.0.6_react@18.2.0 - use-media-antd-query: 1.1.0_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' - dev: true - /@ant-design/pro-table/3.2.5_oyfmaw7obiocvtyvu3c64vlxvi: - resolution: {integrity: sha512-uko+GIi4o9JlrZtanXX3TGOCseCPM9z8wNPC3G7ZPsnlOK5q7G+0hGJJmQ6ZZUFcfbDtbHQpVtNxiKfoQDEP3Q==} + /@ant-design/pro-table/3.2.12_b6pt25ruzstflsuamv2lnyq45m: + resolution: {integrity: sha512-jhfKBtU5DnOlj0eL/Tz3D5j9DZt6KeWCcaJOA/FDr/ZTj5ROUThhK5DqzeLjR9O/DTBCgiwB8Vpiqt0uWPWlXw==} peerDependencies: antd: '>=4.23.0' rc-field-form: ^1.22.0 @@ -698,78 +700,92 @@ packages: react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-card': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-field': 2.1.28_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-form': 2.4.5_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-provider': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi - '@ant-design/pro-utils': 2.4.4_oyfmaw7obiocvtyvu3c64vlxvi - '@babel/runtime': 7.20.6 - antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + '@ant-design/pro-card': 2.1.10_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-field': 2.2.5_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-form': 2.5.4_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-provider': 2.4.0_b6pt25ruzstflsuamv2lnyq45m + '@ant-design/pro-utils': 2.5.4_b6pt25ruzstflsuamv2lnyq45m + '@babel/runtime': 7.20.7 + antd: 4.24.7_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 dayjs: 1.11.7 omit.js: 2.0.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-sortable-hoc: 2.0.0_biqbaboplfbrettd7655fr4n2y unstated-next: 1.1.0 use-json-comparison: 1.0.6_react@18.2.0 - use-media-antd-query: 1.1.0_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' + dev: true - /@ant-design/pro-utils/2.4.4_64eqgvq3haz2hl2tk2jtpjblg4: - resolution: {integrity: sha512-VIX95ax2rfDIU5JURAhjcffzrSEbgie0sN6rKjsLvhTc9FcwEzSD2efCc5wyNisVA8VlX3XqRZ+ugEJs3blMFQ==} + /@ant-design/pro-utils/2.5.4_3eprgtpjc4b52y4s5m2payzg5q: + resolution: {integrity: sha512-fwnGRcYQbJwIyTWvioCw443qJ2Jq/TdkR/LFoewJqQK8zeZ7I62pEgLqxK0l0sffZpN1cKAIQfydqvcT3kl+mQ==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.1.4_64eqgvq3haz2hl2tk2jtpjblg4 - '@babel/runtime': 7.20.6 - antd: 4.24.5_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q + '@babel/runtime': 7.20.7 + antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 dayjs: 1.11.7 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-sortable-hoc: 2.0.0_biqbaboplfbrettd7655fr4n2y - swr: 1.3.0_react@18.2.0 - dev: true + swr: 2.0.0_react@18.2.0 - /@ant-design/pro-utils/2.4.4_oyfmaw7obiocvtyvu3c64vlxvi: - resolution: {integrity: sha512-VIX95ax2rfDIU5JURAhjcffzrSEbgie0sN6rKjsLvhTc9FcwEzSD2efCc5wyNisVA8VlX3XqRZ+ugEJs3blMFQ==} + /@ant-design/pro-utils/2.5.4_b6pt25ruzstflsuamv2lnyq45m: + resolution: {integrity: sha512-fwnGRcYQbJwIyTWvioCw443qJ2Jq/TdkR/LFoewJqQK8zeZ7I62pEgLqxK0l0sffZpN1cKAIQfydqvcT3kl+mQ==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.1.4_oyfmaw7obiocvtyvu3c64vlxvi - '@babel/runtime': 7.20.6 - antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + '@ant-design/pro-provider': 2.4.0_b6pt25ruzstflsuamv2lnyq45m + '@babel/runtime': 7.20.7 + antd: 4.24.7_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 dayjs: 1.11.7 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-sortable-hoc: 2.0.0_biqbaboplfbrettd7655fr4n2y - swr: 1.3.0_react@18.2.0 + swr: 2.0.0_react@18.2.0 + dev: true /@ant-design/react-slick/0.29.2_react@18.2.0: resolution: {integrity: sha512-kgjtKmkGHa19FW21lHnAfyyH9AAoh35pBdcJ53rHmQ3O+cfFHGHnUbj/HFrRNJ5vIts09FKJVAD8RpaC+RaWfA==} peerDependencies: react: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 json2mq: 0.2.0 lodash: 4.17.21 react: 18.2.0 resize-observer-polyfill: 1.5.1 + dev: true + + /@ant-design/react-slick/1.0.0_react@18.2.0: + resolution: {integrity: sha512-OKxZsn8TAf8fYxP79rDXgLs9zvKMTslK6dJ4iLhDXOujUqC5zJPBRszyrcEHXcMPOm1Sgk40JgyF3yiL/Swd7w==} + peerDependencies: + react: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.7 + classnames: 2.3.2 + json2mq: 0.2.0 + react: 18.2.0 + resize-observer-polyfill: 1.5.1 + throttle-debounce: 5.0.0 - /@ant-design/use-emotion-css/1.0.4_oyfmaw7obiocvtyvu3c64vlxvi: + /@ant-design/use-emotion-css/1.0.4_3eprgtpjc4b52y4s5m2payzg5q: resolution: {integrity: sha512-PekXeeHCpSNi6ziV62gy2Yy2MijssiVMaCJbbyOmPbeZJYQmB4FecJwlB+e2WuIbSHQdM3O9pyN4Cx3GJKxJkA==} peerDependencies: antd: '>=5.0.0' @@ -777,21 +793,32 @@ packages: react-dom: '>=17.0.0' dependencies: '@emotion/css': 11.10.5 - antd: 5.0.4_jb42yyeu5qxbfieyxjks6malva + antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva react: 18.2.0 react-dom: 18.2.0_react@18.2.0 transitivePeerDependencies: - '@babel/core' dev: false - /@babel/cli/7.19.3_@babel+core@7.20.5: - resolution: {integrity: sha512-643/TybmaCAe101m2tSVHi9UKpETXP9c/Ff4mD2tAwkdP6esKIfaauZFc67vGEM6r9fekbEGid+sZhbEnSe3dg==} + /@antfu/install-pkg/0.1.1: + resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==} + dependencies: + execa: 5.1.1 + find-up: 5.0.0 + dev: true + + /@antfu/utils/0.7.2: + resolution: {integrity: sha512-vy9fM3pIxZmX07dL+VX1aZe7ynZ+YyB0jY+jE6r3hOK6GNY2t6W8rzpFC4tgpbXUYABkFQwgJq2XYXlxbXAI0g==} + dev: true + + /@babel/cli/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-WylgcELHB66WwQqItxNILsMlaTd8/SO6SgTTjMp4uCI7P4QyH1r3nqgFmO3BfM4AtfniHgFMH3EpYFj/zynBkQ==} engines: {node: '>=6.9.0'} hasBin: true peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@jridgewell/trace-mapping': 0.3.17 commander: 4.1.1 convert-source-map: 1.9.0 @@ -816,102 +843,65 @@ packages: dependencies: '@babel/highlight': 7.18.6 - /@babel/compat-data/7.20.5: - resolution: {integrity: sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==} - engines: {node: '>=6.9.0'} - - /@babel/core/7.18.9: - resolution: {integrity: sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==} + /@babel/compat-data/7.20.10: + resolution: {integrity: sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==} engines: {node: '>=6.9.0'} - dependencies: - '@ampproject/remapping': 2.2.0 - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.5 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.18.9 - '@babel/helper-module-transforms': 7.20.2 - '@babel/helpers': 7.20.6 - '@babel/parser': 7.20.5 - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 - convert-source-map: 1.9.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.1 - semver: 6.3.0 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/core/7.20.5: - resolution: {integrity: sha512-UdOWmk4pNWTm/4DlPUl/Pt4Gz4rcEMb7CY0Y3eJl5Yz1vI8ZJGmHWaVE55LoxRjdpx0z259GE9U5STA9atUinQ==} + /@babel/core/7.20.12: + resolution: {integrity: sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.5 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 - '@babel/helper-module-transforms': 7.20.2 - '@babel/helpers': 7.20.6 - '@babel/parser': 7.20.5 - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 + '@babel/generator': 7.20.7 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 + '@babel/helper-module-transforms': 7.20.11 + '@babel/helpers': 7.20.7 + '@babel/parser': 7.20.7 + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.12 + '@babel/types': 7.20.7 convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 - json5: 2.2.1 + json5: 2.2.3 semver: 6.3.0 transitivePeerDependencies: - supports-color - /@babel/eslint-parser/7.18.9_bpusarfwcbgnjqmbezm4jkv5ie: - resolution: {integrity: sha512-KzSGpMBggz4fKbRbWLNyPVTuQr6cmCcBhOyXTw/fieOVaw5oYAwcAj4a7UKcDYCPxQq+CG1NCDZH9e2JTXquiQ==} - engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} - peerDependencies: - '@babel/core': '>=7.11.0' - eslint: ^7.5.0 || ^8.0.0 - dependencies: - '@babel/core': 7.18.9 - eslint: 8.15.0 - eslint-scope: 5.1.1 - eslint-visitor-keys: 2.1.0 - semver: 6.3.0 - dev: true - - /@babel/eslint-parser/7.18.9_hg4qcldqpmcuk4hxtccjaseevy: - resolution: {integrity: sha512-KzSGpMBggz4fKbRbWLNyPVTuQr6cmCcBhOyXTw/fieOVaw5oYAwcAj4a7UKcDYCPxQq+CG1NCDZH9e2JTXquiQ==} + /@babel/eslint-parser/7.19.1_go3kp2l7mdrkdyt3xfyeu7ppfa: + resolution: {integrity: sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': '>=7.11.0' eslint: ^7.5.0 || ^8.0.0 dependencies: - '@babel/core': 7.18.9 - eslint: 8.29.0 - eslint-scope: 5.1.1 + '@babel/core': 7.20.12 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 7.32.0 eslint-visitor-keys: 2.1.0 semver: 6.3.0 dev: true - /@babel/eslint-parser/7.19.1_q7hszagzy73il6awuziitdhqxe: + /@babel/eslint-parser/7.19.1_ucmnolur3r335ullwiyt3zl3pi: resolution: {integrity: sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': '>=7.11.0' eslint: ^7.5.0 || ^8.0.0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 7.32.0 + eslint: 8.31.0 eslint-visitor-keys: 2.1.0 semver: 6.3.0 dev: true - /@babel/generator/7.20.5: - resolution: {integrity: sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==} + /@babel/generator/7.20.7: + resolution: {integrity: sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 @@ -919,7 +909,7 @@ packages: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 dev: true /@babel/helper-builder-binary-assignment-operator-visitor/7.18.9: @@ -927,70 +917,59 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/helper-explode-assignable-expression': 7.18.6 - '@babel/types': 7.20.5 - dev: true - - /@babel/helper-compilation-targets/7.20.0_@babel+core@7.18.9: - resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.18.9 - '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 - semver: 6.3.0 + '@babel/types': 7.20.7 dev: true - /@babel/helper-compilation-targets/7.20.0_@babel+core@7.20.5: - resolution: {integrity: sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==} + /@babel/helper-compilation-targets/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.20.5 + '@babel/compat-data': 7.20.10 + '@babel/core': 7.20.12 '@babel/helper-validator-option': 7.18.6 browserslist: 4.21.4 + lru-cache: 5.1.1 semver: 6.3.0 - /@babel/helper-create-class-features-plugin/7.20.5_@babel+core@7.20.5: - resolution: {integrity: sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==} + /@babel/helper-create-class-features-plugin/7.20.12_@babel+core@7.20.12: + resolution: {integrity: sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.19.0 - '@babel/helper-member-expression-to-functions': 7.18.9 + '@babel/helper-member-expression-to-functions': 7.20.7 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/helper-replace-supers': 7.19.1 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/helper-split-export-declaration': 7.18.6 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-create-regexp-features-plugin/7.20.5_@babel+core@7.20.5: + /@babel/helper-create-regexp-features-plugin/7.20.5_@babel+core@7.20.12: resolution: {integrity: sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-annotate-as-pure': 7.18.6 regexpu-core: 5.2.2 dev: true - /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.20.5: + /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.20.12: resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 + '@babel/core': 7.20.12 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 debug: 4.3.4 lodash.debounce: 4.0.8 @@ -1008,37 +987,37 @@ packages: resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 dev: true /@babel/helper-function-name/7.19.0: resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.20.5 + '@babel/template': 7.20.7 + '@babel/types': 7.20.7 /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 - /@babel/helper-member-expression-to-functions/7.18.9: - resolution: {integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==} + /@babel/helper-member-expression-to-functions/7.20.7: + resolution: {integrity: sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 dev: true /@babel/helper-module-imports/7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 - /@babel/helper-module-transforms/7.20.2: - resolution: {integrity: sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==} + /@babel/helper-module-transforms/7.20.11: + resolution: {integrity: sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-environment-visitor': 7.18.9 @@ -1046,9 +1025,9 @@ packages: '@babel/helper-simple-access': 7.20.2 '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.12 + '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color @@ -1056,37 +1035,38 @@ packages: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 dev: true /@babel/helper-plugin-utils/7.20.2: resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} engines: {node: '>=6.9.0'} - /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.20.5: + /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.20.12: resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-wrap-function': 7.20.5 - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color dev: true - /@babel/helper-replace-supers/7.19.1: - resolution: {integrity: sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==} + /@babel/helper-replace-supers/7.20.7: + resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-member-expression-to-functions': 7.18.9 + '@babel/helper-member-expression-to-functions': 7.20.7 '@babel/helper-optimise-call-expression': 7.18.6 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.12 + '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color dev: true @@ -1095,20 +1075,20 @@ packages: resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 /@babel/helper-skip-transparent-expression-wrappers/7.20.0: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 dev: true /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 /@babel/helper-string-parser/7.19.4: resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} @@ -1127,20 +1107,20 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/helper-function-name': 7.19.0 - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.12 + '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color dev: true - /@babel/helpers/7.20.6: - resolution: {integrity: sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==} + /@babel/helpers/7.20.7: + resolution: {integrity: sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.18.10 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 + '@babel/template': 7.20.7 + '@babel/traverse': 7.20.12 + '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color @@ -1152,242 +1132,242 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser/7.20.5: - resolution: {integrity: sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==} + /@babel/parser/7.20.7: + resolution: {integrity: sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.20.5: + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.18.9_@babel+core@7.20.5: - resolution: {integrity: sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==} + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.20.5 + '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.12 dev: true - /@babel/plugin-external-helpers/7.18.6_@babel+core@7.20.5: + /@babel/plugin-external-helpers/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-wNqc87qjLvsD1PIMQBzLn1bMuTlGzqLzM/1VGQ22Wm51cbCWS9k71ydp5iZS4hjwQNuTWSn/xbZkkusNENwtZg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-proposal-async-generator-functions/7.20.1_@babel+core@7.20.5: - resolution: {integrity: sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==} + /@babel/plugin-proposal-async-generator-functions/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.5 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.20.5: + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-class-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/core': 7.20.12 + '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-class-static-block/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==} + /@babel/plugin-proposal-class-static-block/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-class-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/core': 7.20.12 + '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.5 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-decorators/7.20.5_@babel+core@7.20.5: - resolution: {integrity: sha512-Lac7PpRJXcC3s9cKsBfl+uc+DYXU5FD06BrTFunQO6QIQT+DwyzDPURAowI3bcvD1dZF/ank1Z5rstUJn3Hn4Q==} + /@babel/plugin-proposal-decorators/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-JB45hbUweYpwAGjkiM7uCyXMENH2lG+9r3G2E+ttc2PRXAoEkpfd/KW5jDg4j8RS6tLtTG1jZi9LbHZVSfs1/A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-class-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/core': 7.20.12 + '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.19.1 + '@babel/helper-replace-supers': 7.20.7 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/plugin-syntax-decorators': 7.19.0_@babel+core@7.20.5 + '@babel/plugin-syntax-decorators': 7.19.0_@babel+core@7.20.12 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.20.5: + /@babel/plugin-proposal-dynamic-import/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.12 dev: true - /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.20.5: + /@babel/plugin-proposal-export-namespace-from/7.18.9_@babel+core@7.20.12: resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.12 dev: true - /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.20.5: + /@babel/plugin-proposal-json-strings/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 dev: true - /@babel/plugin-proposal-logical-assignment-operators/7.18.9_@babel+core@7.20.5: - resolution: {integrity: sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==} + /@babel/plugin-proposal-logical-assignment-operators/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 dev: true - /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.20.5: + /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 dev: true - /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.20.5: + /@babel/plugin-proposal-numeric-separator/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 dev: true - /@babel/plugin-proposal-object-rest-spread/7.20.2_@babel+core@7.20.5: - resolution: {integrity: sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==} + /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.20.5 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 + '@babel/compat-data': 7.20.10 + '@babel/core': 7.20.12 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-transform-parameters': 7.20.5_@babel+core@7.20.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.12 dev: true - /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.20.5: + /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 dev: true - /@babel/plugin-proposal-optional-chaining/7.18.9_@babel+core@7.20.5: - resolution: {integrity: sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==} + /@babel/plugin-proposal-optional-chaining/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 dev: true - /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.20.5: + /@babel/plugin-proposal-private-methods/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-class-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/core': 7.20.12 + '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-private-property-in-object/7.20.5_@babel+core@7.20.5: + /@babel/plugin-proposal-private-property-in-object/7.20.5_@babel+core@7.20.12: resolution: {integrity: sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-create-class-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.20.5: + /@babel/plugin-proposal-unicode-property-regex/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/core': 7.20.12 + '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true @@ -1399,12 +1379,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.5: + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.20.12: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true @@ -1416,12 +1396,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.20.12: resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true @@ -1433,60 +1413,60 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.5: + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.20.12: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.20.5: + /@babel/plugin-syntax-class-static-block/7.14.5_@babel+core@7.20.12: resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-decorators/7.19.0_@babel+core@7.20.5: + /@babel/plugin-syntax-decorators/7.19.0_@babel+core@7.20.12: resolution: {integrity: sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.20.12: resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-export-namespace-from/7.8.3_@babel+core@7.20.12: resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.20.5: + /@babel/plugin-syntax-import-assertions/7.20.0_@babel+core@7.20.12: resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true @@ -1498,12 +1478,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.20.5: + /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.20.12: resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true @@ -1515,12 +1495,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-json-strings/7.8.3_@babel+core@7.20.12: resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true @@ -1533,13 +1513,13 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: false - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.5: + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true @@ -1551,12 +1531,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.5: + /@babel/plugin-syntax-logical-assignment-operators/7.10.4_@babel+core@7.20.12: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true @@ -1568,12 +1548,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.20.12: resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true @@ -1585,12 +1565,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.5: + /@babel/plugin-syntax-numeric-separator/7.10.4_@babel+core@7.20.12: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true @@ -1602,12 +1582,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.20.12: resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true @@ -1619,12 +1599,12 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.20.12: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true @@ -1636,22 +1616,22 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.5: + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.20.12: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.20.5: + /@babel/plugin-syntax-private-property-in-object/7.14.5_@babel+core@7.20.12: resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true @@ -1664,647 +1644,640 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.5: + /@babel/plugin-syntax-top-level-await/7.14.5_@babel+core@7.20.12: resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.20.5: + /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.20.12: resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} + /@babel/plugin-transform-arrow-functions/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-async-to-generator/7.18.6_@babel+core@7.20.5: - resolution: {integrity: sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==} + /@babel/plugin-transform-async-to-generator/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.5 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.20.12 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-block-scoping/7.20.5_@babel+core@7.20.5: - resolution: {integrity: sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==} + /@babel/plugin-transform-block-scoping/7.20.11_@babel+core@7.20.12: + resolution: {integrity: sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-classes/7.20.2_@babel+core@7.20.5: - resolution: {integrity: sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==} + /@babel/plugin-transform-classes/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.19.0 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.19.1 + '@babel/helper-replace-supers': 7.20.7 '@babel/helper-split-export-declaration': 7.18.6 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-computed-properties/7.18.9_@babel+core@7.20.5: - resolution: {integrity: sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==} + /@babel/plugin-transform-computed-properties/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + '@babel/template': 7.20.7 dev: true - /@babel/plugin-transform-destructuring/7.20.2_@babel+core@7.20.5: - resolution: {integrity: sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==} + /@babel/plugin-transform-destructuring/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-dotall-regex/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/core': 7.20.12 + '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.20.5: + /@babel/plugin-transform-duplicate-keys/7.18.9_@babel+core@7.20.12: resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-exponentiation-operator/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.20.5: + /@babel/plugin-transform-for-of/7.18.8_@babel+core@7.20.12: resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.20.5: + /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.20.12: resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 + '@babel/core': 7.20.12 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 '@babel/helper-function-name': 7.19.0 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-literals/7.18.9_@babel+core@7.20.5: + /@babel/plugin-transform-literals/7.18.9_@babel+core@7.20.12: resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-modules-amd/7.19.6_@babel+core@7.20.5: - resolution: {integrity: sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==} + /@babel/plugin-transform-modules-amd/7.20.11_@babel+core@7.20.12: + resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-module-transforms': 7.20.2 + '@babel/core': 7.20.12 + '@babel/helper-module-transforms': 7.20.11 '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs/7.18.6: - resolution: {integrity: sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==} + /@babel/plugin-transform-modules-commonjs/7.20.11: + resolution: {integrity: sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/helper-module-transforms': 7.20.2 + '@babel/helper-module-transforms': 7.20.11 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-simple-access': 7.20.2 - babel-plugin-dynamic-import-node: 2.3.3 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-commonjs/7.19.6_@babel+core@7.20.5: - resolution: {integrity: sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==} + /@babel/plugin-transform-modules-commonjs/7.20.11_@babel+core@7.20.12: + resolution: {integrity: sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-module-transforms': 7.20.2 + '@babel/core': 7.20.12 + '@babel/helper-module-transforms': 7.20.11 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-simple-access': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-systemjs/7.19.6_@babel+core@7.20.5: - resolution: {integrity: sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==} + /@babel/plugin-transform-modules-systemjs/7.20.11_@babel+core@7.20.12: + resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-module-transforms': 7.20.2 + '@babel/helper-module-transforms': 7.20.11 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-identifier': 7.19.1 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-modules-umd/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-module-transforms': 7.20.2 + '@babel/core': 7.20.12 + '@babel/helper-module-transforms': 7.20.11 '@babel/helper-plugin-utils': 7.20.2 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-named-capturing-groups-regex/7.20.5_@babel+core@7.20.5: + /@babel/plugin-transform-named-capturing-groups-regex/7.20.5_@babel+core@7.20.12: resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/core': 7.20.12 + '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-new-target/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-replace-supers': 7.19.1 + '@babel/helper-replace-supers': 7.20.7 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-parameters/7.20.5_@babel+core@7.20.5: - resolution: {integrity: sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==} + /@babel/plugin-transform-parameters/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.20.5 + '@babel/core': 7.20.12 + '@babel/plugin-transform-react-jsx': 7.20.7_@babel+core@7.20.12 dev: true - /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.20.5: + /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.20.12: resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-react-jsx/7.19.0_@babel+core@7.20.5: - resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} + /@babel/plugin-transform-react-jsx/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-Tfq7qqD+tRj3EoDhY00nn2uP2hsRxgYGi5mLQ5TimKav0a9Lrpd4deE+fcLXU8zFYRjlKPHZhpCvfEA6qnBxqQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-module-imports': 7.18.6 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.5 - '@babel/types': 7.20.5 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 + '@babel/types': 7.20.7 dev: true - /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-annotate-as-pure': 7.18.6 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-regenerator/7.20.5_@babel+core@7.20.5: + /@babel/plugin-transform-regenerator/7.20.5_@babel+core@7.20.12: resolution: {integrity: sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 regenerator-transform: 0.15.1 dev: true - /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-reserved-words/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-spread/7.19.0_@babel+core@7.20.5: - resolution: {integrity: sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==} + /@babel/plugin-transform-spread/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 dev: true - /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.20.5: + /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.20.12: resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.20.5: + /@babel/plugin-transform-typeof-symbol/7.18.9_@babel+core@7.20.12: resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-typescript/7.20.2_@babel+core@7.20.5: - resolution: {integrity: sha512-jvS+ngBfrnTUBfOQq8NfGnSbF9BrqlR6hjJ2yVxMkmO5nL/cdifNbI30EfjRlN4g5wYWNnMPyj5Sa6R1pbLeag==} + /@babel/plugin-transform-typescript/7.20.7_@babel+core@7.20.12: + resolution: {integrity: sha512-m3wVKEvf6SoszD8pu4NZz3PvfKRCMgk6D6d0Qi9hNnlM5M6CFS92EgF4EiHVLKbU0r/r7ty1hg7NPZwE7WRbYw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-class-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/core': 7.20.12 + '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.5 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.20.5: + /@babel/plugin-transform-unicode-escapes/7.18.10_@babel+core@7.20.12: resolution: {integrity: sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.20.5: + /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.5 + '@babel/core': 7.20.12 + '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/preset-env/7.20.2_@babel+core@7.20.5: + /@babel/preset-env/7.20.2_@babel+core@7.20.12: resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.20.5 - '@babel/helper-compilation-targets': 7.20.0_@babel+core@7.20.5 + '@babel/compat-data': 7.20.10 + '@babel/core': 7.20.12 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-proposal-async-generator-functions': 7.20.1_@babel+core@7.20.5 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-class-static-block': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-logical-assignment-operators': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-object-rest-spread': 7.20.2_@babel+core@7.20.5 - '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-optional-chaining': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-private-property-in-object': 7.20.5_@babel+core@7.20.5 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.5 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.5 - '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.20.5 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.5 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.5 - '@babel/plugin-transform-arrow-functions': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-async-to-generator': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-block-scoping': 7.20.5_@babel+core@7.20.5 - '@babel/plugin-transform-classes': 7.20.2_@babel+core@7.20.5 - '@babel/plugin-transform-computed-properties': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-transform-destructuring': 7.20.2_@babel+core@7.20.5 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.20.5 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-modules-amd': 7.19.6_@babel+core@7.20.5 - '@babel/plugin-transform-modules-commonjs': 7.19.6_@babel+core@7.20.5 - '@babel/plugin-transform-modules-systemjs': 7.19.6_@babel+core@7.20.5 - '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5_@babel+core@7.20.5 - '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-parameters': 7.20.5_@babel+core@7.20.5 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-regenerator': 7.20.5_@babel+core@7.20.5 - '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-spread': 7.19.0_@babel+core@7.20.5 - '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.20.5 - '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.20.5 - '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.20.5 - '@babel/preset-modules': 0.1.5_@babel+core@7.20.5 - '@babel/types': 7.20.5 - babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.20.5 - babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.20.5 - babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.20.5 - core-js-compat: 3.26.1 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-class-static-block': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-proposal-dynamic-import': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-export-namespace-from': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-proposal-json-strings': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-logical-assignment-operators': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-numeric-separator': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-proposal-private-methods': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-private-property-in-object': 7.20.5_@babel+core@7.20.12 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.12 + '@babel/plugin-syntax-class-static-block': 7.14.5_@babel+core@7.20.12 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-export-namespace-from': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-import-assertions': 7.20.0_@babel+core@7.20.12 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-private-property-in-object': 7.14.5_@babel+core@7.20.12 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.12 + '@babel/plugin-transform-arrow-functions': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-async-to-generator': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-block-scoping': 7.20.11_@babel+core@7.20.12 + '@babel/plugin-transform-classes': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-computed-properties': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-destructuring': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-duplicate-keys': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.20.12 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-modules-amd': 7.20.11_@babel+core@7.20.12 + '@babel/plugin-transform-modules-commonjs': 7.20.11_@babel+core@7.20.12 + '@babel/plugin-transform-modules-systemjs': 7.20.11_@babel+core@7.20.12 + '@babel/plugin-transform-modules-umd': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5_@babel+core@7.20.12 + '@babel/plugin-transform-new-target': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-regenerator': 7.20.5_@babel+core@7.20.12 + '@babel/plugin-transform-reserved-words': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-spread': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-transform-typeof-symbol': 7.18.9_@babel+core@7.20.12 + '@babel/plugin-transform-unicode-escapes': 7.18.10_@babel+core@7.20.12 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.20.12 + '@babel/preset-modules': 0.1.5_@babel+core@7.20.12 + '@babel/types': 7.20.7 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.20.12 + babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.20.12 + babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.20.12 + core-js-compat: 3.27.1 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /@babel/preset-modules/0.1.5_@babel+core@7.20.5: + /@babel/preset-modules/0.1.5_@babel+core@7.20.12: resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.5 - '@babel/types': 7.20.5 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-dotall-regex': 7.18.6_@babel+core@7.20.12 + '@babel/types': 7.20.7 esutils: 2.0.3 dev: true - /@babel/preset-react/7.18.6_@babel+core@7.20.5: + /@babel/preset-react/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.20.5 - '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.20.5 + '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-react-jsx': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.20.12 dev: true - /@babel/preset-typescript/7.18.6_@babel+core@7.20.5: + /@babel/preset-typescript/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-typescript': 7.20.2_@babel+core@7.20.5 + '@babel/plugin-transform-typescript': 7.20.7_@babel+core@7.20.12 transitivePeerDependencies: - supports-color dev: true - /@babel/runtime/7.18.9: - resolution: {integrity: sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.11 - dev: true - - /@babel/runtime/7.20.6: - resolution: {integrity: sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==} + /@babel/runtime/7.20.7: + resolution: {integrity: sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - /@babel/template/7.18.10: - resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} + /@babel/template/7.20.7: + resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 + '@babel/parser': 7.20.7 + '@babel/types': 7.20.7 - /@babel/traverse/7.20.5: - resolution: {integrity: sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==} + /@babel/traverse/7.20.12: + resolution: {integrity: sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.5 + '@babel/generator': 7.20.7 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.19.0 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 + '@babel/parser': 7.20.7 + '@babel/types': 7.20.7 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/types/7.20.5: - resolution: {integrity: sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==} + /@babel/types/7.20.7: + resolution: {integrity: sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.19.4 @@ -2326,7 +2299,7 @@ packages: dependencies: react: 18.2.0 reactcss: 1.2.3_react@18.2.0 - tinycolor2: 1.4.2 + tinycolor2: 1.5.2 /@cspotcode/source-map-support/0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} @@ -2345,14 +2318,14 @@ packages: postcss-value-parser: 4.2.0 dev: true - /@csstools/postcss-color-function/1.1.1_postcss@8.4.19: + /@csstools/postcss-color-function/1.1.1_postcss@8.4.21: resolution: {integrity: sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.19 - postcss: 8.4.19 + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -2365,13 +2338,13 @@ packages: postcss-value-parser: 4.2.0 dev: true - /@csstools/postcss-font-format-keywords/1.0.1_postcss@8.4.19: + /@csstools/postcss-font-format-keywords/1.0.1_postcss@8.4.21: resolution: {integrity: sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -2384,13 +2357,13 @@ packages: postcss-value-parser: 4.2.0 dev: true - /@csstools/postcss-hwb-function/1.0.2_postcss@8.4.19: + /@csstools/postcss-hwb-function/1.0.2_postcss@8.4.21: resolution: {integrity: sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -2404,14 +2377,14 @@ packages: postcss-value-parser: 4.2.0 dev: true - /@csstools/postcss-ic-unit/1.0.1_postcss@8.4.19: + /@csstools/postcss-ic-unit/1.0.1_postcss@8.4.21: resolution: {integrity: sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.19 - postcss: 8.4.19 + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -2425,14 +2398,14 @@ packages: postcss-selector-parser: 6.0.11 dev: true - /@csstools/postcss-is-pseudo-class/2.0.7_postcss@8.4.19: + /@csstools/postcss-is-pseudo-class/2.0.7_postcss@8.4.21: resolution: {integrity: sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - '@csstools/selector-specificity': 2.0.2_tbwh2mpcdwdeb2slx6bobindua - postcss: 8.4.19 + '@csstools/selector-specificity': 2.0.2_wajs5nedgkikc5pcuwett7legi + postcss: 8.4.21 postcss-selector-parser: 6.0.11 dev: true @@ -2445,13 +2418,13 @@ packages: postcss-value-parser: 4.2.0 dev: true - /@csstools/postcss-normalize-display-values/1.0.1_postcss@8.4.19: + /@csstools/postcss-normalize-display-values/1.0.1_postcss@8.4.21: resolution: {integrity: sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -2465,14 +2438,14 @@ packages: postcss-value-parser: 4.2.0 dev: true - /@csstools/postcss-oklab-function/1.1.1_postcss@8.4.19: + /@csstools/postcss-oklab-function/1.1.1_postcss@8.4.21: resolution: {integrity: sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.19 - postcss: 8.4.19 + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -2485,13 +2458,13 @@ packages: postcss-value-parser: 4.2.0 dev: true - /@csstools/postcss-progressive-custom-properties/1.3.0_postcss@8.4.19: + /@csstools/postcss-progressive-custom-properties/1.3.0_postcss@8.4.21: resolution: {integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.3 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -2504,13 +2477,13 @@ packages: postcss-value-parser: 4.2.0 dev: true - /@csstools/postcss-stepped-value-functions/1.0.1_postcss@8.4.19: + /@csstools/postcss-stepped-value-functions/1.0.1_postcss@8.4.21: resolution: {integrity: sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -2521,13 +2494,13 @@ packages: postcss: ^8.2 dev: true - /@csstools/postcss-unset-value/1.0.2_postcss@8.4.19: + /@csstools/postcss-unset-value/1.0.2_postcss@8.4.21: resolution: {integrity: sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 dev: true /@csstools/selector-specificity/2.0.2_laljekdltgzr3kfi7r4exvsr5a: @@ -2540,14 +2513,14 @@ packages: postcss-selector-parser: 6.0.11 dev: true - /@csstools/selector-specificity/2.0.2_tbwh2mpcdwdeb2slx6bobindua: + /@csstools/selector-specificity/2.0.2_wajs5nedgkikc5pcuwett7legi: resolution: {integrity: sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 postcss-selector-parser: ^6.0.10 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-selector-parser: 6.0.11 dev: true @@ -2562,7 +2535,7 @@ packages: dependencies: '@babel/helper-module-imports': 7.18.6 '@babel/plugin-syntax-jsx': 7.18.6 - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 '@emotion/hash': 0.9.0 '@emotion/memoize': 0.8.0 '@emotion/serialize': 1.1.1 @@ -2629,7 +2602,6 @@ packages: /@emotion/unitless/0.8.0: resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} - dev: false /@emotion/utils/1.2.0: resolution: {integrity: sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==} @@ -2643,7 +2615,7 @@ packages: resolution: {integrity: sha512-lhc/XLith28QdW0HpHZvZKkorWgmCNT7sVelMHDj3HFdTfdqkwEKvT+aXVQtNAmCC39VJhunDkWhONWB7335mg==} dependencies: '@esbuild-kit/core-utils': 3.0.0 - get-tsconfig: 4.2.0 + get-tsconfig: 4.3.0 dev: true /@esbuild-kit/core-utils/3.0.0: @@ -2657,11 +2629,11 @@ packages: resolution: {integrity: sha512-afmtLf6uqxD5IgwCzomtqCYIgz/sjHzCWZFvfS5+FzeYxOURPUo4QcHtqJxbxWOMOogKriZanN/1bJQE/ZL93A==} dependencies: '@esbuild-kit/core-utils': 3.0.0 - get-tsconfig: 4.2.0 + get-tsconfig: 4.3.0 dev: true - /@esbuild/android-arm/0.15.14: - resolution: {integrity: sha512-+Rb20XXxRGisNu2WmNKk+scpanb7nL5yhuI1KR9wQFiC43ddPj/V1fmNyzlFC9bKiG4mYzxW7egtoHVcynr+OA==} + /@esbuild/android-arm/0.15.18: + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2669,8 +2641,8 @@ packages: dev: true optional: true - /@esbuild/android-arm/0.15.18: - resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + /@esbuild/android-arm/0.16.17: + resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2678,10 +2650,82 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.15.14: - resolution: {integrity: sha512-eQi9rosGNVQFJyJWV0HCA5WZae/qWIQME7s8/j8DMvnylfBv62Pbu+zJ2eUDqNf2O4u3WB+OEXyfkpBoe194sg==} + /@esbuild/android-arm64/0.16.17: + resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} engines: {node: '>=12'} - cpu: [loong64] + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64/0.16.17: + resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64/0.16.17: + resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64/0.16.17: + resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64/0.16.17: + resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64/0.16.17: + resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm/0.16.17: + resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64/0.16.17: + resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32/0.16.17: + resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} + engines: {node: '>=12'} + cpu: [ia32] os: [linux] requiresBuild: true dev: true @@ -2696,6 +2740,114 @@ packages: dev: true optional: true + /@esbuild/linux-loong64/0.16.17: + resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el/0.16.17: + resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64/0.16.17: + resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64/0.16.17: + resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x/0.16.17: + resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64/0.16.17: + resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64/0.16.17: + resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64/0.16.17: + resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64/0.16.17: + resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64/0.16.17: + resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32/0.16.17: + resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64/0.16.17: + resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@eslint/eslintrc/0.4.3: resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -2703,7 +2855,7 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 7.3.1 - globals: 13.18.0 + globals: 13.19.0 ignore: 4.0.6 import-fresh: 3.3.0 js-yaml: 3.14.1 @@ -2713,15 +2865,15 @@ packages: - supports-color dev: true - /@eslint/eslintrc/1.3.3: - resolution: {integrity: sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==} + /@eslint/eslintrc/1.4.1: + resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 espree: 9.4.1 - globals: 13.18.0 - ignore: 5.2.1 + globals: 13.19.0 + ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -2745,6 +2897,7 @@ packages: /@floating-ui/react-dom-interactions/0.3.1_2wivdsbsvmk3pblmocpmpqwn2e: resolution: {integrity: sha512-tP2KEh7EHJr5hokSBHcPGojb+AorDNUf0NYfZGg/M+FsMvCOOsSEeEF0O1NDfETIzDnpbHnCs0DuvCFhSMSStg==} + deprecated: Package renamed to @floating-ui/react dependencies: '@floating-ui/react-dom': 0.6.3_2wivdsbsvmk3pblmocpmpqwn2e aria-hidden: 1.2.2_3d3cqnhbk5jgdxsmxlr7d24np4 @@ -2834,8 +2987,8 @@ packages: deprecated: the package is rather renamed to @formatjs/ecma-abstract with some changes in functionality (primarily selectUnit is removed and we don't plan to make any further changes to this package dev: true - /@humanwhocodes/config-array/0.11.7: - resolution: {integrity: sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==} + /@humanwhocodes/config-array/0.11.8: + resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 1.2.1 @@ -2855,17 +3008,6 @@ packages: - supports-color dev: true - /@humanwhocodes/config-array/0.9.5: - resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - /@humanwhocodes/module-importer/1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} @@ -2873,6 +3015,23 @@ packages: /@humanwhocodes/object-schema/1.2.1: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + /@iconify/types/2.0.0: + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + dev: true + + /@iconify/utils/2.0.9: + resolution: {integrity: sha512-ropNqaeamoxZvXxvaTJXrI0MrqdWdDVIs/mW7/sEQbNi0aXYUGL2iuLs1da3QR163gyG63kiyTsqw2oQYamw3Q==} + dependencies: + '@antfu/install-pkg': 0.1.1 + '@antfu/utils': 0.7.2 + '@iconify/types': 2.0.0 + debug: 4.3.4 + kolorist: 1.6.0 + local-pkg: 0.4.2 + transitivePeerDependencies: + - supports-color + dev: true + /@istanbuljs/load-nyc-config/1.1.0: resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -2894,7 +3053,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.3.1 - '@types/node': 18.11.11 + '@types/node': 18.11.18 chalk: 4.1.2 jest-message-util: 29.3.1 jest-util: 29.3.1 @@ -2915,14 +3074,14 @@ packages: '@jest/test-result': 29.3.1 '@jest/transform': 29.3.1 '@jest/types': 29.3.1 - '@types/node': 18.11.11 + '@types/node': 18.11.18 ansi-escapes: 4.3.2 chalk: 4.1.2 - ci-info: 3.7.0 + ci-info: 3.7.1 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.2.0 - jest-config: 29.3.1_k7quxe733nexnlgzi4yxvxoplq + jest-config: 29.3.1_zfha7dvnw4nti6zkbsmhmn6xo4 jest-haste-map: 29.3.1 jest-message-util: 29.3.1 jest-regex-util: 29.2.0 @@ -2949,7 +3108,7 @@ packages: dependencies: '@jest/fake-timers': 29.3.1 '@jest/types': 29.3.1 - '@types/node': 18.11.11 + '@types/node': 18.11.18 jest-mock: 29.3.1 dev: true @@ -2976,7 +3135,7 @@ packages: dependencies: '@jest/types': 29.3.1 '@sinonjs/fake-timers': 9.1.2 - '@types/node': 18.11.11 + '@types/node': 18.11.18 jest-message-util: 29.3.1 jest-mock: 29.3.1 jest-util: 29.3.1 @@ -3009,7 +3168,7 @@ packages: '@jest/transform': 29.3.1 '@jest/types': 29.3.1 '@jridgewell/trace-mapping': 0.3.17 - '@types/node': 18.11.11 + '@types/node': 18.11.18 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -3031,13 +3190,6 @@ packages: - supports-color dev: true - /@jest/schemas/28.1.3: - resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@sinclair/typebox': 0.24.51 - dev: true - /@jest/schemas/29.0.0: resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3074,35 +3226,12 @@ packages: slash: 3.0.0 dev: true - /@jest/transform/28.1.3: - resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /@jest/transform/29.3.1: + resolution: {integrity: sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.20.5 - '@jest/types': 28.1.3 - '@jridgewell/trace-mapping': 0.3.17 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 1.9.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.10 - jest-haste-map: 28.1.3 - jest-regex-util: 28.0.2 - jest-util: 28.1.3 - micromatch: 4.0.5 - pirates: 4.0.5 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@jest/transform/29.3.1: - resolution: {integrity: sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@babel/core': 7.20.5 - '@jest/types': 29.3.1 + '@babel/core': 7.20.12 + '@jest/types': 29.3.1 '@jridgewell/trace-mapping': 0.3.17 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 @@ -3126,20 +3255,8 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.11 - '@types/yargs': 16.0.4 - chalk: 4.1.2 - dev: true - - /@jest/types/28.1.3: - resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jest/schemas': 28.1.3 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.11 - '@types/yargs': 17.0.17 + '@types/node': 18.11.18 + '@types/yargs': 16.0.5 chalk: 4.1.2 dev: true @@ -3150,8 +3267,8 @@ packages: '@jest/schemas': 29.0.0 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.11 - '@types/yargs': 17.0.17 + '@types/node': 18.11.18 + '@types/yargs': 17.0.19 chalk: 4.1.2 dev: true @@ -3207,7 +3324,7 @@ packages: peerDependencies: react: '>=16.3.0' dependencies: - '@babel/runtime': 7.18.9 + '@babel/runtime': 7.20.7 hoist-non-react-statics: 3.3.2 react: 18.1.0 react-is: 16.13.1 @@ -3219,7 +3336,7 @@ packages: peerDependencies: react: '>=16.3.0' dependencies: - '@babel/runtime': 7.18.9 + '@babel/runtime': 7.20.7 hoist-non-react-statics: 3.3.2 react: 18.2.0 react-is: 16.13.1 @@ -3253,7 +3370,7 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.14.0 + fastq: 1.15.0 /@parcel/css-darwin-arm64/1.9.0: resolution: {integrity: sha512-f/guZseS2tNKtKw94LgpNTItZqdVA0mnznqPsmQaR5lSB+cM3IPrSV8cgOOpAS7Vwo9ggxuJartToxBBN+dWSw==} @@ -3371,7 +3488,7 @@ packages: dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 - core-js-pure: 3.26.1 + core-js-pure: 3.27.1 error-stack-parser: 2.1.4 find-up: 5.0.0 html-entities: 2.3.3 @@ -3383,61 +3500,65 @@ packages: /@qixian.cs/path-to-regexp/6.1.0: resolution: {integrity: sha512-2jIiLiVZB1jnY7IIRQKtoV8Gnr7XIhk4mC88ONGunZE3hYt5IHUG4BE/6+JiTBjjEWQLBeWnZB8hGpppkufiVw==} + dev: false /@radix-ui/popper/0.0.10: resolution: {integrity: sha512-YFKuPqQPKscreQid7NuB4it3PMzSwGg03vgrud6sVliHkI43QNAOHyrHyMNo015jg6QK5GVDn+7J2W5uygqSGA==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 csstype: 3.1.1 dev: true + /@rc-component/context/1.3.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-6QdaCJ7Wn5UZLJs15IEfqy4Ru3OaL5ctqpQYWd5rlfV9wwzrzdt6+kgAQZV/qdB0MUPN4nhyBfRembQCIvBf+w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.7 + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + /@rc-component/mini-decimal/1.0.1: resolution: {integrity: sha512-9N8nRk0oKj1qJzANKl+n9eNSMUGsZtjwNuDCiZ/KA+dt1fE3zq5x2XxclRcAbOIXnZcJ53ozP2Pa60gyELXagA==} engines: {node: '>=8.x'} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 - /@rc-component/portal/1.0.3_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-rG9j7OMiI9eLFLF6G0B4OcfLac9W8Z7Vjeizbjt/A6R+zzw7vhHbJ4GIkrDpUqXDvFdEEzdxfICpb8/noLwG+w==} + /@rc-component/portal/1.1.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-tbXM9SB1r5FOuZjRCljERFByFiEUcMmCWMXLog/NmgCzlAzreXyf23Vei3ZpSMxSMavzPnhCovfZjZdmxS3d1w==} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - /@rc-component/tour/1.0.2_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-yFTUjqQdlG+S7k9yVM+QwxsW6t/kaJ850EUihbTTGPCv65hJwm+c5TO0uO5qhc/Ro+YhE6nwdfu4Wt5EDJcNFw==} + /@rc-component/tour/1.1.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-Cy45VnNEDq6DLF5eKonIflObDfofbPq7AJpSf18qLN+j9+wW+sNlRv3JnCMDUsCdhSlnM4+yJ1RMokKp9GCpOQ==} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 - '@rc-component/portal': 1.0.3_biqbaboplfbrettd7655fr4n2y + '@babel/runtime': 7.20.7 + '@rc-component/portal': 1.1.0_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - /@remix-run/router/1.0.5: - resolution: {integrity: sha512-my0Mycd+jruq/1lQuO5LBB6WTlL/e8DTCYWp44DfMTDcXz8DcTlgF0ISaLsGewt+ctHN+yA8xMq3q/N7uWJPug==} + /@remix-run/router/1.2.1: + resolution: {integrity: sha512-XiY0IsyHR+DXYS5vBxpoBe/8veTeoRpMHP+vDosLZxL5bnpetzI0igkxkLZS235ldLzyfkxF+2divEwWHP3vMQ==} engines: {node: '>=14'} dev: true - /@rollup/pluginutils/4.2.1: - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} - dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 - dev: true - /@sinclair/typebox/0.24.51: resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} dev: true @@ -3460,22 +3581,22 @@ packages: postcss: '>=7.0.0' postcss-syntax: '>=0.36.2' dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 postcss: 7.0.39 postcss-syntax: 0.36.2_kei4jy7wdgbhc236h4oijypxom transitivePeerDependencies: - supports-color dev: true - /@stylelint/postcss-css-in-js/0.38.0_2kvscvrvsi2imdv3wm7he2jef4: + /@stylelint/postcss-css-in-js/0.38.0_64375vj2stjdn6gyt55zwvoboa: resolution: {integrity: sha512-XOz5CAe49kS95p5yRd+DAIWDojTjfmyAQ4bbDlXMdbZTQ5t0ThjSLvWI6JI2uiS7MFurVBkZ6zUqcimzcLTBoQ==} peerDependencies: postcss: '>=7.0.0' postcss-syntax: '>=0.36.2' dependencies: - '@babel/core': 7.18.9 - postcss: 8.4.19 - postcss-syntax: 0.36.2_postcss@8.4.19 + '@babel/core': 7.20.12 + postcss: 8.4.21 + postcss-syntax: 0.36.2_postcss@8.4.21 transitivePeerDependencies: - supports-color dev: true @@ -3495,93 +3616,93 @@ packages: - supports-color dev: true - /@svgr/babel-plugin-add-jsx-attribute/6.5.1_@babel+core@7.20.5: + /@svgr/babel-plugin-add-jsx-attribute/6.5.1_@babel+core@7.20.12: resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 dev: true - /@svgr/babel-plugin-remove-jsx-attribute/6.5.0_@babel+core@7.20.5: + /@svgr/babel-plugin-remove-jsx-attribute/6.5.0_@babel+core@7.20.12: resolution: {integrity: sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 dev: true - /@svgr/babel-plugin-remove-jsx-empty-expression/6.5.0_@babel+core@7.20.5: + /@svgr/babel-plugin-remove-jsx-empty-expression/6.5.0_@babel+core@7.20.12: resolution: {integrity: sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 dev: true - /@svgr/babel-plugin-replace-jsx-attribute-value/6.5.1_@babel+core@7.20.5: + /@svgr/babel-plugin-replace-jsx-attribute-value/6.5.1_@babel+core@7.20.12: resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 dev: true - /@svgr/babel-plugin-svg-dynamic-title/6.5.1_@babel+core@7.20.5: + /@svgr/babel-plugin-svg-dynamic-title/6.5.1_@babel+core@7.20.12: resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 dev: true - /@svgr/babel-plugin-svg-em-dimensions/6.5.1_@babel+core@7.20.5: + /@svgr/babel-plugin-svg-em-dimensions/6.5.1_@babel+core@7.20.12: resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 dev: true - /@svgr/babel-plugin-transform-react-native-svg/6.5.1_@babel+core@7.20.5: + /@svgr/babel-plugin-transform-react-native-svg/6.5.1_@babel+core@7.20.12: resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 dev: true - /@svgr/babel-plugin-transform-svg-component/6.5.1_@babel+core@7.20.5: + /@svgr/babel-plugin-transform-svg-component/6.5.1_@babel+core@7.20.12: resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} engines: {node: '>=12'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 dev: true - /@svgr/babel-preset/6.5.1_@babel+core@7.20.5: + /@svgr/babel-preset/6.5.1_@babel+core@7.20.12: resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} engines: {node: '>=10'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@svgr/babel-plugin-add-jsx-attribute': 6.5.1_@babel+core@7.20.5 - '@svgr/babel-plugin-remove-jsx-attribute': 6.5.0_@babel+core@7.20.5 - '@svgr/babel-plugin-remove-jsx-empty-expression': 6.5.0_@babel+core@7.20.5 - '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1_@babel+core@7.20.5 - '@svgr/babel-plugin-svg-dynamic-title': 6.5.1_@babel+core@7.20.5 - '@svgr/babel-plugin-svg-em-dimensions': 6.5.1_@babel+core@7.20.5 - '@svgr/babel-plugin-transform-react-native-svg': 6.5.1_@babel+core@7.20.5 - '@svgr/babel-plugin-transform-svg-component': 6.5.1_@babel+core@7.20.5 + '@babel/core': 7.20.12 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1_@babel+core@7.20.12 + '@svgr/babel-plugin-remove-jsx-attribute': 6.5.0_@babel+core@7.20.12 + '@svgr/babel-plugin-remove-jsx-empty-expression': 6.5.0_@babel+core@7.20.12 + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1_@babel+core@7.20.12 + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1_@babel+core@7.20.12 + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1_@babel+core@7.20.12 + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1_@babel+core@7.20.12 + '@svgr/babel-plugin-transform-svg-component': 6.5.1_@babel+core@7.20.12 dev: true /@svgr/core/6.2.1: @@ -3599,7 +3720,7 @@ packages: resolution: {integrity: sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==} engines: {node: '>=10'} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 entities: 4.4.0 dev: true @@ -3609,8 +3730,8 @@ packages: peerDependencies: '@svgr/core': ^6.0.0 dependencies: - '@babel/core': 7.20.5 - '@svgr/babel-preset': 6.5.1_@babel+core@7.20.5 + '@babel/core': 7.20.12 + '@svgr/babel-preset': 6.5.1_@babel+core@7.20.12 '@svgr/core': 6.2.1 '@svgr/hast-util-to-babel-ast': 6.5.1 svg-parser: 2.0.4 @@ -3630,16 +3751,60 @@ packages: svgo: 2.8.0 dev: true - /@testing-library/dom/8.19.0: - resolution: {integrity: sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A==} + /@tanstack/match-sorter-utils/8.7.6: + resolution: {integrity: sha512-2AMpRiA6QivHOUiBpQAVxjiHAA68Ei23ZUMNaRJrN6omWiSFLoYrxGcT6BXtuzp0Jw4h6HZCmGGIM/gbwebO2A==} + engines: {node: '>=12'} + dependencies: + remove-accents: 0.4.2 + dev: true + + /@tanstack/query-core/4.22.0: + resolution: {integrity: sha512-OeLyBKBQoT265f5G9biReijeP8mBxNFwY7ZUu1dKL+YzqpG5q5z7J/N1eT8aWyKuhyDTiUHuKm5l+oIVzbtrjw==} + dev: true + + /@tanstack/react-query-devtools/4.22.0_gp275tdwez2a4eujt75dnnp754: + resolution: {integrity: sha512-YeYFBnfqvb+ZlA0IiJqiHNNSzepNhI1p2o9i8NlhQli9+Zrn230M47OBaBUs8qr3DD1dC2zGB1Dis50Ktz8gAA==} + peerDependencies: + '@tanstack/react-query': 4.22.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@tanstack/match-sorter-utils': 8.7.6 + '@tanstack/react-query': 4.22.0_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + superjson: 1.12.1 + use-sync-external-store: 1.2.0_react@18.2.0 + dev: true + + /@tanstack/react-query/4.22.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-P9o+HjG42uB/xHR6dMsJaPhtZydSe4v0xdG5G/cEj1oHZAXelMlm67/rYJNQGKgBamKElKogj+HYGF+NY2yHYg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + dependencies: + '@tanstack/query-core': 4.22.0 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + use-sync-external-store: 1.2.0_react@18.2.0 + dev: true + + /@testing-library/dom/8.19.1: + resolution: {integrity: sha512-P6iIPyYQ+qH8CvGauAqanhVnjrnRe0IZFSYCeGkSRW9q3u8bdVn2NPI+lasFyVsEQn1J/IFmp5Aax41+dAP9wg==} engines: {node: '>=12'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/runtime': 7.20.6 - '@types/aria-query': 4.2.2 + '@babel/runtime': 7.20.7 + '@types/aria-query': 5.0.1 aria-query: 5.1.3 chalk: 4.1.2 - dom-accessibility-api: 0.5.14 + dom-accessibility-api: 0.5.15 lz-string: 1.4.4 pretty-format: 27.5.1 dev: true @@ -3651,9 +3816,9 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/runtime': 7.20.6 - '@testing-library/dom': 8.19.0 - '@types/react-dom': 18.0.9 + '@babel/runtime': 7.20.7 + '@testing-library/dom': 8.19.1 + '@types/react-dom': 18.0.10 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: true @@ -3684,15 +3849,15 @@ packages: resolution: {integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==} dev: true - /@types/aria-query/4.2.2: - resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==} + /@types/aria-query/5.0.1: + resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} dev: true /@types/babel__core/7.1.20: resolution: {integrity: sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==} dependencies: - '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 + '@babel/parser': 7.20.7 + '@babel/types': 7.20.7 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 '@types/babel__traverse': 7.18.3 @@ -3701,27 +3866,27 @@ packages: /@types/babel__generator/7.6.4: resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 dev: true /@types/babel__template/7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.20.5 - '@babel/types': 7.20.5 + '@babel/parser': 7.20.7 + '@babel/types': 7.20.7 dev: true /@types/babel__traverse/7.18.3: resolution: {integrity: sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==} dependencies: - '@babel/types': 7.20.5 + '@babel/types': 7.20.7 dev: true /@types/body-parser/1.19.2: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 18.11.11 + '@types/node': 18.11.18 dev: true /@types/classnames/2.3.1: @@ -3734,7 +3899,7 @@ packages: /@types/connect/3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.11.11 + '@types/node': 18.11.18 dev: true /@types/eslint/7.29.0: @@ -3748,19 +3913,19 @@ packages: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: true - /@types/express-serve-static-core/4.17.31: - resolution: {integrity: sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==} + /@types/express-serve-static-core/4.17.32: + resolution: {integrity: sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==} dependencies: - '@types/node': 18.11.11 + '@types/node': 18.11.18 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: true - /@types/express/4.17.14: - resolution: {integrity: sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==} + /@types/express/4.17.15: + resolution: {integrity: sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==} dependencies: '@types/body-parser': 1.19.2 - '@types/express-serve-static-core': 4.17.31 + '@types/express-serve-static-core': 4.17.32 '@types/qs': 6.9.7 '@types/serve-static': 1.15.0 dev: true @@ -3769,17 +3934,17 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.11.11 + '@types/node': 18.11.18 dev: true - /@types/graceful-fs/4.1.5: - resolution: {integrity: sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==} + /@types/graceful-fs/4.1.6: + resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 18.11.11 + '@types/node': 18.11.18 dev: true - /@types/hapi__joi/17.1.8: - resolution: {integrity: sha512-omVytnOAiAfzGUOQArujJr3heWxPrDHW7MF1ieqix1ngoGdhtJmSSDFVM+ZAOa7UmhlGJtltdgUAT03mfDu6kg==} + /@types/hapi__joi/17.1.9: + resolution: {integrity: sha512-oOMFT8vmCTFncsF1engrs04jatz8/Anwx3De9uxnOK4chgSEgWBvFtpSoJo8u3784JNO+ql5tzRR6phHoRnscQ==} dev: true /@types/history/4.7.11: @@ -3817,8 +3982,8 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/29.2.4: - resolution: {integrity: sha512-PipFB04k2qTRPePduVLTRiPzQfvMeLwUN3Z21hsAKaB/W9IIzgB2pizCL466ftJlcyZqnHoC9ZHpxLGl3fS86A==} + /@types/jest/29.2.5: + resolution: {integrity: sha512-H2cSxkKgVmqNHXP7TC2L/WUorrZu8ZigyRywfVzv6EyBlxj39n4C00hjXYQWsbwqgElaj/CiAeSRmk5GoaKTgw==} dependencies: expect: 29.3.1 pretty-format: 29.3.1 @@ -3831,7 +3996,7 @@ packages: /@types/jsdom/20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 18.11.11 + '@types/node': 18.11.18 '@types/tough-cookie': 4.0.2 parse5: 7.1.2 dev: true @@ -3865,8 +4030,8 @@ packages: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node/18.11.11: - resolution: {integrity: sha512-KJ021B1nlQUBLopzZmPBVuGU9un7WJd/W4ya7Ih02B4Uwky5Nja0yGYav2EfYIk0RR2Q9oVhf60S2XR1BCWJ2g==} + /@types/node/18.11.18: + resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} dev: true /@types/normalize-package-data/2.4.1: @@ -3876,8 +4041,8 @@ packages: /@types/parse-json/4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} - /@types/prettier/2.7.1: - resolution: {integrity: sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==} + /@types/prettier/2.7.2: + resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} dev: true /@types/prop-types/15.7.5: @@ -3892,8 +4057,8 @@ packages: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: true - /@types/react-dom/18.0.9: - resolution: {integrity: sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==} + /@types/react-dom/18.0.10: + resolution: {integrity: sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==} dependencies: '@types/react': 18.0.26 dev: true @@ -3904,8 +4069,8 @@ packages: '@types/react': 18.0.26 dev: true - /@types/react-redux/7.1.24: - resolution: {integrity: sha512-7FkurKcS1k0FHZEtdbbgN8Oc6b+stGSfZYjQGicofJ0j4U0qIn/jaSvnP2pLwZKiai3/17xqqxkkrxTgN8UNbQ==} + /@types/react-redux/7.1.25: + resolution: {integrity: sha512-bAGh4e+w5D8dajd6InASVIyCo4pZLJ66oLb80F9OBLO1gKESbZcRCJpTT6uLXX+HAB57zw1WTdwJdAsewuTweg==} dependencies: '@types/hoist-non-react-statics': 3.3.1 '@types/react': 18.0.26 @@ -3933,7 +4098,7 @@ packages: resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} dependencies: '@types/mime': 3.0.1 - '@types/node': 18.11.11 + '@types/node': 18.11.18 dev: true /@types/stack-utils/2.0.1: @@ -3956,47 +4121,20 @@ packages: resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} dev: true - /@types/yargs/16.0.4: - resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==} + /@types/yargs/16.0.5: + resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} dependencies: '@types/yargs-parser': 21.0.0 dev: true - /@types/yargs/17.0.17: - resolution: {integrity: sha512-72bWxFKTK6uwWJAVT+3rF6Jo6RTojiJ27FQo8Rf60AL+VZbzoVPnMFhKsUnbjR8A3BTCYQ7Mv3hnl8T0A+CX9g==} + /@types/yargs/17.0.19: + resolution: {integrity: sha512-cAx3qamwaYX9R0fzOIZAlFpo4A+1uBVCxqpKz9D26uTF4srRXaGTTsikQmaotCtNdbhzyUH7ft6p9ktz9s6UNQ==} dependencies: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin/5.36.1_mykkoz4hah6spua56zdzyuayri: - resolution: {integrity: sha512-iC40UK8q1tMepSDwiLbTbMXKDxzNy+4TfPWgIL661Ym0sD42vRcQU93IsZIrmi+x292DBr60UI/gSwfdVYexCA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/parser': 5.36.1_7xejdone6kwdndpjp5nwx3ofcu - '@typescript-eslint/scope-manager': 5.36.1 - '@typescript-eslint/type-utils': 5.36.1_7xejdone6kwdndpjp5nwx3ofcu - '@typescript-eslint/utils': 5.36.1_7xejdone6kwdndpjp5nwx3ofcu - debug: 4.3.4 - eslint: 8.15.0 - functional-red-black-tree: 1.0.1 - ignore: 5.2.1 - regexpp: 3.2.0 - semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.4 - typescript: 4.9.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/eslint-plugin/5.36.1_ujfdmtdxmqxe4a5dut33px3yhi: - resolution: {integrity: sha512-iC40UK8q1tMepSDwiLbTbMXKDxzNy+4TfPWgIL661Ym0sD42vRcQU93IsZIrmi+x292DBr60UI/gSwfdVYexCA==} + /@typescript-eslint/eslint-plugin/5.48.1_3jon24igvnqaqexgwtxk6nkpse: + resolution: {integrity: sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -4006,14 +4144,14 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.36.1_ha6vam6werchizxrnqvarmz2zu - '@typescript-eslint/scope-manager': 5.36.1 - '@typescript-eslint/type-utils': 5.36.1_ha6vam6werchizxrnqvarmz2zu - '@typescript-eslint/utils': 5.36.1_ha6vam6werchizxrnqvarmz2zu + '@typescript-eslint/parser': 5.48.1_iukboom6ndih5an6iafl45j2fe + '@typescript-eslint/scope-manager': 5.48.1 + '@typescript-eslint/type-utils': 5.48.1_iukboom6ndih5an6iafl45j2fe + '@typescript-eslint/utils': 5.48.1_iukboom6ndih5an6iafl45j2fe debug: 4.3.4 - eslint: 8.29.0 - functional-red-black-tree: 1.0.1 - ignore: 5.2.1 + eslint: 8.31.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 regexpp: 3.2.0 semver: 7.3.8 tsutils: 3.21.0_typescript@4.9.4 @@ -4022,8 +4160,8 @@ packages: - supports-color dev: true - /@typescript-eslint/eslint-plugin/5.45.1_gzownqpuqpv4wlegrjxgkhyhy4: - resolution: {integrity: sha512-cOizjPlKEh0bXdFrBLTrI/J6B/QMlhwE9auOov53tgB+qMukH6/h8YAK/qw+QJGct/PTbdh2lytGyipxCcEtAw==} + /@typescript-eslint/eslint-plugin/5.48.1_s66zx5d3yhyn34ft2zz26bcwti: + resolution: {integrity: sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: '@typescript-eslint/parser': ^5.0.0 @@ -4033,13 +4171,13 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.45.1_yfqovispp7u7jaktymfaqwl2py - '@typescript-eslint/scope-manager': 5.45.1 - '@typescript-eslint/type-utils': 5.45.1_yfqovispp7u7jaktymfaqwl2py - '@typescript-eslint/utils': 5.45.1_yfqovispp7u7jaktymfaqwl2py + '@typescript-eslint/parser': 5.48.1_yfqovispp7u7jaktymfaqwl2py + '@typescript-eslint/scope-manager': 5.48.1 + '@typescript-eslint/type-utils': 5.48.1_yfqovispp7u7jaktymfaqwl2py + '@typescript-eslint/utils': 5.48.1_yfqovispp7u7jaktymfaqwl2py debug: 4.3.4 eslint: 7.32.0 - ignore: 5.2.1 + ignore: 5.2.4 natural-compare-lite: 1.4.0 regexpp: 3.2.0 semver: 7.3.8 @@ -4067,8 +4205,8 @@ packages: - typescript dev: true - /@typescript-eslint/parser/5.36.1_7xejdone6kwdndpjp5nwx3ofcu: - resolution: {integrity: sha512-/IsgNGOkBi7CuDfUbwt1eOqUXF9WGVBW9dwEe1pi+L32XrTsZIgmDFIi2RxjzsvB/8i+MIf5JIoTEH8LOZ368A==} + /@typescript-eslint/parser/5.48.1_iukboom6ndih5an6iafl45j2fe: + resolution: {integrity: sha512-4yg+FJR/V1M9Xoq56SF9Iygqm+r5LMXvheo6DQ7/yUWynQ4YfCRnsKuRgqH4EQ5Ya76rVwlEpw4Xu+TgWQUcdA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -4077,18 +4215,18 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.36.1 - '@typescript-eslint/types': 5.36.1 - '@typescript-eslint/typescript-estree': 5.36.1_typescript@4.9.4 + '@typescript-eslint/scope-manager': 5.48.1 + '@typescript-eslint/types': 5.48.1 + '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.4 debug: 4.3.4 - eslint: 8.15.0 + eslint: 8.31.0 typescript: 4.9.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser/5.36.1_ha6vam6werchizxrnqvarmz2zu: - resolution: {integrity: sha512-/IsgNGOkBi7CuDfUbwt1eOqUXF9WGVBW9dwEe1pi+L32XrTsZIgmDFIi2RxjzsvB/8i+MIf5JIoTEH8LOZ368A==} + /@typescript-eslint/parser/5.48.1_yfqovispp7u7jaktymfaqwl2py: + resolution: {integrity: sha512-4yg+FJR/V1M9Xoq56SF9Iygqm+r5LMXvheo6DQ7/yUWynQ4YfCRnsKuRgqH4EQ5Ya76rVwlEpw4Xu+TgWQUcdA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -4097,29 +4235,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 5.36.1 - '@typescript-eslint/types': 5.36.1 - '@typescript-eslint/typescript-estree': 5.36.1_typescript@4.9.4 - debug: 4.3.4 - eslint: 8.29.0 - typescript: 4.9.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser/5.45.1_yfqovispp7u7jaktymfaqwl2py: - resolution: {integrity: sha512-JQ3Ep8bEOXu16q0ztsatp/iQfDCtvap7sp/DKo7DWltUquj5AfCOpX2zSzJ8YkAVnrQNqQ5R62PBz2UtrfmCkA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 5.45.1 - '@typescript-eslint/types': 5.45.1 - '@typescript-eslint/typescript-estree': 5.45.1_typescript@4.9.4 + '@typescript-eslint/scope-manager': 5.48.1 + '@typescript-eslint/types': 5.48.1 + '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.4 debug: 4.3.4 eslint: 7.32.0 typescript: 4.9.4 @@ -4135,24 +4253,16 @@ packages: '@typescript-eslint/visitor-keys': 4.33.0 dev: true - /@typescript-eslint/scope-manager/5.36.1: - resolution: {integrity: sha512-pGC2SH3/tXdu9IH3ItoqciD3f3RRGCh7hb9zPdN2Drsr341zgd6VbhP5OHQO/reUqihNltfPpMpTNihFMarP2w==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.36.1 - '@typescript-eslint/visitor-keys': 5.36.1 - dev: true - - /@typescript-eslint/scope-manager/5.45.1: - resolution: {integrity: sha512-D6fCileR6Iai7E35Eb4Kp+k0iW7F1wxXYrOhX/3dywsOJpJAQ20Fwgcf+P/TDtvQ7zcsWsrJaglaQWDhOMsspQ==} + /@typescript-eslint/scope-manager/5.48.1: + resolution: {integrity: sha512-S035ueRrbxRMKvSTv9vJKIWgr86BD8s3RqoRZmsSh/s8HhIs90g6UlK8ZabUSjUZQkhVxt7nmZ63VJ9dcZhtDQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.45.1 - '@typescript-eslint/visitor-keys': 5.45.1 + '@typescript-eslint/types': 5.48.1 + '@typescript-eslint/visitor-keys': 5.48.1 dev: true - /@typescript-eslint/type-utils/5.36.1_7xejdone6kwdndpjp5nwx3ofcu: - resolution: {integrity: sha512-xfZhfmoQT6m3lmlqDvDzv9TiCYdw22cdj06xY0obSznBsT///GK5IEZQdGliXpAOaRL34o8phEvXzEo/VJx13Q==} + /@typescript-eslint/type-utils/5.48.1_iukboom6ndih5an6iafl45j2fe: + resolution: {integrity: sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -4161,18 +4271,18 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.36.1_typescript@4.9.4 - '@typescript-eslint/utils': 5.36.1_7xejdone6kwdndpjp5nwx3ofcu + '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.4 + '@typescript-eslint/utils': 5.48.1_iukboom6ndih5an6iafl45j2fe debug: 4.3.4 - eslint: 8.15.0 + eslint: 8.31.0 tsutils: 3.21.0_typescript@4.9.4 typescript: 4.9.4 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/type-utils/5.36.1_ha6vam6werchizxrnqvarmz2zu: - resolution: {integrity: sha512-xfZhfmoQT6m3lmlqDvDzv9TiCYdw22cdj06xY0obSznBsT///GK5IEZQdGliXpAOaRL34o8phEvXzEo/VJx13Q==} + /@typescript-eslint/type-utils/5.48.1_yfqovispp7u7jaktymfaqwl2py: + resolution: {integrity: sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -4181,28 +4291,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.36.1_typescript@4.9.4 - '@typescript-eslint/utils': 5.36.1_ha6vam6werchizxrnqvarmz2zu - debug: 4.3.4 - eslint: 8.29.0 - tsutils: 3.21.0_typescript@4.9.4 - typescript: 4.9.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/type-utils/5.45.1_yfqovispp7u7jaktymfaqwl2py: - resolution: {integrity: sha512-aosxFa+0CoYgYEl3aptLe1svP910DJq68nwEJzyQcrtRhC4BN0tJAvZGAe+D0tzjJmFXe+h4leSsiZhwBa2vrA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: '*' - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/typescript-estree': 5.45.1_typescript@4.9.4 - '@typescript-eslint/utils': 5.45.1_yfqovispp7u7jaktymfaqwl2py + '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.4 + '@typescript-eslint/utils': 5.48.1_yfqovispp7u7jaktymfaqwl2py debug: 4.3.4 eslint: 7.32.0 tsutils: 3.21.0_typescript@4.9.4 @@ -4216,13 +4306,8 @@ packages: engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1} dev: true - /@typescript-eslint/types/5.36.1: - resolution: {integrity: sha512-jd93ShpsIk1KgBTx9E+hCSEuLCUFwi9V/urhjOWnOaksGZFbTOxAT47OH2d4NLJnLhkVD+wDbB48BuaycZPLBg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true - - /@typescript-eslint/types/5.45.1: - resolution: {integrity: sha512-HEW3U0E5dLjUT+nk7b4lLbOherS1U4ap+b9pfu2oGsW3oPu7genRaY9dDv3nMczC1rbnRY2W/D7SN05wYoGImg==} + /@typescript-eslint/types/5.48.1: + resolution: {integrity: sha512-xHyDLU6MSuEEdIlzrrAerCGS3T7AA/L8Hggd0RCYBi0w3JMvGYxlLlXHeg50JI9Tfg5MrtsfuNxbS/3zF1/ATg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -4247,8 +4332,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.36.1_typescript@4.9.4: - resolution: {integrity: sha512-ih7V52zvHdiX6WcPjsOdmADhYMDN15SylWRZrT2OMy80wzKbc79n8wFW0xpWpU0x3VpBz/oDgTm2xwDAnFTl+g==} + /@typescript-eslint/typescript-estree/5.48.1_typescript@4.9.4: + resolution: {integrity: sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: typescript: '*' @@ -4256,8 +4341,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 5.36.1 - '@typescript-eslint/visitor-keys': 5.36.1 + '@typescript-eslint/types': 5.48.1 + '@typescript-eslint/visitor-keys': 5.48.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -4268,114 +4353,37 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.45.1_typescript@4.9.4: - resolution: {integrity: sha512-76NZpmpCzWVrrb0XmYEpbwOz/FENBi+5W7ipVXAsG3OoFrQKJMiaqsBMbvGRyLtPotGqUfcY7Ur8j0dksDJDng==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 5.45.1 - '@typescript-eslint/visitor-keys': 5.45.1 - debug: 4.3.4 - globby: 11.1.0 - is-glob: 4.0.3 - semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.4 - typescript: 4.9.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/utils/5.36.1_7xejdone6kwdndpjp5nwx3ofcu: - resolution: {integrity: sha512-lNj4FtTiXm5c+u0pUehozaUWhh7UYKnwryku0nxJlYUEWetyG92uw2pr+2Iy4M/u0ONMKzfrx7AsGBTCzORmIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@types/json-schema': 7.0.11 - '@typescript-eslint/scope-manager': 5.36.1 - '@typescript-eslint/types': 5.36.1 - '@typescript-eslint/typescript-estree': 5.36.1_typescript@4.9.4 - eslint: 8.15.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.15.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/utils/5.36.1_ha6vam6werchizxrnqvarmz2zu: - resolution: {integrity: sha512-lNj4FtTiXm5c+u0pUehozaUWhh7UYKnwryku0nxJlYUEWetyG92uw2pr+2Iy4M/u0ONMKzfrx7AsGBTCzORmIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@types/json-schema': 7.0.11 - '@typescript-eslint/scope-manager': 5.36.1 - '@typescript-eslint/types': 5.36.1 - '@typescript-eslint/typescript-estree': 5.36.1_typescript@4.9.4 - eslint: 8.29.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.29.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/utils/5.45.1_7xejdone6kwdndpjp5nwx3ofcu: - resolution: {integrity: sha512-rlbC5VZz68+yjAzQBc4I7KDYVzWG2X/OrqoZrMahYq3u8FFtmQYc+9rovo/7wlJH5kugJ+jQXV5pJMnofGmPRw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - '@types/json-schema': 7.0.11 - '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.45.1 - '@typescript-eslint/types': 5.45.1 - '@typescript-eslint/typescript-estree': 5.45.1_typescript@4.9.4 - eslint: 8.15.0 - eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.15.0 - semver: 7.3.8 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/utils/5.45.1_ha6vam6werchizxrnqvarmz2zu: - resolution: {integrity: sha512-rlbC5VZz68+yjAzQBc4I7KDYVzWG2X/OrqoZrMahYq3u8FFtmQYc+9rovo/7wlJH5kugJ+jQXV5pJMnofGmPRw==} + /@typescript-eslint/utils/5.48.1_iukboom6ndih5an6iafl45j2fe: + resolution: {integrity: sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.11 '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.45.1 - '@typescript-eslint/types': 5.45.1 - '@typescript-eslint/typescript-estree': 5.45.1_typescript@4.9.4 - eslint: 8.29.0 + '@typescript-eslint/scope-manager': 5.48.1 + '@typescript-eslint/types': 5.48.1 + '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.4 + eslint: 8.31.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.29.0 + eslint-utils: 3.0.0_eslint@8.31.0 semver: 7.3.8 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils/5.45.1_yfqovispp7u7jaktymfaqwl2py: - resolution: {integrity: sha512-rlbC5VZz68+yjAzQBc4I7KDYVzWG2X/OrqoZrMahYq3u8FFtmQYc+9rovo/7wlJH5kugJ+jQXV5pJMnofGmPRw==} + /@typescript-eslint/utils/5.48.1_yfqovispp7u7jaktymfaqwl2py: + resolution: {integrity: sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: '@types/json-schema': 7.0.11 '@types/semver': 7.3.13 - '@typescript-eslint/scope-manager': 5.45.1 - '@typescript-eslint/types': 5.45.1 - '@typescript-eslint/typescript-estree': 5.45.1_typescript@4.9.4 + '@typescript-eslint/scope-manager': 5.48.1 + '@typescript-eslint/types': 5.48.1 + '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.4 eslint: 7.32.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@7.32.0 @@ -4393,63 +4401,55 @@ packages: eslint-visitor-keys: 2.1.0 dev: true - /@typescript-eslint/visitor-keys/5.36.1: - resolution: {integrity: sha512-ojB9aRyRFzVMN3b5joSYni6FAS10BBSCAfKJhjJAV08t/a95aM6tAhz+O1jF+EtgxktuSO3wJysp2R+Def/IWQ==} + /@typescript-eslint/visitor-keys/5.48.1: + resolution: {integrity: sha512-Ns0XBwmfuX7ZknznfXozgnydyR8F6ev/KEGePP4i74uL3ArsKbEhJ7raeKr1JSa997DBDwol/4a0Y+At82c9dA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@typescript-eslint/types': 5.36.1 + '@typescript-eslint/types': 5.48.1 eslint-visitor-keys: 3.3.0 dev: true - /@typescript-eslint/visitor-keys/5.45.1: - resolution: {integrity: sha512-cy9ln+6rmthYWjH9fmx+5FU/JDpjQb586++x2FZlveq7GdGuLLW9a2Jcst2TGekH82bXpfmRNSwP9tyEs6RjvQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dependencies: - '@typescript-eslint/types': 5.45.1 - eslint-visitor-keys: 3.3.0 - dev: true - - /@umijs/ast/4.0.35: - resolution: {integrity: sha512-DnTh1NwRrDmzGMgXDwa9HFrcBZgcGL4V4V4HBZkbjUq2oOYeVF/QtW4RNNMAlBYh1x/MoRhjuA4by/gB8e1Pyw==} + /@umijs/ast/4.0.44: + resolution: {integrity: sha512-ldnKagu/qFk9ujEqpPdsxic2YSpd0JB5sI0j241TjQcpvr8xDy4aHAq4GMDqX1RiVuNt6/L2F193MvCG2oMdYQ==} dependencies: - '@umijs/bundler-utils': 4.0.35 + '@umijs/bundler-utils': 4.0.44 transitivePeerDependencies: - supports-color dev: true - /@umijs/babel-preset-umi/4.0.35: - resolution: {integrity: sha512-Q94HYv2X0km9WPxhY7Im8Op8sr/onTwxbmdq/dJF7LzwaE6CWLaX8+uxCP/cwx3b06CMkP5+ymdkZ8unY5MPWg==} + /@umijs/babel-preset-umi/4.0.44: + resolution: {integrity: sha512-6uF8lSxTGr0mTMUc5y22jlxWqBGKVmx0GscPt3zSIhmXcqffwf34wjEpbeCqQ8rq7y4VWdRSZQjgK3DhKGc1dg==} dependencies: - '@babel/runtime': 7.18.9 + '@babel/runtime': 7.20.7 '@bloomberg/record-tuple-polyfill': 0.0.4 - '@umijs/bundler-utils': 4.0.35 - '@umijs/utils': 4.0.35 + '@umijs/bundler-utils': 4.0.44 + '@umijs/utils': 4.0.44 babel-plugin-styled-components: 2.0.7 - core-js: 3.22.4 + core-js: 3.27.1 transitivePeerDependencies: - styled-components - supports-color dev: true - /@umijs/bundler-esbuild/4.0.35: - resolution: {integrity: sha512-FRXN/AhRbs/T5jEnaz/Ky6QrG/Qfc0gbfh8eTurduW9ETD40l4SDb1uf7N0cEvxnvJJftzPcpFrE8o4eUH56qQ==} + /@umijs/bundler-esbuild/4.0.44: + resolution: {integrity: sha512-Kbft17+6d9kIHNbibmJIS0aDM1NcXkjQUVec3cNwDlDvvIrjTGlLsGV5fejq5bXx+TVwukK3h+AIS7XsIi7n0Q==} hasBin: true dependencies: - '@umijs/bundler-utils': 4.0.35 - '@umijs/utils': 4.0.35 + '@umijs/bundler-utils': 4.0.44 + '@umijs/utils': 4.0.44 enhanced-resolve: 5.9.3 - postcss: 8.4.19 - postcss-flexbugs-fixes: 5.0.2_postcss@8.4.19 - postcss-preset-env: 7.5.0_postcss@8.4.19 + postcss: 8.4.21 + postcss-flexbugs-fixes: 5.0.2_postcss@8.4.21 + postcss-preset-env: 7.5.0_postcss@8.4.21 transitivePeerDependencies: - supports-color dev: true - /@umijs/bundler-utils/4.0.34: - resolution: {integrity: sha512-w9UbuW+GXu0jGXIJiQPzpap72NbBn/taxFeNpaWFnlRlziEIMQZ4bQ7I3WAud/ej+eT6Zf142WIVv/PjpA8Lmg==} + /@umijs/bundler-utils/4.0.36: + resolution: {integrity: sha512-Xsazfi8RqnnhwcxWtCBX4nzzBoWuRPhDMIj2VjfLAOgUFse7HDOyuNeE/SVFeSkJZ94i7mq//v6F5MH6VgyaMw==} dependencies: - '@umijs/utils': 4.0.34 - esbuild: 0.15.14 + '@umijs/utils': 4.0.36 + esbuild: 0.15.18 regenerate: 1.4.2 regenerate-unicode-properties: 10.0.1 spdy: 4.0.2 @@ -4457,11 +4457,11 @@ packages: - supports-color dev: true - /@umijs/bundler-utils/4.0.35: - resolution: {integrity: sha512-w+2spAaKLkDzJySAAnzOktSzyZ2QYm7kI+qfcYAiqdNIRlr5OV8OhnFIL9LuEa8nSao0VQGqLoMH2O0CejGbyg==} + /@umijs/bundler-utils/4.0.44: + resolution: {integrity: sha512-L7Q/D7lSAWxuXIbBCOLrbfOm5xb4uA89xdWRzUj3n2IhBRP/h7xVF+qmLO/QgcY1ON11hzZUCnB4z4HZ6c+95Q==} dependencies: - '@umijs/utils': 4.0.35 - esbuild: 0.15.18 + '@umijs/utils': 4.0.44 + esbuild: 0.16.17 regenerate: 1.4.2 regenerate-unicode-properties: 10.0.1 spdy: 4.0.2 @@ -4469,24 +4469,31 @@ packages: - supports-color dev: true - /@umijs/bundler-vite/4.0.35: - resolution: {integrity: sha512-ZxGAttmxxAEf6qF3IrUntmdulfBjOu4H/chUsiaZicx1H3NkhpCKqKTUsKGka+3YWmoc77KNbAAqLPKix2s0qg==} + /@umijs/bundler-vite/4.0.44: + resolution: {integrity: sha512-wVAQMLg6UI7I7IcqifYwQQ2Pz6DgjrxeFHMjTQHRnvzAuJgEstyZ1MRc2Yg53q8zgCpvbHUwvDr5htIFQ39Dvg==} hasBin: true dependencies: '@svgr/core': 6.2.1 - '@umijs/bundler-utils': 4.0.35 - '@umijs/utils': 4.0.35 - '@vitejs/plugin-react': 1.2.0 + '@umijs/bundler-utils': 4.0.44 + '@umijs/utils': 4.0.44 + '@vitejs/plugin-react': 2.2.0_vite@3.2.5 + less: 4.1.3 postcss-preset-env: 7.5.0 - rollup-plugin-visualizer: 5.6.0 + rollup-plugin-visualizer: 5.9.0 + vite: 3.2.5_less@4.1.3 transitivePeerDependencies: + - '@types/node' - postcss - rollup + - sass + - stylus + - sugarss - supports-color + - terser dev: true - /@umijs/bundler-webpack/4.0.35_typescript@4.9.4: - resolution: {integrity: sha512-41VdNGN9sP4TbmKH4lIvbYNWAHSxpnIK0Y4h3HLq++/A5xHdTXE5scTXQtwiQsjUpovDu7O/S7MsNbpzVU9cXg==} + /@umijs/bundler-webpack/4.0.44_typescript@4.9.4: + resolution: {integrity: sha512-6/wwCL4uuWDLVhRR4TAHZSUC+XvJmIuCC5ybyspvkm2YItf4ze6EDoNaYDFam2J19cHBkOALxGQ+UX4DEPk1SA==} hasBin: true dependencies: '@parcel/css': 1.9.0 @@ -4494,21 +4501,21 @@ packages: '@svgr/core': 6.2.1 '@svgr/plugin-jsx': 6.5.1_@svgr+core@6.2.1 '@svgr/plugin-svgo': 6.5.1_@svgr+core@6.2.1 - '@types/hapi__joi': 17.1.8 - '@umijs/babel-preset-umi': 4.0.35 - '@umijs/bundler-utils': 4.0.35 + '@types/hapi__joi': 17.1.9 + '@umijs/babel-preset-umi': 4.0.44 + '@umijs/bundler-utils': 4.0.44 '@umijs/case-sensitive-paths-webpack-plugin': 1.0.1 - '@umijs/mfsu': 4.0.35 - '@umijs/utils': 4.0.35 + '@umijs/mfsu': 4.0.44 + '@umijs/utils': 4.0.44 cors: 2.8.5 css-loader: 6.7.1 es5-imcompatible-versions: 0.1.77 - fork-ts-checker-webpack-plugin: 7.2.4_typescript@4.9.4 - jest-worker: 27.5.1 + fork-ts-checker-webpack-plugin: 7.3.0_typescript@4.9.4 + jest-worker: 29.3.1 node-libs-browser: 2.2.1 - postcss: 8.4.19 - postcss-preset-env: 7.5.0_postcss@8.4.19 - react-error-overlay: 6.0.9 + postcss: 8.4.21 + postcss-preset-env: 7.5.0_postcss@8.4.21 + react-error-overlay: 6.0.11 react-refresh: 0.14.0 transitivePeerDependencies: - '@types/webpack' @@ -4528,11 +4535,11 @@ packages: resolution: {integrity: sha512-kDKJ8yTarxwxGJDInG33hOpaQRZ//XpNuuznQ/1Mscypw6kappzFmrBr2dOYave++K7JHouoANF354UpbEQw0Q==} dev: true - /@umijs/core/4.0.35: - resolution: {integrity: sha512-wKzn/PAg54Ks5xUTPOych19z/A+9AkUzurzfPFl0TlOV4EGga0m+rMLTAA/F6aPRABs8enIRcCkL3KmtSHhb0Q==} + /@umijs/core/4.0.44: + resolution: {integrity: sha512-Zxf6PIwEhE83c+EfkNhtNNeya1TCEZLwwjI94tHubFc9/VX7/UErV91oROx2DxyTjucRBtn5nWqHfBqD4px90A==} dependencies: - '@umijs/bundler-utils': 4.0.35 - '@umijs/utils': 4.0.35 + '@umijs/bundler-utils': 4.0.44 + '@umijs/utils': 4.0.44 transitivePeerDependencies: - supports-color dev: true @@ -4545,30 +4552,30 @@ packages: resolution: {integrity: sha512-tiqKWYFwK9dgrdC8U1IjdIqeIv6W3NhROJHb07u1D72KWpGoN2U7/gVRtyMq7psBSK4EwHyXL6sFtIGUibs2ng==} hasBin: true dependencies: - '@babel/core': 7.20.5 - '@babel/eslint-parser': 7.19.1_q7hszagzy73il6awuziitdhqxe - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-decorators': 7.20.5_@babel+core@7.20.5 - '@babel/preset-env': 7.20.2_@babel+core@7.20.5 - '@babel/preset-react': 7.18.6_@babel+core@7.20.5 - '@babel/preset-typescript': 7.18.6_@babel+core@7.20.5 - '@typescript-eslint/eslint-plugin': 5.45.1_gzownqpuqpv4wlegrjxgkhyhy4 - '@typescript-eslint/parser': 5.45.1_yfqovispp7u7jaktymfaqwl2py + '@babel/core': 7.20.12 + '@babel/eslint-parser': 7.19.1_go3kp2l7mdrkdyt3xfyeu7ppfa + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-decorators': 7.20.7_@babel+core@7.20.12 + '@babel/preset-env': 7.20.2_@babel+core@7.20.12 + '@babel/preset-react': 7.18.6_@babel+core@7.20.12 + '@babel/preset-typescript': 7.18.6_@babel+core@7.20.12 + '@typescript-eslint/eslint-plugin': 5.48.1_s66zx5d3yhyn34ft2zz26bcwti + '@typescript-eslint/parser': 5.48.1_yfqovispp7u7jaktymfaqwl2py chalk: 4.1.2 eslint: 7.32.0 - eslint-config-prettier: 8.5.0_eslint@7.32.0 + eslint-config-prettier: 8.6.0_eslint@7.32.0 eslint-formatter-pretty: 4.1.0 eslint-plugin-babel: 5.3.1_eslint@7.32.0 - eslint-plugin-jest: 24.7.0_lu625izcmv7ncn4wtsowv2m5du + eslint-plugin-jest: 24.7.0_7o4xqfjf6pwo3mvvonizibb5lq eslint-plugin-promise: 6.1.1_eslint@7.32.0 - eslint-plugin-react: 7.31.11_eslint@7.32.0 + eslint-plugin-react: 7.32.0_eslint@7.32.0 eslint-plugin-react-hooks: 4.6.0_eslint@7.32.0 eslint-plugin-unicorn: 20.1.0_eslint@7.32.0 fast-glob: 3.2.12 os-locale: 5.0.0 - prettier: 2.8.1 - prettier-plugin-packagejson: 2.3.0_prettier@2.8.1 - prettier-plugin-two-style-order: 1.0.1_prettier@2.8.1 + prettier: 2.8.2 + prettier-plugin-packagejson: 2.3.0_prettier@2.8.2 + prettier-plugin-two-style-order: 1.0.1_prettier@2.8.2 stylelint: 13.13.1 stylelint-config-css-modules: 2.3.0_stylelint@13.13.1 stylelint-config-prettier: 8.0.2_stylelint@13.13.1 @@ -4584,24 +4591,24 @@ packages: /@umijs/history/5.3.1: resolution: {integrity: sha512-/e0cEGrR2bIWQD7pRl3dl9dcyRGeC9hoW0OCvUTT/hjY0EfUrkd6G8ZanVghPMpDuY5usxq9GVcvrT8KNXLWvA==} dependencies: - '@babel/runtime': 7.18.9 + '@babel/runtime': 7.20.7 query-string: 6.14.1 dev: true - /@umijs/lint/4.0.35_jig7mdlcju4lt57i33g5qicbgy: - resolution: {integrity: sha512-tqorBkIhQzUpcW6eOeFUmAQ5nltqFjrSSvPXknoKzcJq3//wqzjuQFGru+f/PKWHW6I3iCJqhlfB1iM00F/j4g==} - dependencies: - '@babel/core': 7.18.9 - '@babel/eslint-parser': 7.18.9_hg4qcldqpmcuk4hxtccjaseevy - '@stylelint/postcss-css-in-js': 0.38.0_2kvscvrvsi2imdv3wm7he2jef4 - '@typescript-eslint/eslint-plugin': 5.36.1_ujfdmtdxmqxe4a5dut33px3yhi - '@typescript-eslint/parser': 5.36.1_ha6vam6werchizxrnqvarmz2zu - '@umijs/babel-preset-umi': 4.0.35 - eslint-plugin-jest: 26.1.5_evhtpg37z3oayq2bq7xoh7b4ra - eslint-plugin-react: 7.29.4_eslint@8.29.0 - eslint-plugin-react-hooks: 4.5.0_eslint@8.29.0 - postcss: 8.4.19 - postcss-syntax: 0.36.2_postcss@8.4.19 + /@umijs/lint/4.0.44_kudefufnb5v4dzpyosesvz63ky: + resolution: {integrity: sha512-fBuxAb3LrWjXiARIbL0Qxb8y3oe794YtdlCM7yqLMH/IAA10JSQbH4EtKmlMPIXKRDbJtSxqNWmzgdkPv+4/Hg==} + dependencies: + '@babel/core': 7.20.12 + '@babel/eslint-parser': 7.19.1_ucmnolur3r335ullwiyt3zl3pi + '@stylelint/postcss-css-in-js': 0.38.0_64375vj2stjdn6gyt55zwvoboa + '@typescript-eslint/eslint-plugin': 5.48.1_3jon24igvnqaqexgwtxk6nkpse + '@typescript-eslint/parser': 5.48.1_iukboom6ndih5an6iafl45j2fe + '@umijs/babel-preset-umi': 4.0.44 + eslint-plugin-jest: 26.1.5_gwbh725yvx2gda2van5hxf7p64 + eslint-plugin-react: 7.29.4_eslint@8.31.0 + eslint-plugin-react-hooks: 4.5.0_eslint@8.31.0 + postcss: 8.4.21 + postcss-syntax: 0.36.2_postcss@8.4.21 stylelint-config-standard: 25.0.0 transitivePeerDependencies: - eslint @@ -4617,20 +4624,20 @@ packages: - typescript dev: true - /@umijs/lint/4.0.35_p4csibq5ks3vioan4srswcqg5u: - resolution: {integrity: sha512-tqorBkIhQzUpcW6eOeFUmAQ5nltqFjrSSvPXknoKzcJq3//wqzjuQFGru+f/PKWHW6I3iCJqhlfB1iM00F/j4g==} - dependencies: - '@babel/core': 7.18.9 - '@babel/eslint-parser': 7.18.9_bpusarfwcbgnjqmbezm4jkv5ie - '@stylelint/postcss-css-in-js': 0.38.0_2kvscvrvsi2imdv3wm7he2jef4 - '@typescript-eslint/eslint-plugin': 5.36.1_mykkoz4hah6spua56zdzyuayri - '@typescript-eslint/parser': 5.36.1_7xejdone6kwdndpjp5nwx3ofcu - '@umijs/babel-preset-umi': 4.0.35 - eslint-plugin-jest: 26.1.5_c536eslrwm5p6jo75m7x37dlaa - eslint-plugin-react: 7.29.4_eslint@8.15.0 - eslint-plugin-react-hooks: 4.5.0_eslint@8.15.0 - postcss: 8.4.19 - postcss-syntax: 0.36.2_postcss@8.4.19 + /@umijs/lint/4.0.44_wgtjig7p4wmwivl42uyznyoani: + resolution: {integrity: sha512-fBuxAb3LrWjXiARIbL0Qxb8y3oe794YtdlCM7yqLMH/IAA10JSQbH4EtKmlMPIXKRDbJtSxqNWmzgdkPv+4/Hg==} + dependencies: + '@babel/core': 7.20.12 + '@babel/eslint-parser': 7.19.1_ucmnolur3r335ullwiyt3zl3pi + '@stylelint/postcss-css-in-js': 0.38.0_64375vj2stjdn6gyt55zwvoboa + '@typescript-eslint/eslint-plugin': 5.48.1_3jon24igvnqaqexgwtxk6nkpse + '@typescript-eslint/parser': 5.48.1_iukboom6ndih5an6iafl45j2fe + '@umijs/babel-preset-umi': 4.0.44 + eslint-plugin-jest: 26.1.5_gwbh725yvx2gda2van5hxf7p64 + eslint-plugin-react: 7.29.4_eslint@8.31.0 + eslint-plugin-react-hooks: 4.5.0_eslint@8.31.0 + postcss: 8.4.21 + postcss-syntax: 0.36.2_postcss@8.4.21 stylelint-config-standard: 25.0.0_stylelint@14.8.2 transitivePeerDependencies: - eslint @@ -4661,30 +4668,32 @@ packages: - supports-color dev: true - /@umijs/max/4.0.35_2caics5fpyhs6yxqssqr7m26zi: - resolution: {integrity: sha512-fc00c56J3nlP+5rLJg2aDqnqcDbfKr2o2sxwhKpuXPXZDtHIPDUrUG5HVWDKmJEoEbVLfsmNhPhaoeRyPNw/cA==} + /@umijs/max/4.0.44_qgo5fbsqag6anccdzo2ypcvrri: + resolution: {integrity: sha512-lDVu+2SHxUvOzthInprswxHIUE6Bl/vxLw+kWuj2CJHNuBwIKdwf6aigw9L827PU+/0kNGfUelEWcwyTWuIe7w==} hasBin: true dependencies: - '@umijs/lint': 4.0.35_p4csibq5ks3vioan4srswcqg5u - '@umijs/plugins': 4.0.35_ii54bkuv4u5lulfkc7hunvvogq - antd: 4.24.5_biqbaboplfbrettd7655fr4n2y - eslint: 8.15.0 + '@umijs/lint': 4.0.44_wgtjig7p4wmwivl42uyznyoani + '@umijs/plugins': 4.0.44_ol4gf5ysdgp6msy6qgsp7snw2u + antd: 4.24.7_biqbaboplfbrettd7655fr4n2y + eslint: 8.31.0 stylelint: 14.8.2 - umi: 4.0.35_ew6kx7lupa6qwvuxl2p2nnz2da + umi: 4.0.44_jmsqo4zypbbjozzwpr4bmyrgiu transitivePeerDependencies: - '@babel/core' - '@babel/helper-module-imports' - '@babel/types' - '@types/lodash.merge' + - '@types/node' - '@types/react' - '@types/react-dom' - '@types/webpack' + - '@volar/vue-language-plugin-pug' + - '@volar/vue-typescript' - aslemammad-vite-plugin-macro - babel-plugin-macros - babel-plugin-styled-components - debug - dva - - encoding - jest - postcss - postcss-html @@ -4698,9 +4707,13 @@ packages: - react-dom - react-native - rollup + - sass - sockjs-client - styled-components + - stylus + - sugarss - supports-color + - terser - type-fest - typescript - vite @@ -4711,12 +4724,12 @@ packages: - webpack-plugin-serve dev: true - /@umijs/mfsu/4.0.35: - resolution: {integrity: sha512-VaZhH94uuQHdy8z42MgOScPn0yjzLX0PUv1iPLn2xMwZEA6qA5E4rnbHx8bjfzHqjirmEqV6TJfiLQjtV6IVIw==} + /@umijs/mfsu/4.0.44: + resolution: {integrity: sha512-giTdTGh7zYNm6MdlDUivREBUtNabXqnXVtr1s+8mtYfvixnpe+vKE66tkR4Frd6r/Rj+va+DFNvgM+OSkD0M2A==} dependencies: - '@umijs/bundler-esbuild': 4.0.35 - '@umijs/bundler-utils': 4.0.35 - '@umijs/utils': 4.0.35 + '@umijs/bundler-esbuild': 4.0.44 + '@umijs/bundler-utils': 4.0.44 + '@umijs/utils': 4.0.44 enhanced-resolve: 5.9.3 is-equal: 1.6.4 transitivePeerDependencies: @@ -4733,10 +4746,10 @@ packages: memoizee: 0.4.15 mock.js: 0.2.0 mockjs: 1.1.0 - node-fetch: 2.6.7 + node-fetch: 2.6.8 nunjucks: 3.2.3 openapi3-ts: 2.0.2 - prettier: 2.8.1 + prettier: 2.8.2 reserved-words: 0.1.2 rimraf: 3.0.2 swagger2openapi: 7.0.8 @@ -4749,24 +4762,24 @@ packages: - supports-color dev: true - /@umijs/plugin-run/4.0.35: - resolution: {integrity: sha512-WPTooocHdB+gBWcLUyB97Oi8VgVvEhrE/wK0Q+tC8AbUWIT+kKgt184gtFn7U1avi2yrf2bR/QyRDy90frizZw==} + /@umijs/plugin-run/4.0.44: + resolution: {integrity: sha512-WYmbf1QvxyKNbg1sJbekSCzDjbW+SZe/1YvydmFEOb8+9FhoK447oqqZ22i/f/ssn7kr+vKzdoGBAqNHehQPkw==} dependencies: - tsx: 3.12.1 + tsx: 3.12.2 dev: true - /@umijs/plugins/4.0.34_reqejh5yylq3ssqvxkfphxdmza: - resolution: {integrity: sha512-6mkqpXUqkaSARUw/P8vveFDKmXtYZXVDzwZsB1QMTxCHWZ3JoqiiN3blIbxvjwRRUGlHRpaHyvqTC1s+y0Va2w==} + /@umijs/plugins/4.0.36_aegj6e4bshbj2ek6a2qagy3lt4: + resolution: {integrity: sha512-FqkWOsowHFjQxyI+LzXjrGh8/D2m/VkYMMMY+jlLoprFybBapdT2oQuOqZyo22rRMn2H9Ii8eIG8L7e/yv02rg==} dependencies: '@ahooksjs/use-request': 2.8.15_react@18.2.0 '@ant-design/antd-theme-variable': 1.0.0 '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-components': 2.3.44_oyfmaw7obiocvtyvu3c64vlxvi - '@umijs/bundler-utils': 4.0.34 + '@ant-design/pro-components': 2.3.52_3eprgtpjc4b52y4s5m2payzg5q + '@umijs/bundler-utils': 4.0.36 '@umijs/valtio': 1.0.2_react@18.2.0 antd-dayjs-webpack-plugin: 1.0.6_dayjs@1.11.7 axios: 0.27.2 - babel-plugin-import: 1.13.5 + babel-plugin-import: 1.13.6 dayjs: 1.11.7 dva-core: 2.0.4_redux@4.2.0 dva-immer: 1.0.0 @@ -4778,8 +4791,9 @@ packages: moment: 2.29.4 qiankun: 2.8.4 react-intl: 3.12.1_react@18.2.0 - react-redux: 8.0.5_6fpxtwwxc52cyvwzdgczt4jvpq + react-redux: 8.0.5_gm3gubmwja4o7q6fr6adx3fpz4 redux: 4.2.0 + styled-components: 6.0.0-beta.6_biqbaboplfbrettd7655fr4n2y warning: 4.0.3 transitivePeerDependencies: - '@babel/helper-module-imports' @@ -4790,6 +4804,7 @@ packages: - antd - aslemammad-vite-plugin-macro - babel-plugin-macros + - babel-plugin-styled-components - debug - dva - rc-field-form @@ -4800,18 +4815,20 @@ packages: - vite dev: true - /@umijs/plugins/4.0.35_ii54bkuv4u5lulfkc7hunvvogq: - resolution: {integrity: sha512-+Abxf9fKmjDdV+ZPpSXDiR5OnNvMflYQopkQVPs21r58maF6gNwtjcQHCEewWyG+mTgnX6f4RBxXyJBg/V3evw==} + /@umijs/plugins/4.0.44_aegj6e4bshbj2ek6a2qagy3lt4: + resolution: {integrity: sha512-jOwvMOycqcJ2DtCDy4RAUBI9iP3S4cmFILVGKKXXl1q/89/5JtCt2p0KD0JH8qQele+2Q7gusP5+mhbbojNEDA==} dependencies: '@ahooksjs/use-request': 2.8.15_react@18.2.0 '@ant-design/antd-theme-variable': 1.0.0 '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-components': 2.3.44_64eqgvq3haz2hl2tk2jtpjblg4 - '@umijs/bundler-utils': 4.0.35 + '@ant-design/pro-components': 2.3.52_3eprgtpjc4b52y4s5m2payzg5q + '@tanstack/react-query': 4.22.0_biqbaboplfbrettd7655fr4n2y + '@tanstack/react-query-devtools': 4.22.0_gp275tdwez2a4eujt75dnnp754 + '@umijs/bundler-utils': 4.0.44 '@umijs/valtio': 1.0.2_react@18.2.0 antd-dayjs-webpack-plugin: 1.0.6_dayjs@1.11.7 axios: 0.27.2 - babel-plugin-import: 1.13.5 + babel-plugin-import: 1.13.6 dayjs: 1.11.7 dva-core: 2.0.4_redux@4.2.0 dva-immer: 1.0.0 @@ -4823,9 +4840,10 @@ packages: moment: 2.29.4 qiankun: 2.8.4 react-intl: 3.12.1_react@18.2.0 - react-redux: 8.0.5_6fpxtwwxc52cyvwzdgczt4jvpq + react-redux: 8.0.5_gm3gubmwja4o7q6fr6adx3fpz4 redux: 4.2.0 - styled-components: 6.0.0-beta.6_biqbaboplfbrettd7655fr4n2y + styled-components: 6.0.0-beta.9_biqbaboplfbrettd7655fr4n2y + tslib: 2.4.1 warning: 4.0.3 transitivePeerDependencies: - '@babel/helper-module-imports' @@ -4847,18 +4865,20 @@ packages: - vite dev: true - /@umijs/plugins/4.0.35_reqejh5yylq3ssqvxkfphxdmza: - resolution: {integrity: sha512-+Abxf9fKmjDdV+ZPpSXDiR5OnNvMflYQopkQVPs21r58maF6gNwtjcQHCEewWyG+mTgnX6f4RBxXyJBg/V3evw==} + /@umijs/plugins/4.0.44_ol4gf5ysdgp6msy6qgsp7snw2u: + resolution: {integrity: sha512-jOwvMOycqcJ2DtCDy4RAUBI9iP3S4cmFILVGKKXXl1q/89/5JtCt2p0KD0JH8qQele+2Q7gusP5+mhbbojNEDA==} dependencies: '@ahooksjs/use-request': 2.8.15_react@18.2.0 '@ant-design/antd-theme-variable': 1.0.0 '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-components': 2.3.44_oyfmaw7obiocvtyvu3c64vlxvi - '@umijs/bundler-utils': 4.0.35 + '@ant-design/pro-components': 2.3.52_b6pt25ruzstflsuamv2lnyq45m + '@tanstack/react-query': 4.22.0_biqbaboplfbrettd7655fr4n2y + '@tanstack/react-query-devtools': 4.22.0_gp275tdwez2a4eujt75dnnp754 + '@umijs/bundler-utils': 4.0.44 '@umijs/valtio': 1.0.2_react@18.2.0 antd-dayjs-webpack-plugin: 1.0.6_dayjs@1.11.7 axios: 0.27.2 - babel-plugin-import: 1.13.5 + babel-plugin-import: 1.13.6 dayjs: 1.11.7 dva-core: 2.0.4_redux@4.2.0 dva-immer: 1.0.0 @@ -4870,9 +4890,10 @@ packages: moment: 2.29.4 qiankun: 2.8.4 react-intl: 3.12.1_react@18.2.0 - react-redux: 8.0.5_6fpxtwwxc52cyvwzdgczt4jvpq + react-redux: 8.0.5_gm3gubmwja4o7q6fr6adx3fpz4 redux: 4.2.0 - styled-components: 6.0.0-beta.6_biqbaboplfbrettd7655fr4n2y + styled-components: 6.0.0-beta.9_biqbaboplfbrettd7655fr4n2y + tslib: 2.4.1 warning: 4.0.3 transitivePeerDependencies: - '@babel/helper-module-imports' @@ -4894,45 +4915,52 @@ packages: - vite dev: true - /@umijs/preset-umi/4.0.35_gxci7zjypbzwkagmgqo6pdnhwa: - resolution: {integrity: sha512-+BQNP2zNlhG9HzQxVJGEhadelVuCBj6jRV6xZgjBrRHzbZZdp2SwBfiMCRnnhZqhMllcqM7Slr2ecm1RJa1hdA==} + /@umijs/preset-umi/4.0.44_gxci7zjypbzwkagmgqo6pdnhwa: + resolution: {integrity: sha512-sE8Z3Z740BjEgWOmS4wEmuq+N8Ra5qwx0OMWI1WCml3Tr+MI+PqcVPDfIOdVLAGi2XnnWWimCjSztA38hKvnlw==} dependencies: - '@umijs/ast': 4.0.35 - '@umijs/babel-preset-umi': 4.0.35 - '@umijs/bundler-utils': 4.0.35 - '@umijs/bundler-vite': 4.0.35 - '@umijs/bundler-webpack': 4.0.35_typescript@4.9.4 - '@umijs/core': 4.0.35 + '@iconify/utils': 2.0.9 + '@svgr/core': 6.2.1 + '@umijs/ast': 4.0.44 + '@umijs/babel-preset-umi': 4.0.44 + '@umijs/bundler-utils': 4.0.44 + '@umijs/bundler-vite': 4.0.44 + '@umijs/bundler-webpack': 4.0.44_typescript@4.9.4 + '@umijs/core': 4.0.44 '@umijs/did-you-know': 1.0.1 '@umijs/history': 5.3.1 - '@umijs/mfsu': 4.0.35 - '@umijs/plugin-run': 4.0.35 - '@umijs/renderer-react': 4.0.35_ef5jwxihqo6n7gxfmzogljlgcm - '@umijs/server': 4.0.35 - '@umijs/utils': 4.0.35 + '@umijs/mfsu': 4.0.44 + '@umijs/plugin-run': 4.0.44 + '@umijs/renderer-react': 4.0.44_ef5jwxihqo6n7gxfmzogljlgcm + '@umijs/server': 4.0.44 + '@umijs/utils': 4.0.44 babel-plugin-dynamic-import-node: 2.3.3 click-to-react-component: 1.0.8_2wivdsbsvmk3pblmocpmpqwn2e - core-js: 3.22.4 + core-js: 3.27.1 current-script-polyfill: 1.0.0 enhanced-resolve: 5.9.3 fast-glob: 3.2.12 html-webpack-plugin: 5.5.0 - magic-string: 0.26.2 + magic-string: 0.27.0 path-to-regexp: 1.7.0 postcss-prefix-selector: 1.16.0 react: 18.1.0 react-dom: 18.1.0_react@18.1.0 react-router: 6.3.0_react@18.1.0 react-router-dom: 6.3.0_ef5jwxihqo6n7gxfmzogljlgcm - regenerator-runtime: 0.13.9 + regenerator-runtime: 0.13.11 transitivePeerDependencies: + - '@types/node' - '@types/react' - '@types/webpack' - postcss - rollup + - sass - sockjs-client - styled-components + - stylus + - sugarss - supports-color + - terser - type-fest - typescript - vue-template-compiler @@ -4942,13 +4970,13 @@ packages: - webpack-plugin-serve dev: true - /@umijs/renderer-react/4.0.35_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-HUprkKGKvsygVcbiFogd3OB4sDxA3pGPd+HfQD7TXZWA46dE49GBRDVclAmH2/AuR9tzTydeLjR6vvL2eX+KdA==} + /@umijs/renderer-react/4.0.44_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-2U4StybP3raJJIm1+AMm+kXn53s3EHXEXGXpYqAivWGcWlTVRWonaA2mTVXBfRJh/c7FwksI7QbeYxN3APNUgg==} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@babel/runtime': 7.18.9 + '@babel/runtime': 7.20.7 '@loadable/component': 5.15.2_react@18.2.0 history: 5.3.0 react: 18.2.0 @@ -4957,13 +4985,13 @@ packages: react-router-dom: 6.3.0_biqbaboplfbrettd7655fr4n2y dev: true - /@umijs/renderer-react/4.0.35_ef5jwxihqo6n7gxfmzogljlgcm: - resolution: {integrity: sha512-HUprkKGKvsygVcbiFogd3OB4sDxA3pGPd+HfQD7TXZWA46dE49GBRDVclAmH2/AuR9tzTydeLjR6vvL2eX+KdA==} + /@umijs/renderer-react/4.0.44_ef5jwxihqo6n7gxfmzogljlgcm: + resolution: {integrity: sha512-2U4StybP3raJJIm1+AMm+kXn53s3EHXEXGXpYqAivWGcWlTVRWonaA2mTVXBfRJh/c7FwksI7QbeYxN3APNUgg==} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@babel/runtime': 7.18.9 + '@babel/runtime': 7.20.7 '@loadable/component': 5.15.2_react@18.1.0 history: 5.3.0 react: 18.1.0 @@ -4980,7 +5008,7 @@ packages: chokidar: 3.5.3 express: 4.18.2 lodash: 4.17.21 - prettier: 2.8.1 + prettier: 2.8.2 transitivePeerDependencies: - supports-color dev: true @@ -4992,11 +5020,15 @@ packages: fast-deep-equal: 3.1.3 lodash.isequal: 4.5.0 memoize-one: 5.2.1 + dev: false + + /@umijs/route-utils/4.0.1: + resolution: {integrity: sha512-+1ixf1BTOLuH+ORb4x8vYMPeIt38n9q0fJDwhv9nSxrV46mxbLF0nmELIo9CKQB2gHfuC4+hww6xejJ6VYnBHQ==} - /@umijs/server/4.0.35: - resolution: {integrity: sha512-lMtR0F+MuK//wXD1pF1Ay7fVud9ujauPx61u8a2oULCt4N3uRKpzWd6Hmx/SIPzf5MFxnN/ZHSlzMpLv+5xgMA==} + /@umijs/server/4.0.44: + resolution: {integrity: sha512-lgjnJhyE/XmT3coEQOQ8T5bPFxBqg9dit+MvVRMcLSFvAfLW9R3uExvCWrt3AhuWAdlVVVgHOJ8QIp3qrWN4LA==} dependencies: - '@umijs/bundler-utils': 4.0.35 + '@umijs/bundler-utils': 4.0.44 history: 5.3.0 react: 18.1.0 react-dom: 18.1.0_react@18.1.0 @@ -5005,19 +5037,18 @@ packages: - supports-color dev: true - /@umijs/test/4.0.35: - resolution: {integrity: sha512-ynYP+WIoc7ZzNaaeLLa/TOqSb7W8kj28ca1Lc8l+BWq2QnNdC2BFW9hRF3vCIU53GULVFBxMKwuTeSyHRk3kYA==} + /@umijs/test/4.0.44: + resolution: {integrity: sha512-LRY5JakZvqFkf1W9rnGpR8rkLrug0j+kBKcThnISSuTLymDVz9muj5TgdnwbynDDIhMkoY3z4nZJKjyvd+4V2A==} dependencies: - '@babel/plugin-transform-modules-commonjs': 7.18.6 + '@babel/plugin-transform-modules-commonjs': 7.20.11 '@jest/types': 27.5.1 - '@umijs/bundler-utils': 4.0.35 - babel-jest: 28.1.3 - esbuild: 0.15.18 + '@umijs/bundler-utils': 4.0.44 + babel-jest: 29.3.1 + esbuild: 0.16.17 identity-obj-proxy: 3.0.0 - isomorphic-unfetch: 3.1.0 + isomorphic-unfetch: 4.0.2 transitivePeerDependencies: - '@babel/core' - - encoding - supports-color dev: true @@ -5028,15 +5059,15 @@ packages: dependencies: react: 18.2.0 - /@umijs/utils/4.0.34: - resolution: {integrity: sha512-QYDsKkWET7YvecGrJ4La9CAqkEQin1KQsdmEldzbnbIsUZQy/I/XuGVMMnTYpiwW92klkkAc8K8AYwI4DQlHCQ==} + /@umijs/utils/4.0.36: + resolution: {integrity: sha512-Wrv56ZyUBWGLY5dfjaQqDXirLPLkmCBBXUdQgGvyTy2dGAGmJ0HA/KPgSzgmhBDVT54sIuDOSwNxl0SeaIdgew==} dependencies: chokidar: 3.5.3 pino: 7.11.0 dev: true - /@umijs/utils/4.0.35: - resolution: {integrity: sha512-g514zWimeyHwJtsLbrIx6WE+oR1cllchPnoQduUA8VYoTmm7+SCnCjCAj9pwgGTKo6OOb9GtRYKdGSqUsbRaBQ==} + /@umijs/utils/4.0.44: + resolution: {integrity: sha512-cnz4eDW0wvWegJdaoamEFffHB989Qv0lcwC2RFhspO5AF34813PLcYpr6htTOT2tq0fcoUaSBzETmhuQOQV1wg==} dependencies: chokidar: 3.5.3 pino: 7.11.0 @@ -5055,18 +5086,20 @@ packages: - vite dev: true - /@vitejs/plugin-react/1.2.0: - resolution: {integrity: sha512-Rywwt0IXXg6yQ0hv3cMT3mtdDcGIw31mGaa+MMMAT651LhoXLF2yFy4LrakiTs7UKs7RPBo9eNgaS8pgl2A6Qw==} - engines: {node: '>=12.0.0'} + /@vitejs/plugin-react/2.2.0_vite@3.2.5: + resolution: {integrity: sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^3.0.0 dependencies: - '@babel/core': 7.20.5 - '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.20.5 - '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.5 - '@rollup/pluginutils': 4.2.1 - react-refresh: 0.11.0 - resolve: 1.22.1 + '@babel/core': 7.20.12 + '@babel/plugin-transform-react-jsx': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 + magic-string: 0.26.7 + react-refresh: 0.14.0 + vite: 3.2.5_less@4.1.3 transitivePeerDependencies: - supports-color dev: true @@ -5130,8 +5163,8 @@ packages: dependencies: object-assign: 4.1.1 - /address/1.2.1: - resolution: {integrity: sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==} + /address/1.2.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} engines: {node: '>= 10.0.0'} dev: false @@ -5163,8 +5196,8 @@ packages: resolution: {integrity: sha512-V7uUvAwnimu6eh/PED4mCDjE7tokeZQLKlxg9lCTMPhN+NjsSbtdacByVlR1oluXQzD3MOw55wylDmQo4+S9ZQ==} dev: true - /ahooks/3.7.2_react@18.2.0: - resolution: {integrity: sha512-nJPsQJcmJnGaNXiqgZdfO7UMs+o926LQg6VyDYt2vzKhXU8Ze/U87NsA/FeIvlIZB0rQr/j7uotFb1bGPp627A==} + /ahooks/3.7.4_react@18.2.0: + resolution: {integrity: sha512-hvgdqzPUKXn95mK3cGlDCi/ZZqv+FRibCUCFT8zW3hCwLGvixVfnHrIW2/2lgzPdLo8mLjp/XOdIJvcPvE2lgQ==} engines: {node: '>=8.0.0'} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -5178,6 +5211,7 @@ packages: react: 18.2.0 resize-observer-polyfill: 1.5.1 screenfull: 5.2.0 + tslib: 2.4.1 dev: true /ajv-keywords/3.5.2_ajv@6.12.6: @@ -5195,8 +5229,8 @@ packages: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - /ajv/8.11.2: - resolution: {integrity: sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==} + /ajv/8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -5286,8 +5320,8 @@ packages: resolution: {integrity: sha512-iquIc7EsQTndk5nMv9pQQv+/OY5YnjVIPhtCFo7W7JL+Gjqzq/YJ/HO2WxUxyCgYha2NsTTNAb2vPa/M4zAi2g==} dev: true - /antd/4.24.5_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-1dgDd6OqVP0OGNenNm6bPppYsCO1wkT4SFLcpS/QiiiVZQoDCErQYvEH0ULmPWAEler1Brzal260wwpm0uPeeg==} + /antd/4.24.7_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-Qr3AYkeqpd3i/c6M7pjca7Y6XlaIv/p6gD3aqe7/0o8Ueg50G7Aeh+TOaiUfXLGDhnVoNEdaVdDiv8aIaoWB5A==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -5295,7 +5329,7 @@ packages: '@ant-design/colors': 6.0.0 '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y '@ant-design/react-slick': 0.29.2_react@18.2.0 - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 '@ctrl/tinycolor': 3.5.0 classnames: 2.3.2 copy-to-clipboard: 3.3.3 @@ -5305,94 +5339,94 @@ packages: rc-checkbox: 2.3.2_biqbaboplfbrettd7655fr4n2y rc-collapse: 3.4.2_biqbaboplfbrettd7655fr4n2y rc-dialog: 9.0.2_biqbaboplfbrettd7655fr4n2y - rc-drawer: 6.0.1_biqbaboplfbrettd7655fr4n2y + rc-drawer: 6.1.2_biqbaboplfbrettd7655fr4n2y rc-dropdown: 4.0.1_biqbaboplfbrettd7655fr4n2y rc-field-form: 1.27.3_biqbaboplfbrettd7655fr4n2y - rc-image: 5.12.1_biqbaboplfbrettd7655fr4n2y + rc-image: 5.13.0_biqbaboplfbrettd7655fr4n2y rc-input: 0.1.4_biqbaboplfbrettd7655fr4n2y rc-input-number: 7.3.11_biqbaboplfbrettd7655fr4n2y rc-mentions: 1.13.1_biqbaboplfbrettd7655fr4n2y rc-menu: 9.8.1_biqbaboplfbrettd7655fr4n2y - rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y rc-notification: 4.6.1_biqbaboplfbrettd7655fr4n2y rc-pagination: 3.2.0_biqbaboplfbrettd7655fr4n2y rc-picker: 2.7.0_biqbaboplfbrettd7655fr4n2y rc-progress: 3.4.1_biqbaboplfbrettd7655fr4n2y rc-rate: 2.9.2_biqbaboplfbrettd7655fr4n2y - rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y rc-segmented: 2.1.0_biqbaboplfbrettd7655fr4n2y rc-select: 14.1.16_biqbaboplfbrettd7655fr4n2y rc-slider: 10.0.1_biqbaboplfbrettd7655fr4n2y rc-steps: 5.0.0_biqbaboplfbrettd7655fr4n2y rc-switch: 3.2.2_biqbaboplfbrettd7655fr4n2y rc-table: 7.26.0_biqbaboplfbrettd7655fr4n2y - rc-tabs: 12.4.2_biqbaboplfbrettd7655fr4n2y + rc-tabs: 12.5.6_biqbaboplfbrettd7655fr4n2y rc-textarea: 0.4.7_biqbaboplfbrettd7655fr4n2y rc-tooltip: 5.2.2_biqbaboplfbrettd7655fr4n2y rc-tree: 5.7.2_biqbaboplfbrettd7655fr4n2y rc-tree-select: 5.5.5_biqbaboplfbrettd7655fr4n2y rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y rc-upload: 4.3.4_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 scroll-into-view-if-needed: 2.2.31 dev: true - /antd/5.0.4_jb42yyeu5qxbfieyxjks6malva: - resolution: {integrity: sha512-SbMmMTpenY8OfNABJl9/xEGhLP+2mQBbFxelT8ySFb7BR6KwsaVbz6BJOaBWmHBwNq86gXQWJtouQ9Znb6p0RA==} + /antd/5.1.4_jb42yyeu5qxbfieyxjks6malva: + resolution: {integrity: sha512-74j1+8jRYDglCSvNgx7DGvBH6gerHvtV6k6DylIVQLuViza5YPYH0MVUQwrw6a65iTfuRUY59Oo3EfqerGk8Uw==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/colors': 6.0.0 - '@ant-design/cssinjs': 1.1.1_biqbaboplfbrettd7655fr4n2y + '@ant-design/cssinjs': 1.4.0_biqbaboplfbrettd7655fr4n2y '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/react-slick': 0.29.2_react@18.2.0 - '@babel/runtime': 7.20.6 + '@ant-design/react-slick': 1.0.0_react@18.2.0 + '@babel/runtime': 7.20.7 '@ctrl/tinycolor': 3.5.0 - '@rc-component/tour': 1.0.2_biqbaboplfbrettd7655fr4n2y + '@rc-component/tour': 1.1.0_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 copy-to-clipboard: 3.3.3 dayjs: 1.11.7 - lodash: 4.17.21 - rc-cascader: 3.7.0_biqbaboplfbrettd7655fr4n2y + qrcode.react: 3.1.0_react@18.2.0 + rc-cascader: 3.8.0_biqbaboplfbrettd7655fr4n2y rc-checkbox: 2.3.2_biqbaboplfbrettd7655fr4n2y rc-collapse: 3.4.2_biqbaboplfbrettd7655fr4n2y rc-dialog: 9.0.2_biqbaboplfbrettd7655fr4n2y - rc-drawer: 6.0.1_biqbaboplfbrettd7655fr4n2y + rc-drawer: 6.1.2_biqbaboplfbrettd7655fr4n2y rc-dropdown: 4.0.1_biqbaboplfbrettd7655fr4n2y rc-field-form: 1.27.3_biqbaboplfbrettd7655fr4n2y - rc-image: 5.12.1_biqbaboplfbrettd7655fr4n2y + rc-image: 5.13.0_biqbaboplfbrettd7655fr4n2y rc-input: 0.1.4_biqbaboplfbrettd7655fr4n2y rc-input-number: 7.4.0_biqbaboplfbrettd7655fr4n2y rc-mentions: 1.13.1_biqbaboplfbrettd7655fr4n2y rc-menu: 9.8.1_biqbaboplfbrettd7655fr4n2y - rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y - rc-notification: 5.0.0-alpha.9_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y + rc-notification: 5.0.2_biqbaboplfbrettd7655fr4n2y rc-pagination: 3.2.0_biqbaboplfbrettd7655fr4n2y - rc-picker: 3.1.2_lejchghvacj3hhjkogy3eaalky + rc-picker: 3.1.4_lejchghvacj3hhjkogy3eaalky rc-progress: 3.4.1_biqbaboplfbrettd7655fr4n2y rc-rate: 2.9.2_biqbaboplfbrettd7655fr4n2y - rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y rc-segmented: 2.1.0_biqbaboplfbrettd7655fr4n2y - rc-select: 14.1.16_biqbaboplfbrettd7655fr4n2y + rc-select: 14.2.0_biqbaboplfbrettd7655fr4n2y rc-slider: 10.0.1_biqbaboplfbrettd7655fr4n2y - rc-steps: 6.0.0-alpha.2_biqbaboplfbrettd7655fr4n2y + rc-steps: 6.0.0_biqbaboplfbrettd7655fr4n2y rc-switch: 4.0.0_biqbaboplfbrettd7655fr4n2y - rc-table: 7.26.0_biqbaboplfbrettd7655fr4n2y - rc-tabs: 12.4.2_biqbaboplfbrettd7655fr4n2y + rc-table: 7.30.3_biqbaboplfbrettd7655fr4n2y + rc-tabs: 12.5.6_biqbaboplfbrettd7655fr4n2y rc-textarea: 0.4.7_biqbaboplfbrettd7655fr4n2y rc-tooltip: 5.2.2_biqbaboplfbrettd7655fr4n2y rc-tree: 5.7.2_biqbaboplfbrettd7655fr4n2y - rc-tree-select: 5.5.5_biqbaboplfbrettd7655fr4n2y + rc-tree-select: 5.6.0_biqbaboplfbrettd7655fr4n2y rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y rc-upload: 4.3.4_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - scroll-into-view-if-needed: 2.2.31 - shallowequal: 1.1.0 + scroll-into-view-if-needed: 3.0.4 + throttle-debounce: 5.0.0 transitivePeerDependencies: - date-fns - moment @@ -5435,7 +5469,7 @@ packages: /aria-query/5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} dependencies: - deep-equal: 2.1.0 + deep-equal: 2.2.0 dev: true /array-flatten/1.1.1: @@ -5448,7 +5482,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.5 + es-abstract: 1.21.1 get-intrinsic: 1.1.3 is-string: 1.0.7 dev: true @@ -5478,7 +5512,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.5 + es-abstract: 1.21.1 es-shim-unscopables: 1.0.0 dev: true @@ -5487,7 +5521,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.5 + es-abstract: 1.21.1 es-shim-unscopables: 1.0.0 get-intrinsic: 1.1.3 dev: true @@ -5572,14 +5606,14 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.4 - caniuse-lite: 1.0.30001436 + caniuse-lite: 1.0.30001443 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 postcss-value-parser: 4.2.0 dev: true - /autoprefixer/10.4.13_postcss@8.4.19: + /autoprefixer/10.4.13_postcss@8.4.21: resolution: {integrity: sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==} engines: {node: ^10 || ^12 || >=14} hasBin: true @@ -5587,11 +5621,11 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.4 - caniuse-lite: 1.0.30001436 + caniuse-lite: 1.0.30001443 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.19 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -5600,7 +5634,7 @@ packages: hasBin: true dependencies: browserslist: 4.21.4 - caniuse-lite: 1.0.30001436 + caniuse-lite: 1.0.30001443 normalize-range: 0.1.2 num2fraction: 1.2.2 picocolors: 0.2.1 @@ -5617,8 +5651,8 @@ packages: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} dev: true - /aws4/1.11.0: - resolution: {integrity: sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==} + /aws4/1.12.0: + resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} dev: true /axios/0.27.2: @@ -5630,16 +5664,16 @@ packages: - debug dev: true - /babel-jest/28.1.3: - resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + /babel-jest/29.3.1: + resolution: {integrity: sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@jest/transform': 28.1.3 + '@jest/transform': 29.3.1 '@types/babel__core': 7.1.20 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 28.1.3 + babel-preset-jest: 29.2.0 chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -5647,17 +5681,17 @@ packages: - supports-color dev: true - /babel-jest/29.3.1_@babel+core@7.20.5: + /babel-jest/29.3.1_@babel+core@7.20.12: resolution: {integrity: sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@jest/transform': 29.3.1 '@types/babel__core': 7.1.20 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.2.0_@babel+core@7.20.5 + babel-preset-jest: 29.2.0_@babel+core@7.20.12 chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -5671,8 +5705,8 @@ packages: object.assign: 4.1.4 dev: true - /babel-plugin-import/1.13.5: - resolution: {integrity: sha512-IkqnoV+ov1hdJVofly9pXRJmeDm9EtROfrc5i6eII0Hix2xMs5FEm8FG3ExMvazbnZBbgHIt6qdO8And6lCloQ==} + /babel-plugin-import/1.13.6: + resolution: {integrity: sha512-N7FYnGh0DFsvDRkAPsvFq/metVfVD7P2h1rokOPpEH4cZbdRHCW+2jbXt0nnuqowkm/xhh2ww1anIdEpfYa7ZA==} dependencies: '@babel/helper-module-imports': 7.18.6 dev: true @@ -5690,22 +5724,12 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist/28.1.3: - resolution: {integrity: sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.20.5 - '@types/babel__core': 7.1.20 - '@types/babel__traverse': 7.18.3 - dev: true - /babel-plugin-jest-hoist/29.2.0: resolution: {integrity: sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.18.10 - '@babel/types': 7.20.5 + '@babel/template': 7.20.7 + '@babel/types': 7.20.7 '@types/babel__core': 7.1.20 '@types/babel__traverse': 7.18.3 dev: true @@ -5714,43 +5738,43 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 cosmiconfig: 7.1.0 resolve: 1.22.1 dev: false - /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.20.5: + /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.20.12: resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.20.5 - '@babel/core': 7.20.5 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.5 + '@babel/compat-data': 7.20.10 + '@babel/core': 7.20.12 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 semver: 6.3.0 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.20.5: + /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.20.12: resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.5 - core-js-compat: 3.26.1 + '@babel/core': 7.20.12 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 + core-js-compat: 3.27.1 transitivePeerDependencies: - supports-color dev: true - /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.20.5: + /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.20.12: resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.5 - '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.5 + '@babel/core': 7.20.12 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 transitivePeerDependencies: - supports-color dev: true @@ -5790,45 +5814,45 @@ packages: '@babel/plugin-syntax-top-level-await': 7.14.5 dev: true - /babel-preset-current-node-syntax/1.0.1_@babel+core@7.20.5: + /babel-preset-current-node-syntax/1.0.1_@babel+core@7.20.12: resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.5 - '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.5 - '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.5 - '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.20.5 - '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.5 - '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.5 - dev: true - - /babel-preset-jest/28.1.3: - resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} + '@babel/core': 7.20.12 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.20.12 + '@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.12 + '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.20.12 + '@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.20.12 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.20.12 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 + '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.12 + dev: true + + /babel-preset-jest/29.2.0: + resolution: {integrity: sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - babel-plugin-jest-hoist: 28.1.3 + babel-plugin-jest-hoist: 29.2.0 babel-preset-current-node-syntax: 1.0.1 dev: true - /babel-preset-jest/29.2.0_@babel+core@7.20.5: + /babel-preset-jest/29.2.0_@babel+core@7.20.12: resolution: {integrity: sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 babel-plugin-jest-hoist: 29.2.0 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.5 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 dev: true /babel-runtime-jsx-plus/0.1.5: @@ -6006,9 +6030,9 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001436 + caniuse-lite: 1.0.30001443 electron-to-chromium: 1.4.284 - node-releases: 2.0.6 + node-releases: 2.0.8 update-browserslist-db: 1.0.10_browserslist@4.21.4 /bser/2.1.1: @@ -6098,8 +6122,8 @@ packages: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: true - /caniuse-lite/1.0.30001436: - resolution: {integrity: sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg==} + /caniuse-lite/1.0.30001443: + resolution: {integrity: sha512-jUo8svymO8+Mkj3qbUbVjR8zv8LUGpGkUM/jKvc9SO2BvjCI980dp9fQbf/dyLs6RascPzgR4nhAKFA4OHeSaA==} /carlo/0.9.46: resolution: {integrity: sha512-FwZ/wxjqe+5RgzF2SRsPSWsVB9+McAVRWW0tRkmbh7fBjrf3HFZZbcr8vr61p1K+NBaAPv57DRjxgIyfbHmd7g==} @@ -6167,8 +6191,8 @@ packages: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} dev: true - /ci-info/3.7.0: - resolution: {integrity: sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==} + /ci-info/3.7.1: + resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} engines: {node: '>=8'} dev: true @@ -6330,8 +6354,8 @@ packages: engines: {node: '>= 12'} dev: true - /commander/9.4.1: - resolution: {integrity: sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==} + /commander/9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} dev: true @@ -6355,6 +6379,10 @@ packages: /compute-scroll-into-view/1.0.20: resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} + dev: true + + /compute-scroll-into-view/2.0.4: + resolution: {integrity: sha512-y/ZA3BGnxoM/QHHQ2Uy49CLtnWPbt4tTPpEEZiEmmiWBFKjej7nEyH8Ryz54jH0MLXflUYA3Er2zUxPSJu5R+g==} /concat-map/0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -6405,19 +6433,32 @@ packages: engines: {node: '>= 0.6'} dev: true + /copy-anything/2.0.6: + resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} + dependencies: + is-what: 3.14.1 + dev: true + + /copy-anything/3.0.3: + resolution: {integrity: sha512-fpW2W/BqEzqPp29QS+MwwfisHCQZtiduTe/m8idFo0xbti9fIZ2WVhAsCv4ggFVH3AgCkVdpoOCtQC6gBrdhjw==} + engines: {node: '>=12.13'} + dependencies: + is-what: 4.1.8 + dev: true + /copy-to-clipboard/3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} dependencies: toggle-selection: 1.0.6 - /core-js-compat/3.26.1: - resolution: {integrity: sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==} + /core-js-compat/3.27.1: + resolution: {integrity: sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==} dependencies: browserslist: 4.21.4 dev: true - /core-js-pure/3.26.1: - resolution: {integrity: sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ==} + /core-js-pure/3.27.1: + resolution: {integrity: sha512-BS2NHgwwUppfeoqOXqi08mUqS5FiZpuRuJJpKsaME7kJz0xxuk0xkhDdfMIlP/zLa80krBqss1LtD7f889heAw==} requiresBuild: true dev: true @@ -6432,9 +6473,8 @@ packages: requiresBuild: true dev: true - /core-js/3.22.4: - resolution: {integrity: sha512-1uLykR+iOfYja+6Jn/57743gc9n73EWiOnSJJ4ba3B4fOEYDBv25MagmEZBxTp5cWq4b/KPx/l77zgsp28ju4w==} - deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + /core-js/3.27.1: + resolution: {integrity: sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==} requiresBuild: true dev: true @@ -6568,14 +6608,14 @@ packages: postcss-selector-parser: 6.0.11 dev: true - /css-blank-pseudo/3.0.3_postcss@8.4.19: + /css-blank-pseudo/3.0.3_postcss@8.4.21: resolution: {integrity: sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==} engines: {node: ^12 || ^14 || >=16} hasBin: true peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-selector-parser: 6.0.11 dev: true @@ -6599,14 +6639,14 @@ packages: postcss-selector-parser: 6.0.11 dev: true - /css-has-pseudo/3.0.4_postcss@8.4.19: + /css-has-pseudo/3.0.4_postcss@8.4.21: resolution: {integrity: sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==} engines: {node: ^12 || ^14 || >=16} hasBin: true peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-selector-parser: 6.0.11 dev: true @@ -6616,12 +6656,12 @@ packages: peerDependencies: webpack: ^5.0.0 dependencies: - icss-utils: 5.1.0_postcss@8.4.19 - postcss: 8.4.19 - postcss-modules-extract-imports: 3.0.0_postcss@8.4.19 - postcss-modules-local-by-default: 4.0.0_postcss@8.4.19 - postcss-modules-scope: 3.0.0_postcss@8.4.19 - postcss-modules-values: 4.0.0_postcss@8.4.19 + icss-utils: 5.1.0_postcss@8.4.21 + postcss: 8.4.21 + postcss-modules-extract-imports: 3.0.0_postcss@8.4.21 + postcss-modules-local-by-default: 4.0.0_postcss@8.4.21 + postcss-modules-scope: 3.0.0_postcss@8.4.21 + postcss-modules-values: 4.0.0_postcss@8.4.21 postcss-value-parser: 4.2.0 semver: 7.3.8 dev: true @@ -6634,14 +6674,14 @@ packages: postcss: ^8.4 dev: true - /css-prefers-color-scheme/6.0.3_postcss@8.4.19: + /css-prefers-color-scheme/6.0.3_postcss@8.4.21: resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==} engines: {node: ^12 || ^14 || >=16} hasBin: true peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 dev: true /css-select/4.3.0: @@ -6654,8 +6694,8 @@ packages: nth-check: 2.1.1 dev: true - /css-to-react-native/3.0.0: - resolution: {integrity: sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==} + /css-to-react-native/3.1.0: + resolution: {integrity: sha512-AryfkFA29b4I3vG7N4kxFboq15DxwSXzhXM37XNEjwJMgjYIc8BcqfiprpAqX0zadI5PMByEIwAMzXxk5Vcc4g==} dependencies: camelize: 1.0.1 css-color-keywords: 1.0.0 @@ -6728,6 +6768,11 @@ packages: assert-plus: 1.0.0 dev: true + /data-uri-to-buffer/4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + dev: true + /data-urls/3.0.2: resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} @@ -6817,15 +6862,17 @@ packages: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} dev: true - /deep-equal/2.1.0: - resolution: {integrity: sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA==} + /deep-equal/2.2.0: + resolution: {integrity: sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==} dependencies: call-bind: 1.0.2 es-get-iterator: 1.1.2 get-intrinsic: 1.1.3 is-arguments: 1.1.1 + is-array-buffer: 3.0.1 is-date-object: 1.0.5 is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 isarray: 2.0.5 object-is: 1.1.5 object-keys: 1.1.1 @@ -6909,7 +6956,7 @@ packages: engines: {node: '>= 4.2.1'} hasBin: true dependencies: - address: 1.2.1 + address: 1.2.2 debug: 2.6.9 transitivePeerDependencies: - supports-color @@ -6952,8 +6999,8 @@ packages: dependencies: esutils: 2.0.3 - /dom-accessibility-api/0.5.14: - resolution: {integrity: sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==} + /dom-accessibility-api/0.5.15: + resolution: {integrity: sha512-8o+oVqLQZoruQPYy3uAAQtc6YbtSiRq5aPJBhJ82YTJRHvI6ofhYAkC81WmjFTnfUbqg6T3aCglIpU9p/5e7Cw==} dev: true /dom-align/1.12.4: @@ -7062,7 +7109,7 @@ packages: peerDependencies: redux: 4.x dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 flatten: 1.0.3 global: 4.4.0 invariant: 2.2.4 @@ -7077,7 +7124,7 @@ packages: peerDependencies: dva: ^2.5.0-0 dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 immer: 8.0.4 dev: true @@ -7086,7 +7133,7 @@ packages: peerDependencies: dva-core: ^1.1.0 | ^1.5.0-0 | ^1.6.0-0 dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 dva-core: 2.0.4_redux@4.2.0 dev: true @@ -7178,6 +7225,15 @@ packages: engines: {node: '>=0.12'} dev: true + /errno/0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + requiresBuild: true + dependencies: + prr: 1.0.1 + dev: true + optional: true + /error-ex/1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: @@ -7189,35 +7245,43 @@ packages: stackframe: 1.3.4 dev: true - /es-abstract/1.20.5: - resolution: {integrity: sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==} + /es-abstract/1.21.1: + resolution: {integrity: sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==} engines: {node: '>= 0.4'} dependencies: + available-typed-arrays: 1.0.5 call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 es-to-primitive: 1.2.1 function-bind: 1.1.1 function.prototype.name: 1.1.5 get-intrinsic: 1.1.3 get-symbol-description: 1.0.0 + globalthis: 1.0.3 gopd: 1.0.1 has: 1.0.3 has-property-descriptors: 1.0.0 + has-proto: 1.0.1 has-symbols: 1.0.3 - internal-slot: 1.0.3 + internal-slot: 1.0.4 + is-array-buffer: 3.0.1 is-callable: 1.2.7 is-negative-zero: 2.0.2 is-regex: 1.1.4 is-shared-array-buffer: 1.0.2 is-string: 1.0.7 + is-typed-array: 1.1.10 is-weakref: 1.0.2 - object-inspect: 1.12.2 + object-inspect: 1.12.3 object-keys: 1.1.1 object.assign: 4.1.4 regexp.prototype.flags: 1.4.3 safe-regex-test: 1.0.0 string.prototype.trimend: 1.0.6 string.prototype.trimstart: 1.0.6 + typed-array-length: 1.0.4 unbox-primitive: 1.0.2 + which-typed-array: 1.1.9 dev: true /es-get-iterator/1.1.2: @@ -7233,6 +7297,15 @@ packages: isarray: 2.0.5 dev: true + /es-set-tostringtag/2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.1.3 + has: 1.0.3 + has-tostringtag: 1.0.0 + dev: true + /es-shim-unscopables/1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} dependencies: @@ -7300,15 +7373,6 @@ packages: es6-symbol: 3.1.3 dev: true - /esbuild-android-64/0.15.14: - resolution: {integrity: sha512-HuilVIb4rk9abT4U6bcFdU35UHOzcWVGLSjEmC58OVr96q5UiRqzDtWjPlCMugjhgUGKEs8Zf4ueIvYbOStbIg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - /esbuild-android-64/0.15.18: resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} engines: {node: '>=12'} @@ -7318,15 +7382,6 @@ packages: dev: true optional: true - /esbuild-android-arm64/0.15.14: - resolution: {integrity: sha512-/QnxRVxsR2Vtf3XottAHj7hENAMW2wCs6S+OZcAbc/8nlhbAL/bCQRCVD78VtI5mdwqWkVi3wMqM94kScQCgqg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - /esbuild-android-arm64/0.15.18: resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} engines: {node: '>=12'} @@ -7336,15 +7391,6 @@ packages: dev: true optional: true - /esbuild-darwin-64/0.15.14: - resolution: {integrity: sha512-ToNuf1uifu8hhwWvoZJGCdLIX/1zpo8cOGnT0XAhDQXiKOKYaotVNx7pOVB1f+wHoWwTLInrOmh3EmA7Fd+8Vg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /esbuild-darwin-64/0.15.18: resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} engines: {node: '>=12'} @@ -7354,15 +7400,6 @@ packages: dev: true optional: true - /esbuild-darwin-arm64/0.15.14: - resolution: {integrity: sha512-KgGP+y77GszfYJgceO0Wi/PiRtYo5y2Xo9rhBUpxTPaBgWDJ14gqYN0+NMbu+qC2fykxXaipHxN4Scaj9tUS1A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /esbuild-darwin-arm64/0.15.18: resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} engines: {node: '>=12'} @@ -7372,15 +7409,6 @@ packages: dev: true optional: true - /esbuild-freebsd-64/0.15.14: - resolution: {integrity: sha512-xr0E2n5lyWw3uFSwwUXHc0EcaBDtsal/iIfLioflHdhAe10KSctV978Te7YsfnsMKzcoGeS366+tqbCXdqDHQA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /esbuild-freebsd-64/0.15.18: resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} engines: {node: '>=12'} @@ -7390,15 +7418,6 @@ packages: dev: true optional: true - /esbuild-freebsd-arm64/0.15.14: - resolution: {integrity: sha512-8XH96sOQ4b1LhMlO10eEWOjEngmZ2oyw3pW4o8kvBcpF6pULr56eeYVP5radtgw54g3T8nKHDHYEI5AItvskZg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /esbuild-freebsd-arm64/0.15.18: resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} engines: {node: '>=12'} @@ -7408,15 +7427,6 @@ packages: dev: true optional: true - /esbuild-linux-32/0.15.14: - resolution: {integrity: sha512-6ssnvwaTAi8AzKN8By2V0nS+WF5jTP7SfuK6sStGnDP7MCJo/4zHgM9oE1eQTS2jPmo3D673rckuCzRlig+HMA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-32/0.15.18: resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} engines: {node: '>=12'} @@ -7426,15 +7436,6 @@ packages: dev: true optional: true - /esbuild-linux-64/0.15.14: - resolution: {integrity: sha512-ONySx3U0wAJOJuxGUlXBWxVKFVpWv88JEv0NZ6NlHknmDd1yCbf4AEdClSgLrqKQDXYywmw4gYDvdLsS6z0hcw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-64/0.15.18: resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} engines: {node: '>=12'} @@ -7444,15 +7445,6 @@ packages: dev: true optional: true - /esbuild-linux-arm/0.15.14: - resolution: {integrity: sha512-D2LImAIV3QzL7lHURyCHBkycVFbKwkDb1XEUWan+2fb4qfW7qAeUtul7ZIcIwFKZgPcl+6gKZmvLgPSj26RQ2Q==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-arm/0.15.18: resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} engines: {node: '>=12'} @@ -7462,15 +7454,6 @@ packages: dev: true optional: true - /esbuild-linux-arm64/0.15.14: - resolution: {integrity: sha512-kle2Ov6a1e5AjlHlMQl1e+c4myGTeggrRzArQFmWp6O6JoqqB9hT+B28EW4tjFWgV/NxUq46pWYpgaWXsXRPAg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-arm64/0.15.18: resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} engines: {node: '>=12'} @@ -7480,15 +7463,6 @@ packages: dev: true optional: true - /esbuild-linux-mips64le/0.15.14: - resolution: {integrity: sha512-FVdMYIzOLXUq+OE7XYKesuEAqZhmAIV6qOoYahvUp93oXy0MOVTP370ECbPfGXXUdlvc0TNgkJa3YhEwyZ6MRA==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-mips64le/0.15.18: resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} engines: {node: '>=12'} @@ -7498,15 +7472,6 @@ packages: dev: true optional: true - /esbuild-linux-ppc64le/0.15.14: - resolution: {integrity: sha512-2NzH+iuzMDA+jjtPjuIz/OhRDf8tzbQ1tRZJI//aT25o1HKc0reMMXxKIYq/8nSHXiJSnYV4ODzTiv45s+h73w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-ppc64le/0.15.18: resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} engines: {node: '>=12'} @@ -7516,15 +7481,6 @@ packages: dev: true optional: true - /esbuild-linux-riscv64/0.15.14: - resolution: {integrity: sha512-VqxvutZNlQxmUNS7Ac+aczttLEoHBJ9e3OYGqnULrfipRvG97qLrAv9EUY9iSrRKBqeEbSvS9bSfstZqwz0T4Q==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-riscv64/0.15.18: resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} engines: {node: '>=12'} @@ -7534,15 +7490,6 @@ packages: dev: true optional: true - /esbuild-linux-s390x/0.15.14: - resolution: {integrity: sha512-+KVHEUshX5n6VP6Vp/AKv9fZIl5kr2ph8EUFmQUJnDpHwcfTSn2AQgYYm0HTBR2Mr4d0Wlr0FxF/Cs5pbFgiOw==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-s390x/0.15.18: resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} engines: {node: '>=12'} @@ -7552,15 +7499,6 @@ packages: dev: true optional: true - /esbuild-netbsd-64/0.15.14: - resolution: {integrity: sha512-6D/dr17piEgevIm1xJfZP2SjB9Z+g8ERhNnBdlZPBWZl+KSPUKLGF13AbvC+nzGh8IxOH2TyTIdRMvKMP0nEzQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - /esbuild-netbsd-64/0.15.18: resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} engines: {node: '>=12'} @@ -7570,15 +7508,6 @@ packages: dev: true optional: true - /esbuild-openbsd-64/0.15.14: - resolution: {integrity: sha512-rREQBIlMibBetgr2E9Lywt2Qxv2ZdpmYahR4IUlAQ1Efv/A5gYdO0/VIN3iowDbCNTLxp0bb57Vf0LFcffD6kA==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - /esbuild-openbsd-64/0.15.18: resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} engines: {node: '>=12'} @@ -7588,15 +7517,6 @@ packages: dev: true optional: true - /esbuild-sunos-64/0.15.14: - resolution: {integrity: sha512-DNVjSp/BY4IfwtdUAvWGIDaIjJXY5KI4uD82+15v6k/w7px9dnaDaJJ2R6Mu+KCgr5oklmFc0KjBjh311Gxl9Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - /esbuild-sunos-64/0.15.18: resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} engines: {node: '>=12'} @@ -7606,15 +7526,6 @@ packages: dev: true optional: true - /esbuild-windows-32/0.15.14: - resolution: {integrity: sha512-pHBWrcA+/oLgvViuG9FO3kNPO635gkoVrRQwe6ZY1S0jdET07xe2toUvQoJQ8KT3/OkxqUasIty5hpuKFLD+eg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /esbuild-windows-32/0.15.18: resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} engines: {node: '>=12'} @@ -7624,15 +7535,6 @@ packages: dev: true optional: true - /esbuild-windows-64/0.15.14: - resolution: {integrity: sha512-CszIGQVk/P8FOS5UgAH4hKc9zOaFo69fe+k1rqgBHx3CSK3Opyk5lwYriIamaWOVjBt7IwEP6NALz+tkVWdFog==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /esbuild-windows-64/0.15.18: resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} engines: {node: '>=12'} @@ -7642,15 +7544,6 @@ packages: dev: true optional: true - /esbuild-windows-arm64/0.15.14: - resolution: {integrity: sha512-KW9W4psdZceaS9A7Jsgl4WialOznSURvqX/oHZk3gOP7KbjtHLSsnmSvNdzagGJfxbAe30UVGXRe8q8nDsOSQw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /esbuild-windows-arm64/0.15.18: resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} engines: {node: '>=12'} @@ -7660,36 +7553,6 @@ packages: dev: true optional: true - /esbuild/0.15.14: - resolution: {integrity: sha512-pJN8j42fvWLFWwSMG4luuupl2Me7mxciUOsMegKvwCmhEbJ2covUdFnihxm0FMIBV+cbwbtMoHgMCCI+pj1btQ==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.15.14 - '@esbuild/linux-loong64': 0.15.14 - esbuild-android-64: 0.15.14 - esbuild-android-arm64: 0.15.14 - esbuild-darwin-64: 0.15.14 - esbuild-darwin-arm64: 0.15.14 - esbuild-freebsd-64: 0.15.14 - esbuild-freebsd-arm64: 0.15.14 - esbuild-linux-32: 0.15.14 - esbuild-linux-64: 0.15.14 - esbuild-linux-arm: 0.15.14 - esbuild-linux-arm64: 0.15.14 - esbuild-linux-mips64le: 0.15.14 - esbuild-linux-ppc64le: 0.15.14 - esbuild-linux-riscv64: 0.15.14 - esbuild-linux-s390x: 0.15.14 - esbuild-netbsd-64: 0.15.14 - esbuild-openbsd-64: 0.15.14 - esbuild-sunos-64: 0.15.14 - esbuild-windows-32: 0.15.14 - esbuild-windows-64: 0.15.14 - esbuild-windows-arm64: 0.15.14 - dev: true - /esbuild/0.15.18: resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} engines: {node: '>=12'} @@ -7720,6 +7583,36 @@ packages: esbuild-windows-arm64: 0.15.18 dev: true + /esbuild/0.16.17: + resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.16.17 + '@esbuild/android-arm64': 0.16.17 + '@esbuild/android-x64': 0.16.17 + '@esbuild/darwin-arm64': 0.16.17 + '@esbuild/darwin-x64': 0.16.17 + '@esbuild/freebsd-arm64': 0.16.17 + '@esbuild/freebsd-x64': 0.16.17 + '@esbuild/linux-arm': 0.16.17 + '@esbuild/linux-arm64': 0.16.17 + '@esbuild/linux-ia32': 0.16.17 + '@esbuild/linux-loong64': 0.16.17 + '@esbuild/linux-mips64el': 0.16.17 + '@esbuild/linux-ppc64': 0.16.17 + '@esbuild/linux-riscv64': 0.16.17 + '@esbuild/linux-s390x': 0.16.17 + '@esbuild/linux-x64': 0.16.17 + '@esbuild/netbsd-x64': 0.16.17 + '@esbuild/openbsd-x64': 0.16.17 + '@esbuild/sunos-x64': 0.16.17 + '@esbuild/win32-arm64': 0.16.17 + '@esbuild/win32-ia32': 0.16.17 + '@esbuild/win32-x64': 0.16.17 + dev: true + /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -7762,8 +7655,8 @@ packages: lodash.zip: 4.2.0 dev: true - /eslint-config-prettier/8.5.0_eslint@7.32.0: - resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} + /eslint-config-prettier/8.6.0_eslint@7.32.0: + resolution: {integrity: sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -7795,7 +7688,7 @@ packages: eslint-rule-composer: 0.3.0 dev: true - /eslint-plugin-jest/24.7.0_lu625izcmv7ncn4wtsowv2m5du: + /eslint-plugin-jest/24.7.0_7o4xqfjf6pwo3mvvonizibb5lq: resolution: {integrity: sha512-wUxdF2bAZiYSKBclsUMrYHH6WxiBreNjyDxbRv345TIvPeoCEgPNEn3Sa+ZrSqsf1Dl9SqqSREXMHExlMMu1DA==} engines: {node: '>=10'} peerDependencies: @@ -7805,7 +7698,7 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.45.1_gzownqpuqpv4wlegrjxgkhyhy4 + '@typescript-eslint/eslint-plugin': 5.48.1_s66zx5d3yhyn34ft2zz26bcwti '@typescript-eslint/experimental-utils': 4.33.0_yfqovispp7u7jaktymfaqwl2py eslint: 7.32.0 transitivePeerDependencies: @@ -7813,7 +7706,7 @@ packages: - typescript dev: true - /eslint-plugin-jest/26.1.5_c536eslrwm5p6jo75m7x37dlaa: + /eslint-plugin-jest/26.1.5_gwbh725yvx2gda2van5hxf7p64: resolution: {integrity: sha512-su89aDuljL9bTjEufTXmKUMSFe2kZUL9bi7+woq+C2ukHZordhtfPm4Vg+tdioHBaKf8v3/FXW9uV0ksqhYGFw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7826,31 +7719,9 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.36.1_mykkoz4hah6spua56zdzyuayri - '@typescript-eslint/utils': 5.45.1_7xejdone6kwdndpjp5nwx3ofcu - eslint: 8.15.0 - jest: 29.3.1_ts-node@10.9.1 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /eslint-plugin-jest/26.1.5_evhtpg37z3oayq2bq7xoh7b4ra: - resolution: {integrity: sha512-su89aDuljL9bTjEufTXmKUMSFe2kZUL9bi7+woq+C2ukHZordhtfPm4Vg+tdioHBaKf8v3/FXW9uV0ksqhYGFw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - '@typescript-eslint/eslint-plugin': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - jest: '*' - peerDependenciesMeta: - '@typescript-eslint/eslint-plugin': - optional: true - jest: - optional: true - dependencies: - '@typescript-eslint/eslint-plugin': 5.36.1_ujfdmtdxmqxe4a5dut33px3yhi - '@typescript-eslint/utils': 5.45.1_ha6vam6werchizxrnqvarmz2zu - eslint: 8.29.0 + '@typescript-eslint/eslint-plugin': 5.48.1_3jon24igvnqaqexgwtxk6nkpse + '@typescript-eslint/utils': 5.48.1_iukboom6ndih5an6iafl45j2fe + eslint: 8.31.0 jest: 29.3.1_ts-node@10.9.1 transitivePeerDependencies: - supports-color @@ -7866,22 +7737,13 @@ packages: eslint: 7.32.0 dev: true - /eslint-plugin-react-hooks/4.5.0_eslint@8.15.0: + /eslint-plugin-react-hooks/4.5.0_eslint@8.31.0: resolution: {integrity: sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.15.0 - dev: true - - /eslint-plugin-react-hooks/4.5.0_eslint@8.29.0: - resolution: {integrity: sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - dependencies: - eslint: 8.29.0 + eslint: 8.31.0 dev: true /eslint-plugin-react-hooks/4.6.0_eslint@7.32.0: @@ -7893,7 +7755,7 @@ packages: eslint: 7.32.0 dev: true - /eslint-plugin-react/7.29.4_eslint@8.15.0: + /eslint-plugin-react/7.29.4_eslint@8.31.0: resolution: {integrity: sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==} engines: {node: '>=4'} peerDependencies: @@ -7902,7 +7764,7 @@ packages: array-includes: 3.1.6 array.prototype.flatmap: 1.3.1 doctrine: 2.1.0 - eslint: 8.15.0 + eslint: 8.31.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -7916,31 +7778,8 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-react/7.29.4_eslint@8.29.0: - resolution: {integrity: sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - array-includes: 3.1.6 - array.prototype.flatmap: 1.3.1 - doctrine: 2.1.0 - eslint: 8.29.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.3 - minimatch: 3.1.2 - object.entries: 1.1.6 - object.fromentries: 2.0.6 - object.hasown: 1.1.2 - object.values: 1.1.6 - prop-types: 15.8.1 - resolve: 2.0.0-next.4 - semver: 6.3.0 - string.prototype.matchall: 4.0.8 - dev: true - - /eslint-plugin-react/7.31.11_eslint@7.32.0: - resolution: {integrity: sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==} + /eslint-plugin-react/7.32.0_eslint@7.32.0: + resolution: {integrity: sha512-vSBi1+SrPiLZCGvxpiZIa28fMEUaMjXtCplrvxcIxGzmFiYdsXQDwInEjuv5/i/2CTTxbkS87tE8lsQ0Qxinbw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 @@ -8016,8 +7855,8 @@ packages: peerDependencies: eslint: '>=7.0.0' dependencies: - '@babel/core': 7.20.5 - '@babel/eslint-parser': 7.19.1_q7hszagzy73il6awuziitdhqxe + '@babel/core': 7.20.12 + '@babel/eslint-parser': 7.19.1_go3kp2l7mdrkdyt3xfyeu7ppfa eslint: 7.32.0 eslint-visitor-keys: 2.1.0 esquery: 1.4.0 @@ -8043,23 +7882,13 @@ packages: eslint-visitor-keys: 2.1.0 dev: true - /eslint-utils/3.0.0_eslint@8.15.0: + /eslint-utils/3.0.0_eslint@8.31.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 8.15.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /eslint-utils/3.0.0_eslint@8.29.0: - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.29.0 + eslint: 8.31.0 eslint-visitor-keys: 2.1.0 /eslint-visitor-keys/1.3.0: @@ -8100,7 +7929,7 @@ packages: file-entry-cache: 6.0.1 functional-red-black-tree: 1.0.1 glob-parent: 5.1.2 - globals: 13.18.0 + globals: 13.19.0 ignore: 4.0.6 import-fresh: 3.3.0 imurmurhash: 0.1.4 @@ -8124,57 +7953,13 @@ packages: - supports-color dev: true - /eslint/8.15.0: - resolution: {integrity: sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - hasBin: true - dependencies: - '@eslint/eslintrc': 1.3.3 - '@humanwhocodes/config-array': 0.9.5 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - doctrine: 3.0.0 - escape-string-regexp: 4.0.0 - eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.15.0 - eslint-visitor-keys: 3.3.0 - espree: 9.4.1 - esquery: 1.4.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 - functional-red-black-tree: 1.0.1 - glob-parent: 6.0.2 - globals: 13.18.0 - ignore: 5.2.1 - import-fresh: 3.3.0 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - js-yaml: 4.1.0 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.1 - regexpp: 3.2.0 - strip-ansi: 6.0.1 - strip-json-comments: 3.1.1 - text-table: 0.2.0 - v8-compile-cache: 2.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint/8.29.0: - resolution: {integrity: sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==} + /eslint/8.31.0: + resolution: {integrity: sha512-0tQQEVdmPZ1UtUKXjX7EMm9BlgJ08G90IhWh0PKDCb3ZLsgAOHI8fYSIzYVZej92zsgq+ft0FGsxhJ3xo2tbuA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.3.3 - '@humanwhocodes/config-array': 0.11.7 + '@eslint/eslintrc': 1.4.1 + '@humanwhocodes/config-array': 0.11.8 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 ajv: 6.12.6 @@ -8184,7 +7969,7 @@ packages: doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.29.0 + eslint-utils: 3.0.0_eslint@8.31.0 eslint-visitor-keys: 3.3.0 espree: 9.4.1 esquery: 1.4.0 @@ -8193,9 +7978,9 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.18.0 + globals: 13.19.0 grapheme-splitter: 1.0.4 - ignore: 5.2.1 + ignore: 5.2.4 import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 @@ -8259,10 +8044,6 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - /estree-walker/2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true - /esutils/2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -8447,8 +8228,8 @@ packages: engines: {node: '>= 4.9.1'} dev: true - /fastq/1.14.0: - resolution: {integrity: sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==} + /fastq/1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 @@ -8476,6 +8257,14 @@ packages: pend: 1.2.0 dev: true + /fetch-blob/3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.2.1 + dev: true + /file-entry-cache/6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -8597,7 +8386,7 @@ packages: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} dev: true - /fork-ts-checker-webpack-plugin/6.5.2_ha6vam6werchizxrnqvarmz2zu: + /fork-ts-checker-webpack-plugin/6.5.2_iukboom6ndih5an6iafl45j2fe: resolution: {integrity: sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -8617,10 +8406,10 @@ packages: chokidar: 3.5.3 cosmiconfig: 6.0.0 deepmerge: 4.2.2 - eslint: 8.29.0 + eslint: 8.31.0 fs-extra: 9.1.0 glob: 7.2.3 - memfs: 3.4.12 + memfs: 3.4.13 minimatch: 3.1.2 schema-utils: 2.7.0 semver: 7.3.8 @@ -8628,8 +8417,8 @@ packages: typescript: 4.9.4 dev: false - /fork-ts-checker-webpack-plugin/7.2.4_typescript@4.9.4: - resolution: {integrity: sha512-wVN8w0aGiiF4/1o0N5VPeh+PCs4OMg8VzKiYc7Uw7e2VmTt8JuKjEc2/uvd/VfG0Ux+4WnxMncSRcZpXAS6Fyw==} + /fork-ts-checker-webpack-plugin/7.3.0_typescript@4.9.4: + resolution: {integrity: sha512-IN+XTzusCjR5VgntYFgxbxVx3WraPRnKehBFrf00cMSrtUuW9MsG9dhL6MWpY6MkjC3wVwoujfCDgZZCQwbswA==} engines: {node: '>=12.13.0', yarn: '>=1.0.0'} peerDependencies: typescript: '>3.6.0' @@ -8645,8 +8434,9 @@ packages: cosmiconfig: 7.1.0 deepmerge: 4.2.2 fs-extra: 10.1.0 - memfs: 3.4.12 + memfs: 3.4.13 minimatch: 3.1.2 + node-abort-controller: 3.0.1 schema-utils: 3.1.1 semver: 7.3.8 tapable: 2.2.1 @@ -8671,6 +8461,13 @@ packages: mime-types: 2.1.35 dev: true + /formdata-polyfill/4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: true + /forwarded/0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -8739,7 +8536,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.5 + es-abstract: 1.21.1 functions-have-names: 1.2.3 dev: true @@ -8802,14 +8599,14 @@ packages: get-intrinsic: 1.1.3 dev: true - /get-tsconfig/4.2.0: - resolution: {integrity: sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==} + /get-tsconfig/4.3.0: + resolution: {integrity: sha512-YCcF28IqSay3fqpIu5y3Krg/utCBHBeoflkZyHj/QcqI2nrLPC3ZegS9CmIo+hJb8K7aiGsuUl7PwWVjNG2HQQ==} dev: true /getnpmregistry/1.0.1: resolution: {integrity: sha512-OZRQ1RmRC0JduSLlQrHAaBLLrB23D3gaREsMBtM7aV8pxKB3duPs+a7iH7662b8zu1G9H6wiOvZc814g/bcHVg==} dependencies: - node-fetch: 2.6.7 + node-fetch: 2.6.8 transitivePeerDependencies: - encoding dev: true @@ -8885,8 +8682,8 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globals/13.18.0: - resolution: {integrity: sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==} + /globals/13.19.0: + resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -8907,7 +8704,7 @@ packages: dir-glob: 3.0.1 fast-glob: 3.2.12 glob: 7.2.3 - ignore: 5.2.1 + ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -8919,7 +8716,7 @@ packages: array-union: 2.1.0 dir-glob: 3.0.1 fast-glob: 3.2.12 - ignore: 5.2.1 + ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 @@ -9010,6 +8807,11 @@ packages: get-intrinsic: 1.1.3 dev: true + /has-proto/1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + /has-symbols/1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} @@ -9052,7 +8854,7 @@ packages: /history/5.3.0: resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 dev: true /hmac-drbg/1.0.1: @@ -9257,13 +9059,13 @@ packages: safer-buffer: 2.1.2 dev: true - /icss-utils/5.1.0_postcss@8.4.19: + /icss-utils/5.1.0_postcss@8.4.21: resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 dev: true /identity-obj-proxy/3.0.0: @@ -9282,16 +9084,24 @@ packages: engines: {node: '>= 4'} dev: true - /ignore/5.2.1: - resolution: {integrity: sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==} + /ignore/5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} + /image-size/0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + requiresBuild: true + dev: true + optional: true + /immer/8.0.4: resolution: {integrity: sha512-jMfL18P+/6P6epANRvRk6q8t+3gGhqsJ9EuJ25AXE+9bNTYtssvzeYbEd0mXRYWCmmXSIbnlpz6vd6iJlmGGGQ==} dev: true - /immer/9.0.16: - resolution: {integrity: sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ==} + /immer/9.0.17: + resolution: {integrity: sha512-+hBruaLSQvkPfxRiTLK/mi4vLH+/VQS6z2KJahdoxlleFOI8ARqzOF17uy12eFDlqWmPoygwc5evgwcp+dlHhg==} dev: false /import-fresh/3.3.0: @@ -9304,7 +9114,7 @@ packages: /import-html-entry/1.14.0: resolution: {integrity: sha512-CQQMV+2rxHCLMSXsajV1cjT1g6xi3ujMAPnGwR96xHaN5/JEVIOUGkM7LDRn73dk8E8NaHmOf3rvPPExPPe1xw==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 dev: true /import-lazy/4.0.0: @@ -9355,8 +9165,8 @@ packages: /ini/1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - /internal-slot/1.0.3: - resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} + /internal-slot/1.0.4: + resolution: {integrity: sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==} engines: {node: '>= 0.4'} dependencies: get-intrinsic: 1.1.3 @@ -9438,6 +9248,14 @@ packages: has-tostringtag: 1.0.0 dev: true + /is-array-buffer/3.0.1: + resolution: {integrity: sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.1.3 + is-typed-array: 1.1.10 + dev: true + /is-arrayish/0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -9526,7 +9344,7 @@ packages: is-string: 1.0.7 is-symbol: 1.0.4 isarray: 2.0.5 - object-inspect: 1.12.2 + object-inspect: 1.12.3 object.entries: 1.1.6 object.getprototypeof: 1.0.4 which-boxed-primitive: 1.0.2 @@ -9732,6 +9550,15 @@ packages: get-intrinsic: 1.1.3 dev: true + /is-what/3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + dev: true + + /is-what/4.1.8: + resolution: {integrity: sha512-yq8gMao5upkPoGEU9LsB2P+K3Kt8Q3fQFCGyNCWOAnJAMzEXVV9drYb0TXr42TTliLLhKIBvulgAXgtLLnwzGA==} + engines: {node: '>=12.13'} + dev: true + /is-wsl/2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -9765,13 +9592,11 @@ packages: whatwg-fetch: 3.6.2 dev: true - /isomorphic-unfetch/3.1.0: - resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + /isomorphic-unfetch/4.0.2: + resolution: {integrity: sha512-1Yd+CF/7al18/N2BDbsLBcp6RO3tucSW+jcLq24dqdX5MNbCNTw1z4BsGsp4zNmjr/Izm2cs/cEqZPp4kvWSCA==} dependencies: - node-fetch: 2.6.7 - unfetch: 4.2.0 - transitivePeerDependencies: - - encoding + node-fetch: 3.3.0 + unfetch: 5.0.0 dev: true /isstream/0.1.2: @@ -9787,8 +9612,8 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.20.5 - '@babel/parser': 7.20.5 + '@babel/core': 7.20.12 + '@babel/parser': 7.20.7 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -9840,7 +9665,7 @@ packages: '@jest/expect': 29.3.1 '@jest/test-result': 29.3.1 '@jest/types': 29.3.1 - '@types/node': 18.11.11 + '@types/node': 18.11.18 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -9887,7 +9712,7 @@ packages: - ts-node dev: true - /jest-config/29.3.1_k7quxe733nexnlgzi4yxvxoplq: + /jest-config/29.3.1_ts-node@10.9.1: resolution: {integrity: sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -9899,13 +9724,12 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@jest/test-sequencer': 29.3.1 '@jest/types': 29.3.1 - '@types/node': 18.11.11 - babel-jest: 29.3.1_@babel+core@7.20.5 + babel-jest: 29.3.1_@babel+core@7.20.12 chalk: 4.1.2 - ci-info: 3.7.0 + ci-info: 3.7.1 deepmerge: 4.2.2 glob: 7.2.3 graceful-fs: 4.2.10 @@ -9927,7 +9751,7 @@ packages: - supports-color dev: true - /jest-config/29.3.1_ts-node@10.9.1: + /jest-config/29.3.1_zfha7dvnw4nti6zkbsmhmn6xo4: resolution: {integrity: sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -9939,12 +9763,13 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.20.5 + '@babel/core': 7.20.12 '@jest/test-sequencer': 29.3.1 '@jest/types': 29.3.1 - babel-jest: 29.3.1_@babel+core@7.20.5 + '@types/node': 18.11.18 + babel-jest: 29.3.1_@babel+core@7.20.12 chalk: 4.1.2 - ci-info: 3.7.0 + ci-info: 3.7.1 deepmerge: 4.2.2 glob: 7.2.3 graceful-fs: 4.2.10 @@ -10007,7 +9832,7 @@ packages: '@jest/fake-timers': 29.3.1 '@jest/types': 29.3.1 '@types/jsdom': 20.0.1 - '@types/node': 18.11.11 + '@types/node': 18.11.18 jest-mock: 29.3.1 jest-util: 29.3.1 jsdom: 20.0.3 @@ -10024,7 +9849,7 @@ packages: '@jest/environment': 29.3.1 '@jest/fake-timers': 29.3.1 '@jest/types': 29.3.1 - '@types/node': 18.11.11 + '@types/node': 18.11.18 jest-mock: 29.3.1 jest-util: 29.3.1 dev: true @@ -10034,32 +9859,13 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map/28.1.3: - resolution: {integrity: sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jest/types': 28.1.3 - '@types/graceful-fs': 4.1.5 - '@types/node': 18.11.11 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.10 - jest-regex-util: 28.0.2 - jest-util: 28.1.3 - jest-worker: 28.1.3 - micromatch: 4.0.5 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.2 - dev: true - /jest-haste-map/29.3.1: resolution: {integrity: sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.3.1 - '@types/graceful-fs': 4.1.5 - '@types/node': 18.11.11 + '@types/graceful-fs': 4.1.6 + '@types/node': 18.11.18 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.10 @@ -10110,7 +9916,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.3.1 - '@types/node': 18.11.11 + '@types/node': 18.11.18 jest-util: 29.3.1 dev: true @@ -10126,11 +9932,6 @@ packages: jest-resolve: 29.3.1 dev: true - /jest-regex-util/28.0.2: - resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dev: true - /jest-regex-util/29.2.0: resolution: {integrity: sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -10157,7 +9958,7 @@ packages: jest-util: 29.3.1 jest-validate: 29.3.1 resolve: 1.22.1 - resolve.exports: 1.1.0 + resolve.exports: 1.1.1 slash: 3.0.0 dev: true @@ -10170,7 +9971,7 @@ packages: '@jest/test-result': 29.3.1 '@jest/transform': 29.3.1 '@jest/types': 29.3.1 - '@types/node': 18.11.11 + '@types/node': 18.11.18 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -10201,7 +10002,7 @@ packages: '@jest/test-result': 29.3.1 '@jest/transform': 29.3.1 '@jest/types': 29.3.1 - '@types/node': 18.11.11 + '@types/node': 18.11.18 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -10224,18 +10025,18 @@ packages: resolution: {integrity: sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.20.5 - '@babel/generator': 7.20.5 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.5 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 + '@babel/core': 7.20.12 + '@babel/generator': 7.20.7 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 + '@babel/traverse': 7.20.12 + '@babel/types': 7.20.7 '@jest/expect-utils': 29.3.1 '@jest/transform': 29.3.1 '@jest/types': 29.3.1 '@types/babel__traverse': 7.18.3 - '@types/prettier': 2.7.1 - babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.5 + '@types/prettier': 2.7.2 + babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 chalk: 4.1.2 expect: 29.3.1 graceful-fs: 4.2.10 @@ -10252,26 +10053,14 @@ packages: - supports-color dev: true - /jest-util/28.1.3: - resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@jest/types': 28.1.3 - '@types/node': 18.11.11 - chalk: 4.1.2 - ci-info: 3.7.0 - graceful-fs: 4.2.10 - picomatch: 2.3.1 - dev: true - /jest-util/29.3.1: resolution: {integrity: sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.3.1 - '@types/node': 18.11.11 + '@types/node': 18.11.18 chalk: 4.1.2 - ci-info: 3.7.0 + ci-info: 3.7.1 graceful-fs: 4.2.10 picomatch: 2.3.1 dev: true @@ -10294,7 +10083,7 @@ packages: dependencies: '@jest/test-result': 29.3.1 '@jest/types': 29.3.1 - '@types/node': 18.11.11 + '@types/node': 18.11.18 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -10302,29 +10091,11 @@ packages: string-length: 4.0.2 dev: true - /jest-worker/27.5.1: - resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/node': 18.11.11 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: true - - /jest-worker/28.1.3: - resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==} - engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} - dependencies: - '@types/node': 18.11.11 - merge-stream: 2.0.0 - supports-color: 8.1.1 - dev: true - /jest-worker/29.3.1: resolution: {integrity: sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.11.11 + '@types/node': 18.11.18 jest-util: 29.3.1 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -10411,7 +10182,7 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 - ws: 8.11.0 + ws: 8.12.0 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -10455,8 +10226,8 @@ packages: dependencies: string-convert: 0.2.1 - /json5/2.2.1: - resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} + /json5/2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true @@ -10507,6 +10278,10 @@ packages: resolution: {integrity: sha512-b0/9J1O9Jcyik1GC6KC42hJ41jKwdO/Mq8Mdo5sYN+IuRTXs2YFHZC3kZSx6ueusqa95x3wLYe/ytKjbAfGixA==} dev: true + /kolorist/1.6.0: + resolution: {integrity: sha512-dLkz37Ab97HWMx9KTes3Tbi3D1ln9fCAy2zr2YVExJasDRPGRaKcoE4fycWNtnCAJfjFqe0cnY+f8KT2JePEXQ==} + dev: true + /lcid/3.1.1: resolution: {integrity: sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==} engines: {node: '>=8'} @@ -10514,6 +10289,26 @@ packages: invert-kv: 3.0.1 dev: true + /less/4.1.3: + resolution: {integrity: sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==} + engines: {node: '>=6'} + hasBin: true + dependencies: + copy-anything: 2.0.6 + parse-node-version: 1.0.1 + tslib: 2.4.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.10 + image-size: 0.5.5 + make-dir: 2.1.0 + mime: 1.6.0 + needle: 3.2.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + dev: true + /leven/3.1.0: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} @@ -10575,7 +10370,7 @@ packages: log-update: 4.0.0 p-map: 4.0.0 rfdc: 1.3.0 - rxjs: 7.6.0 + rxjs: 7.8.0 through: 2.3.8 wrap-ansi: 7.0.0 dev: true @@ -10586,13 +10381,18 @@ packages: dependencies: big.js: 5.2.2 emojis-list: 3.0.0 - json5: 2.2.1 + json5: 2.2.3 /loader-utils/3.2.1: resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} engines: {node: '>= 12.13.0'} dev: false + /local-pkg/0.4.2: + resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} + engines: {node: '>=14'} + dev: true + /locate-path/3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} @@ -10628,6 +10428,7 @@ packages: /lodash.isequal/4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + dev: false /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -10696,6 +10497,11 @@ packages: tslib: 2.4.1 dev: true + /lru-cache/5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + /lru-cache/6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -10713,13 +10519,20 @@ packages: hasBin: true dev: true - /magic-string/0.26.2: - resolution: {integrity: sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==} + /magic-string/0.26.7: + resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} engines: {node: '>=12'} dependencies: sourcemap-codec: 1.4.8 dev: true + /magic-string/0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + /make-dir/2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} engines: {node: '>=6'} @@ -10819,14 +10632,15 @@ packages: p-is-promise: 2.1.0 dev: true - /memfs/3.4.12: - resolution: {integrity: sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw==} + /memfs/3.4.13: + resolution: {integrity: sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg==} engines: {node: '>= 4.0.0'} dependencies: fs-monkey: 1.0.3 /memoize-one/5.2.1: resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + dev: false /memoizee/0.4.15: resolution: {integrity: sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==} @@ -10981,7 +10795,7 @@ packages: resolution: {integrity: sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==} hasBin: true dependencies: - commander: 9.4.1 + commander: 9.5.0 dev: true /moment/2.29.4: @@ -11014,6 +10828,20 @@ packages: /natural-compare/1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + /needle/3.2.0: + resolution: {integrity: sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==} + engines: {node: '>= 4.4.x'} + hasBin: true + requiresBuild: true + dependencies: + debug: 3.2.7 + iconv-lite: 0.6.3 + sax: 1.2.4 + transitivePeerDependencies: + - supports-color + dev: true + optional: true + /negotiator/0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -11030,6 +10858,15 @@ packages: tslib: 2.4.1 dev: true + /node-abort-controller/3.0.1: + resolution: {integrity: sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw==} + dev: true + + /node-domexception/1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: true + /node-fetch-h2/2.3.0: resolution: {integrity: sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==} engines: {node: 4.x || >=6.0.0} @@ -11049,8 +10886,8 @@ packages: engines: {node: 4.x || >=6.0.0} dev: true - /node-fetch/2.6.7: - resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==} + /node-fetch/2.6.8: + resolution: {integrity: sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -11061,6 +10898,15 @@ packages: whatwg-url: 5.0.0 dev: true + /node-fetch/3.3.0: + resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: true + /node-import-ts/1.0.6: resolution: {integrity: sha512-zm2zxUn5KI+jjDyx80MbrIrLRUwQ3oQYGotgZ+Z6xTSaXoUgIIO7h5mks5c9v4tBBpc+VlIyyq5WkGcdCn7qfA==} dependencies: @@ -11107,8 +10953,8 @@ packages: es6-promise: 3.3.1 dev: true - /node-releases/2.0.6: - resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} + /node-releases/2.0.8: + resolution: {integrity: sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==} /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -11232,8 +11078,8 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - /object-inspect/1.12.2: - resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==} + /object-inspect/1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} dev: true /object-is/1.1.5: @@ -11265,7 +11111,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.5 + es-abstract: 1.21.1 dev: true /object.fromentries/2.0.6: @@ -11274,7 +11120,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.5 + es-abstract: 1.21.1 dev: true /object.getprototypeof/1.0.4: @@ -11283,7 +11129,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.5 + es-abstract: 1.21.1 reflect.getprototypeof: 1.0.3 dev: true @@ -11291,7 +11137,7 @@ packages: resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: define-properties: 1.1.4 - es-abstract: 1.20.5 + es-abstract: 1.21.1 dev: true /object.values/1.1.6: @@ -11300,7 +11146,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.5 + es-abstract: 1.21.1 dev: true /obuf/1.1.2: @@ -11502,6 +11348,11 @@ packages: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + /parse-node-version/1.0.1: + resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} + engines: {node: '>= 0.10'} + dev: true + /parse5/7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: @@ -11636,7 +11487,7 @@ packages: process-warning: 1.0.0 quick-format-unescaped: 4.0.4 real-require: 0.1.0 - safe-stable-stringify: 2.4.1 + safe-stable-stringify: 2.4.2 sonic-boom: 2.8.0 thread-stream: 0.15.2 dev: true @@ -11707,13 +11558,13 @@ packages: postcss-selector-parser: 6.0.11 dev: true - /postcss-attribute-case-insensitive/5.0.2_postcss@8.4.19: + /postcss-attribute-case-insensitive/5.0.2_postcss@8.4.21: resolution: {integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-selector-parser: 6.0.11 dev: true @@ -11726,13 +11577,13 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-clamp/4.1.0_postcss@8.4.19: + /postcss-clamp/4.1.0_postcss@8.4.21: resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} engines: {node: '>=7.6.0'} peerDependencies: postcss: ^8.4.6 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -11745,13 +11596,13 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-color-functional-notation/4.2.4_postcss@8.4.19: + /postcss-color-functional-notation/4.2.4_postcss@8.4.21: resolution: {integrity: sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -11764,13 +11615,13 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-color-hex-alpha/8.0.4_postcss@8.4.19: + /postcss-color-hex-alpha/8.0.4_postcss@8.4.21: resolution: {integrity: sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -11783,13 +11634,13 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-color-rebeccapurple/7.1.1_postcss@8.4.19: + /postcss-color-rebeccapurple/7.1.1_postcss@8.4.21: resolution: {integrity: sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -11802,13 +11653,13 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-custom-media/8.0.2_postcss@8.4.19: + /postcss-custom-media/8.0.2_postcss@8.4.21: resolution: {integrity: sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.3 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -11821,13 +11672,13 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-custom-properties/12.1.11_postcss@8.4.19: + /postcss-custom-properties/12.1.11_postcss@8.4.21: resolution: {integrity: sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -11840,13 +11691,13 @@ packages: postcss-selector-parser: 6.0.11 dev: true - /postcss-custom-selectors/6.0.3_postcss@8.4.19: + /postcss-custom-selectors/6.0.3_postcss@8.4.21: resolution: {integrity: sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.3 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-selector-parser: 6.0.11 dev: true @@ -11859,13 +11710,13 @@ packages: postcss-selector-parser: 6.0.11 dev: true - /postcss-dir-pseudo-class/6.0.5_postcss@8.4.19: + /postcss-dir-pseudo-class/6.0.5_postcss@8.4.21: resolution: {integrity: sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-selector-parser: 6.0.11 dev: true @@ -11879,14 +11730,14 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-double-position-gradients/3.1.2_postcss@8.4.19: + /postcss-double-position-gradients/3.1.2_postcss@8.4.21: resolution: {integrity: sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.19 - postcss: 8.4.19 + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -11899,22 +11750,22 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-env-function/4.0.6_postcss@8.4.19: + /postcss-env-function/4.0.6_postcss@8.4.21: resolution: {integrity: sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true - /postcss-flexbugs-fixes/5.0.2_postcss@8.4.19: + /postcss-flexbugs-fixes/5.0.2_postcss@8.4.21: resolution: {integrity: sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==} peerDependencies: postcss: ^8.1.4 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 dev: true /postcss-focus-visible/6.0.4: @@ -11926,13 +11777,13 @@ packages: postcss-selector-parser: 6.0.11 dev: true - /postcss-focus-visible/6.0.4_postcss@8.4.19: + /postcss-focus-visible/6.0.4_postcss@8.4.21: resolution: {integrity: sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-selector-parser: 6.0.11 dev: true @@ -11945,13 +11796,13 @@ packages: postcss-selector-parser: 6.0.11 dev: true - /postcss-focus-within/5.0.4_postcss@8.4.19: + /postcss-focus-within/5.0.4_postcss@8.4.21: resolution: {integrity: sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-selector-parser: 6.0.11 dev: true @@ -11961,12 +11812,12 @@ packages: postcss: ^8.1.0 dev: true - /postcss-font-variant/5.0.0_postcss@8.4.19: + /postcss-font-variant/5.0.0_postcss@8.4.21: resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 dev: true /postcss-gap-properties/3.0.5: @@ -11976,13 +11827,13 @@ packages: postcss: ^8.2 dev: true - /postcss-gap-properties/3.0.5_postcss@8.4.19: + /postcss-gap-properties/3.0.5_postcss@8.4.21: resolution: {integrity: sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 dev: true /postcss-html/0.36.0_j55xdkkcxc32kvnyvx3y7casfm: @@ -12005,13 +11856,13 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-image-set-function/4.0.7_postcss@8.4.19: + /postcss-image-set-function/4.0.7_postcss@8.4.21: resolution: {integrity: sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -12021,12 +11872,12 @@ packages: postcss: ^8.0.0 dev: true - /postcss-initial/4.0.1_postcss@8.4.19: + /postcss-initial/4.0.1_postcss@8.4.21: resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 dev: true /postcss-lab-function/4.2.1: @@ -12039,14 +11890,14 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-lab-function/4.2.1_postcss@8.4.19: + /postcss-lab-function/4.2.1_postcss@8.4.21: resolution: {integrity: sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.19 - postcss: 8.4.19 + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -12061,7 +11912,7 @@ packages: resolution: {integrity: sha512-C92S4sHlbDpefJ2QQJjrucCcypq3+KZPstjfuvgOCNnGx0tF9h8hXgAlOIATGAxMXZXaF+nVp+/Mi8pCAWdSmw==} engines: {node: '>=10'} dependencies: - postcss: 8.4.19 + postcss: 8.4.21 dev: true /postcss-logical/5.0.4: @@ -12071,13 +11922,13 @@ packages: postcss: ^8.4 dev: true - /postcss-logical/5.0.4_postcss@8.4.19: + /postcss-logical/5.0.4_postcss@8.4.21: resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.4 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 dev: true /postcss-media-minmax/5.0.0: @@ -12087,58 +11938,58 @@ packages: postcss: ^8.1.0 dev: true - /postcss-media-minmax/5.0.0_postcss@8.4.19: + /postcss-media-minmax/5.0.0_postcss@8.4.21: resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==} engines: {node: '>=10.0.0'} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 dev: true /postcss-media-query-parser/0.2.3: resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} dev: true - /postcss-modules-extract-imports/3.0.0_postcss@8.4.19: + /postcss-modules-extract-imports/3.0.0_postcss@8.4.21: resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 dev: true - /postcss-modules-local-by-default/4.0.0_postcss@8.4.19: + /postcss-modules-local-by-default/4.0.0_postcss@8.4.21: resolution: {integrity: sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0_postcss@8.4.19 - postcss: 8.4.19 + icss-utils: 5.1.0_postcss@8.4.21 + postcss: 8.4.21 postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 dev: true - /postcss-modules-scope/3.0.0_postcss@8.4.19: + /postcss-modules-scope/3.0.0_postcss@8.4.21: resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-selector-parser: 6.0.11 dev: true - /postcss-modules-values/4.0.0_postcss@8.4.19: + /postcss-modules-values/4.0.0_postcss@8.4.21: resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0_postcss@8.4.19 - postcss: 8.4.19 + icss-utils: 5.1.0_postcss@8.4.21 + postcss: 8.4.21 dev: true /postcss-nesting/10.2.0: @@ -12151,20 +12002,31 @@ packages: postcss-selector-parser: 6.0.11 dev: true - /postcss-nesting/10.2.0_postcss@8.4.19: + /postcss-nesting/10.2.0_postcss@8.4.21: resolution: {integrity: sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - '@csstools/selector-specificity': 2.0.2_tbwh2mpcdwdeb2slx6bobindua - postcss: 8.4.19 + '@csstools/selector-specificity': 2.0.2_wajs5nedgkikc5pcuwett7legi + postcss: 8.4.21 postcss-selector-parser: 6.0.11 dev: true - /postcss-opacity-percentage/1.1.2: - resolution: {integrity: sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==} + /postcss-opacity-percentage/1.1.3: + resolution: {integrity: sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dev: true + + /postcss-opacity-percentage/1.1.3_postcss@8.4.21: + resolution: {integrity: sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==} engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.21 dev: true /postcss-overflow-shorthand/3.0.4: @@ -12176,13 +12038,13 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-overflow-shorthand/3.0.4_postcss@8.4.19: + /postcss-overflow-shorthand/3.0.4_postcss@8.4.21: resolution: {integrity: sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -12192,12 +12054,12 @@ packages: postcss: ^8 dev: true - /postcss-page-break/3.0.4_postcss@8.4.19: + /postcss-page-break/3.0.4_postcss@8.4.21: resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} peerDependencies: postcss: ^8 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 dev: true /postcss-place/7.0.5: @@ -12209,13 +12071,13 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-place/7.0.5_postcss@8.4.19: + /postcss-place/7.0.5_postcss@8.4.21: resolution: {integrity: sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -12268,7 +12130,7 @@ packages: postcss-logical: 5.0.4 postcss-media-minmax: 5.0.0 postcss-nesting: 10.2.0 - postcss-opacity-percentage: 1.1.2 + postcss-opacity-percentage: 1.1.3 postcss-overflow-shorthand: 3.0.4 postcss-page-break: 3.0.4 postcss-place: 7.0.5 @@ -12278,57 +12140,57 @@ packages: postcss-value-parser: 4.2.0 dev: true - /postcss-preset-env/7.5.0_postcss@8.4.19: + /postcss-preset-env/7.5.0_postcss@8.4.21: resolution: {integrity: sha512-0BJzWEfCdTtK2R3EiKKSdkE51/DI/BwnhlnicSW482Ym6/DGHud8K0wGLcdjip1epVX0HKo4c8zzTeV/SkiejQ==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.4 dependencies: - '@csstools/postcss-color-function': 1.1.1_postcss@8.4.19 - '@csstools/postcss-font-format-keywords': 1.0.1_postcss@8.4.19 - '@csstools/postcss-hwb-function': 1.0.2_postcss@8.4.19 - '@csstools/postcss-ic-unit': 1.0.1_postcss@8.4.19 - '@csstools/postcss-is-pseudo-class': 2.0.7_postcss@8.4.19 - '@csstools/postcss-normalize-display-values': 1.0.1_postcss@8.4.19 - '@csstools/postcss-oklab-function': 1.1.1_postcss@8.4.19 - '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.19 - '@csstools/postcss-stepped-value-functions': 1.0.1_postcss@8.4.19 - '@csstools/postcss-unset-value': 1.0.2_postcss@8.4.19 - autoprefixer: 10.4.13_postcss@8.4.19 + '@csstools/postcss-color-function': 1.1.1_postcss@8.4.21 + '@csstools/postcss-font-format-keywords': 1.0.1_postcss@8.4.21 + '@csstools/postcss-hwb-function': 1.0.2_postcss@8.4.21 + '@csstools/postcss-ic-unit': 1.0.1_postcss@8.4.21 + '@csstools/postcss-is-pseudo-class': 2.0.7_postcss@8.4.21 + '@csstools/postcss-normalize-display-values': 1.0.1_postcss@8.4.21 + '@csstools/postcss-oklab-function': 1.1.1_postcss@8.4.21 + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.21 + '@csstools/postcss-stepped-value-functions': 1.0.1_postcss@8.4.21 + '@csstools/postcss-unset-value': 1.0.2_postcss@8.4.21 + autoprefixer: 10.4.13_postcss@8.4.21 browserslist: 4.21.4 - css-blank-pseudo: 3.0.3_postcss@8.4.19 - css-has-pseudo: 3.0.4_postcss@8.4.19 - css-prefers-color-scheme: 6.0.3_postcss@8.4.19 + css-blank-pseudo: 3.0.3_postcss@8.4.21 + css-has-pseudo: 3.0.4_postcss@8.4.21 + css-prefers-color-scheme: 6.0.3_postcss@8.4.21 cssdb: 6.6.3 - postcss: 8.4.19 - postcss-attribute-case-insensitive: 5.0.2_postcss@8.4.19 - postcss-clamp: 4.1.0_postcss@8.4.19 - postcss-color-functional-notation: 4.2.4_postcss@8.4.19 - postcss-color-hex-alpha: 8.0.4_postcss@8.4.19 - postcss-color-rebeccapurple: 7.1.1_postcss@8.4.19 - postcss-custom-media: 8.0.2_postcss@8.4.19 - postcss-custom-properties: 12.1.11_postcss@8.4.19 - postcss-custom-selectors: 6.0.3_postcss@8.4.19 - postcss-dir-pseudo-class: 6.0.5_postcss@8.4.19 - postcss-double-position-gradients: 3.1.2_postcss@8.4.19 - postcss-env-function: 4.0.6_postcss@8.4.19 - postcss-focus-visible: 6.0.4_postcss@8.4.19 - postcss-focus-within: 5.0.4_postcss@8.4.19 - postcss-font-variant: 5.0.0_postcss@8.4.19 - postcss-gap-properties: 3.0.5_postcss@8.4.19 - postcss-image-set-function: 4.0.7_postcss@8.4.19 - postcss-initial: 4.0.1_postcss@8.4.19 - postcss-lab-function: 4.2.1_postcss@8.4.19 - postcss-logical: 5.0.4_postcss@8.4.19 - postcss-media-minmax: 5.0.0_postcss@8.4.19 - postcss-nesting: 10.2.0_postcss@8.4.19 - postcss-opacity-percentage: 1.1.2 - postcss-overflow-shorthand: 3.0.4_postcss@8.4.19 - postcss-page-break: 3.0.4_postcss@8.4.19 - postcss-place: 7.0.5_postcss@8.4.19 - postcss-pseudo-class-any-link: 7.1.6_postcss@8.4.19 - postcss-replace-overflow-wrap: 4.0.0_postcss@8.4.19 - postcss-selector-not: 5.0.0_postcss@8.4.19 + postcss: 8.4.21 + postcss-attribute-case-insensitive: 5.0.2_postcss@8.4.21 + postcss-clamp: 4.1.0_postcss@8.4.21 + postcss-color-functional-notation: 4.2.4_postcss@8.4.21 + postcss-color-hex-alpha: 8.0.4_postcss@8.4.21 + postcss-color-rebeccapurple: 7.1.1_postcss@8.4.21 + postcss-custom-media: 8.0.2_postcss@8.4.21 + postcss-custom-properties: 12.1.11_postcss@8.4.21 + postcss-custom-selectors: 6.0.3_postcss@8.4.21 + postcss-dir-pseudo-class: 6.0.5_postcss@8.4.21 + postcss-double-position-gradients: 3.1.2_postcss@8.4.21 + postcss-env-function: 4.0.6_postcss@8.4.21 + postcss-focus-visible: 6.0.4_postcss@8.4.21 + postcss-focus-within: 5.0.4_postcss@8.4.21 + postcss-font-variant: 5.0.0_postcss@8.4.21 + postcss-gap-properties: 3.0.5_postcss@8.4.21 + postcss-image-set-function: 4.0.7_postcss@8.4.21 + postcss-initial: 4.0.1_postcss@8.4.21 + postcss-lab-function: 4.2.1_postcss@8.4.21 + postcss-logical: 5.0.4_postcss@8.4.21 + postcss-media-minmax: 5.0.0_postcss@8.4.21 + postcss-nesting: 10.2.0_postcss@8.4.21 + postcss-opacity-percentage: 1.1.3_postcss@8.4.21 + postcss-overflow-shorthand: 3.0.4_postcss@8.4.21 + postcss-page-break: 3.0.4_postcss@8.4.21 + postcss-place: 7.0.5_postcss@8.4.21 + postcss-pseudo-class-any-link: 7.1.6_postcss@8.4.21 + postcss-replace-overflow-wrap: 4.0.0_postcss@8.4.21 + postcss-selector-not: 5.0.0_postcss@8.4.21 postcss-value-parser: 4.2.0 dev: true @@ -12341,13 +12203,13 @@ packages: postcss-selector-parser: 6.0.11 dev: true - /postcss-pseudo-class-any-link/7.1.6_postcss@8.4.19: + /postcss-pseudo-class-any-link/7.1.6_postcss@8.4.21: resolution: {integrity: sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==} engines: {node: ^12 || ^14 || >=16} peerDependencies: postcss: ^8.2 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-selector-parser: 6.0.11 dev: true @@ -12357,12 +12219,12 @@ packages: postcss: ^8.0.3 dev: true - /postcss-replace-overflow-wrap/4.0.0_postcss@8.4.19: + /postcss-replace-overflow-wrap/4.0.0_postcss@8.4.21: resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} peerDependencies: postcss: ^8.0.3 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 dev: true /postcss-resolve-nested-selector/0.1.1: @@ -12376,13 +12238,13 @@ packages: postcss: 7.0.39 dev: true - /postcss-safe-parser/6.0.0_postcss@8.4.19: + /postcss-safe-parser/6.0.0_postcss@8.4.21: resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.3.3 dependencies: - postcss: 8.4.19 + postcss: 8.4.21 dev: true /postcss-sass/0.4.4: @@ -12407,13 +12269,13 @@ packages: balanced-match: 1.0.2 dev: true - /postcss-selector-not/5.0.0_postcss@8.4.19: + /postcss-selector-not/5.0.0_postcss@8.4.21: resolution: {integrity: sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==} peerDependencies: postcss: ^8.1.0 dependencies: balanced-match: 1.0.2 - postcss: 8.4.19 + postcss: 8.4.21 dev: true /postcss-selector-parser/6.0.11: @@ -12424,13 +12286,13 @@ packages: util-deprecate: 1.0.2 dev: true - /postcss-sorting/6.0.0_postcss@8.4.19: + /postcss-sorting/6.0.0_postcss@8.4.21: resolution: {integrity: sha512-bYJ0vgAiGbjCBKi7B07CzsBc9eM84nLEbavUmwNp8rAa+PNyrgdH+6PpnqTtciLuUs99c4rFQQmCaYgeBQYmSQ==} peerDependencies: postcss: ^8.0.4 dependencies: lodash: 4.17.21 - postcss: 8.4.19 + postcss: 8.4.21 dev: true /postcss-syntax/0.36.2_kei4jy7wdgbhc236h4oijypxom: @@ -12460,7 +12322,7 @@ packages: postcss-scss: 2.1.1 dev: true - /postcss-syntax/0.36.2_postcss@8.4.19: + /postcss-syntax/0.36.2_postcss@8.4.21: resolution: {integrity: sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==} peerDependencies: postcss: '>=5.0.0' @@ -12481,7 +12343,7 @@ packages: postcss-scss: optional: true dependencies: - postcss: 8.4.19 + postcss: 8.4.21 dev: true /postcss-value-parser/4.2.0: @@ -12496,8 +12358,8 @@ packages: source-map: 0.6.1 dev: true - /postcss/8.4.19: - resolution: {integrity: sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==} + /postcss/8.4.21: + resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.4 @@ -12523,17 +12385,24 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - /prettier-plugin-organize-imports/2.3.4_2gbcgqmzq2pxiocqw2qs7hdeqe: - resolution: {integrity: sha512-R8o23sf5iVL/U71h9SFUdhdOEPsi3nm42FD/oDYIZ2PQa4TNWWuWecxln6jlIQzpZTDMUeO1NicJP6lLn2TtRw==} + /prettier-plugin-organize-imports/3.2.1_7zh76q2qrt7th5cvcxurl33jgy: + resolution: {integrity: sha512-bty7C2Ecard5EOXirtzeCAqj4FU4epeuWrQt/Z+sh8UVEpBlBZ3m3KNPz2kFu7KgRTQx/C9o4/TdquPD1jOqjQ==} peerDependencies: + '@volar/vue-language-plugin-pug': ^1.0.4 + '@volar/vue-typescript': ^1.0.4 prettier: '>=2.0' typescript: '>=2.9' + peerDependenciesMeta: + '@volar/vue-language-plugin-pug': + optional: true + '@volar/vue-typescript': + optional: true dependencies: - prettier: 2.8.1 + prettier: 2.8.2 typescript: 4.9.4 dev: true - /prettier-plugin-packagejson/2.3.0_prettier@2.8.1: + /prettier-plugin-packagejson/2.3.0_prettier@2.8.2: resolution: {integrity: sha512-2SAPMMk1UDkqsB7DifWKcwCm6VC52JXMrzLHfbcQHJRWhRCj9zziOy+s+2XOyPBeyqFqS+A/1IKzOrxKFTo6pw==} peerDependencies: prettier: '>= 1.16.0' @@ -12541,19 +12410,19 @@ packages: prettier: optional: true dependencies: - prettier: 2.8.1 + prettier: 2.8.2 sort-package-json: 1.57.0 dev: true - /prettier-plugin-two-style-order/1.0.1_prettier@2.8.1: + /prettier-plugin-two-style-order/1.0.1_prettier@2.8.2: resolution: {integrity: sha512-ETltO2FRR/Pxc7bsgz2XwuzWSPwafl7/v5+5Rria4S579CTas7dya+xsmbkix0q1tYQiuRjVVdfGnCKlH/aOuQ==} peerDependencies: prettier: '>= 2.0.0' dependencies: - postcss: 8.4.19 + postcss: 8.4.21 postcss-less: 4.0.1 - postcss-sorting: 6.0.0_postcss@8.4.19 - prettier: 2.8.1 + postcss-sorting: 6.0.0_postcss@8.4.21 + prettier: 2.8.2 dev: true /prettier/1.15.3: @@ -12562,8 +12431,8 @@ packages: hasBin: true dev: true - /prettier/2.8.1: - resolution: {integrity: sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==} + /prettier/2.8.2: + resolution: {integrity: sha512-BtRV9BcncDyI2tsuS19zzhzoxD8Dh8LiCx7j7tHzrkz8GFXAexeWFdi22mjE1d16dftH2qNaytVxqiRTGlMfpw==} engines: {node: '>=10.13.0'} hasBin: true dev: true @@ -12653,6 +12522,11 @@ packages: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: true + /prr/1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + dev: true + optional: true + /psl/1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true @@ -12683,8 +12557,8 @@ packages: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: true - /punycode/2.1.1: - resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + /punycode/2.2.0: + resolution: {integrity: sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==} engines: {node: '>=6'} /puppeteer-core/1.12.2: @@ -12709,12 +12583,19 @@ packages: /qiankun/2.8.4: resolution: {integrity: sha512-9MCKTJZpb0L7CcWC80jNr4TZz9m2Pvh9QWHNKJ7vZAEUMRZBbMl3+wCV1VBcUJJIgfRMU5G+ksoW142rMFA0Ew==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 import-html-entry: 1.14.0 lodash: 4.17.21 single-spa: 5.9.4 dev: true + /qrcode.react/3.1.0_react@18.2.0: + resolution: {integrity: sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + /qs/6.11.0: resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} engines: {node: '>=0.6'} @@ -12813,17 +12694,16 @@ packages: rc-util: 4.21.1 dev: true - /rc-align/4.0.12_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-3DuwSJp8iC/dgHzwreOQl52soj40LchlfUHtgACOUtwGuoFIOVh6n/sCpfqCU8kO5+iz6qR0YKvjgB8iPdE3aQ==} + /rc-align/4.0.15_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-wqJtVH60pka/nOX7/IspElA8gjPNQKIx/ZqJ6heATCkXpe1Zg4cPVrMD2vC96wjsFFL8WsmhPbx9tdMo1qqlIA==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 dom-align: 1.12.4 - lodash: 4.17.21 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 resize-observer-polyfill: 1.5.1 @@ -12851,12 +12731,28 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 array-tree-filter: 2.1.0 classnames: 2.3.2 rc-select: 14.1.16_biqbaboplfbrettd7655fr4n2y rc-tree: 5.7.2_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: true + + /rc-cascader/3.8.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-zCz/NzsNRQ1TIfiR3rQNxjeRvgRHEkNdo0FjHQZ6Ay6n4tdCmMrM7+81ThNaf21JLQ1gS2AUG2t5uikGV78obA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.7 + array-tree-filter: 2.1.0 + classnames: 2.3.2 + rc-select: 14.2.0_biqbaboplfbrettd7655fr4n2y + rc-tree: 5.7.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -12875,7 +12771,7 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -12898,10 +12794,10 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 @@ -12912,25 +12808,25 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 - '@rc-component/portal': 1.0.3_biqbaboplfbrettd7655fr4n2y + '@babel/runtime': 7.20.7 + '@rc-component/portal': 1.1.0_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 - rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - /rc-drawer/6.0.1_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-ibWXGf8I+KRPXE03X4s0/xXzQI37YWXUV+oPy+R29GKxkjr98UTMgwvoQDKlZTm5AiaRuVFqhTKm0kNHqJh+TQ==} + /rc-drawer/6.1.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-mYsTVT8Amy0LRrpVEv7gI1hOjtfMSO/qHAaCDzFx9QBLnms3cAQLJkaxRWM+Eq99oyLhU/JkgoqTg13bc4ogOQ==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 - '@rc-component/portal': 1.0.3_biqbaboplfbrettd7655fr4n2y + '@babel/runtime': 7.20.7 + '@rc-component/portal': 1.1.0_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 - rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -12940,10 +12836,10 @@ packages: react: '>=16.11.0' react-dom: '>=16.11.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -12954,9 +12850,9 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 async-validator: 4.2.5 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -12966,17 +12862,18 @@ packages: babel-runtime: 6.26.0 dev: true - /rc-image/5.12.1_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-FMldR/ODwQmlFlhjR4c6hsOHmnn4s9CxmW7PR/9XCYE1XHlGJ5OkSWOtJruoaLjVwt2tQYDRnLANf/mKZ9ReUg==} + /rc-image/5.13.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-iZTOmw5eWo2+gcrJMMcnd7SsxVHl3w5xlyCgsULUdJhJbnuI8i/AL0tVOsE7aLn9VfOh1qgDT3mC2G75/c7mqg==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 - '@rc-component/portal': 1.0.3_biqbaboplfbrettd7655fr4n2y + '@babel/runtime': 7.20.7 + '@rc-component/portal': 1.1.0_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 rc-dialog: 9.0.2_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -12986,9 +12883,9 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: true @@ -12999,10 +12896,10 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 '@rc-component/mini-decimal': 1.0.1 classnames: 2.3.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13012,9 +12909,9 @@ packages: react: '>=16.0.0' react-dom: '>=16.0.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13024,12 +12921,12 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 rc-menu: 9.8.1_biqbaboplfbrettd7655fr4n2y rc-textarea: 0.4.7_biqbaboplfbrettd7655fr4n2y rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13039,25 +12936,25 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y rc-overflow: 1.2.8_biqbaboplfbrettd7655fr4n2y rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 - /rc-motion/2.6.2_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-4w1FaX3dtV749P8GwfS4fYnFG4Rb9pxvCYPc/b2fw1cmlHJWNNgOFIz7ysiD+eOrzJSvnLJWlNQQncpNMXwwpg==} + /rc-motion/2.6.3_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-xFLkes3/7VL/J+ah9jJruEW/Akbx5F6jVa2wG5o/ApGKQKSOd5FR3rseHLL9+xtJg4PmCwo6/1tqhDO/T+jFHA==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13068,25 +12965,25 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: true - /rc-notification/5.0.0-alpha.9_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-QPvq8VHe2M0SE5DHJf7ADWlvfWKnTsj5FVxcu39gdjX98kKmi+BHY1eTPAQkkdGqd6ZXv6xXHl8qKHyWhQcFPA==} + /rc-notification/5.0.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-74wUFiLlyr6lRGEY1m1BaTiDp+0lIT4FRAblMnh9FApyK2JGdsSLbrQ/1rgM7d2N/IX5UIr8kLLW3TdXxFt/jQ==} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13096,10 +12993,10 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13109,7 +13006,7 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13121,20 +13018,20 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 date-fns: 2.29.3 dayjs: 1.11.7 moment: 2.29.4 rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 dev: true - /rc-picker/3.1.2_lejchghvacj3hhjkogy3eaalky: - resolution: {integrity: sha512-PHf4E91JANMBVjovqhRcZw0fDZYWlDW9APhMD8VxBSs2QeKbnf+vE5BdA3YmHq227woSptbkm9rfhR4dgSn4+g==} + /rc-picker/3.1.4_lejchghvacj3hhjkogy3eaalky: + resolution: {integrity: sha512-4qANXNc3C02YENNQvun329zf9VLvSQ2W8RkKQRu8k1P+EtSGqe3klcAKCfz/1TuCiDvgRjJlzRmyZAkwvsbI8w==} engines: {node: '>=8.x'} peerDependencies: date-fns: '>= 2.x' @@ -13150,12 +13047,12 @@ packages: moment: optional: true dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 dayjs: 1.11.7 moment: 2.29.4 rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 @@ -13166,9 +13063,9 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13179,21 +13076,21 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - /rc-resize-observer/1.2.0_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-6W+UzT3PyDM0wVCEHfoW3qTHPTvbdSgiA43buiy8PzmeMnfgnDeb9NjdimMXMl3/TcrvvWl5RRVdp+NqcR47pQ==} + /rc-resize-observer/1.2.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-g53PnWLeVOmt4XWkt2x+QlIdf/PhJSd7JqHhtMrUY370e7wJ+kxbgXicYqvENUcgFiiOiMCd07YsC2GNsoSbnA==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 resize-observer-polyfill: 1.5.1 @@ -13204,10 +13101,10 @@ packages: react: '>=16.0.0' react-dom: '>=16.0.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13218,13 +13115,31 @@ packages: react: '*' react-dom: '*' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 + classnames: 2.3.2 + rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y + rc-overflow: 1.2.8_biqbaboplfbrettd7655fr4n2y + rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-virtual-list: 3.4.13_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: true + + /rc-select/14.2.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-tvxHmbAA0EIhBkB7dyaRhcBUIWHocQbUFY/fBlezj2jg5p65a5VQ/UhBg2I9TA1wjpsr5CCx0ruZPkYcUMjDoQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y rc-overflow: 1.2.8_biqbaboplfbrettd7655fr4n2y rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y - rc-virtual-list: 3.4.11_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-virtual-list: 3.4.13_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13235,9 +13150,9 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 @@ -13264,23 +13179,23 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: true - /rc-steps/6.0.0-alpha.2_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-d/GPx7ATlPbtFeOVt5FB19W11OBCmRd7lLknt4aSoCI6ukwJqpEhWu2INN4pDOQqN04y3PDsWl1q9hnw+ZC5AA==} + /rc-steps/6.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-+KfMZIty40mYCQSDvYbZ1jwnuObLauTiIskT1hL4FFOBHP6ZOr8LK0m143yD3kEN5XKHSEX1DIwCj3AYZpoeNQ==} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13299,9 +13214,9 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: true @@ -13312,9 +13227,9 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13325,28 +13240,44 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 + dev: true + + /rc-table/7.30.3_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-PHe+lZKwPo3qui5j79m54vKu8b4hebk04x+4Hy65NvwUU3+NNFGS5FZpylXQMkueMnE8hgh22ZuScQDkCtzQFQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.7 + '@rc-component/context': 1.3.0_biqbaboplfbrettd7655fr4n2y + classnames: 2.3.2 + rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 - /rc-tabs/12.4.2_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-FFlGwuTjQUznWzJtyhmHc6KAp5lRQFxKUv9Aj1UtsOYe2e7WGmuzcrd+/LQchuPe0VjhaZPdGkmFGcqGqNO6ow==} + /rc-tabs/12.5.6_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-aArXHzxK7YICxe+622CZ8FlO5coMi8P7E6tXpseCPKm1gdTjUt0LrQK1/AxcrRXZXG3K4QqhlKmET0+cX5DQaQ==} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 rc-dropdown: 4.0.1_biqbaboplfbrettd7655fr4n2y rc-menu: 9.8.1_biqbaboplfbrettd7655fr4n2y - rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y - rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13356,10 +13287,10 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 @@ -13381,7 +13312,7 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y react: 18.2.0 @@ -13393,11 +13324,26 @@ packages: react: '*' react-dom: '*' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 rc-select: 14.1.16_biqbaboplfbrettd7655fr4n2y rc-tree: 5.7.2_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: true + + /rc-tree-select/5.6.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-XG6pu0a9l6+mzhQqUYfR2VIONbe/3LjVc3wKt28k6uBMZsI1j+SSxRyt/7jWRq8Kok8jHJBQASlDg6ehr9Sp0w==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.20.7 + classnames: 2.3.2 + rc-select: 14.2.0_biqbaboplfbrettd7655fr4n2y + rc-tree: 5.7.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13408,11 +13354,11 @@ packages: react: '*' react-dom: '*' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y - rc-virtual-list: 3.4.11_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-virtual-list: 3.4.13_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13438,11 +13384,11 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-align: 4.0.12_biqbaboplfbrettd7655fr4n2y - rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-align: 4.0.15_biqbaboplfbrettd7655fr4n2y + rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13452,9 +13398,9 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13467,48 +13413,47 @@ packages: react-lifecycles-compat: 3.0.4 shallowequal: 1.1.0 - /rc-util/5.25.2_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-OyCO675K/rh4zG3e+LYaHw54WQFEYGV9ibkGawQxqCvf0G0PzUrLQjgZ6SfoHORdbEKN7eQMFn3hHQyA/P8Y5Q==} + /rc-util/5.27.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-PsjHA+f+KBCz+YTZxrl3ukJU5RoNKoe3KSNMh0xGiISbR67NaM9E9BiMjCwxa3AcCUOg/rZ+V0ZKLSimAA+e3w==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-is: 16.13.1 - shallowequal: 1.1.0 - /rc-virtual-list/3.4.11_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-BvUUH60kkeTBPigN5F89HtGaA5jSP4y2aM6cJ4dk9Y42I9yY+h6i08wF6UKeDcxdfOU8j3I5HxkSS/xA77J3wA==} + /rc-virtual-list/3.4.13_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-cPOVDmcNM7rH6ANotanMDilW/55XnFPw0Jh/GQYtrzZSy3AmWvCnqVNyNC/pgg3lfVmX2994dlzAhuUrd4jG7w==} engines: {node: '>=8.x'} peerDependencies: react: '*' react-dom: '*' dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 classnames: 2.3.2 - rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y - rc-util: 5.25.2_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - /react-dev-inspector/1.8.3_tn6ozhzi5twwqsvqh5iimryhr4: - resolution: {integrity: sha512-okeWjG5M6BUpOzN1jymdnnx9cnTcj+4V0x8pmQkhToNMWEtn7IvihC0WIm3OXHgMXBfKg/lXE7s+0yoW2YWNmw==} + /react-dev-inspector/1.8.4_ol4nhuzbuflsbzk2mijpqykzba: + resolution: {integrity: sha512-+MpF43RHTKjkilQ4TgUfSgpVlJFKpL4uPc/0FBJAMNPICYxw27q81++AcBIThfxFmBgsFbMj3EKZwkaPZ43V7w==} engines: {node: '>=12.0.0'} peerDependencies: react: '>=16.8.0' dependencies: - '@babel/core': 7.20.5 - '@babel/generator': 7.20.5 - '@babel/parser': 7.20.5 - '@babel/traverse': 7.20.5 - '@babel/types': 7.20.5 + '@babel/core': 7.20.12 + '@babel/generator': 7.20.7 + '@babel/parser': 7.20.7 + '@babel/traverse': 7.20.12 + '@babel/types': 7.20.7 hotkeys-js: 3.10.1 loader-utils: 2.0.4 querystring: 0.2.1 react: 18.2.0 - react-dev-utils: 12.0.1_ha6vam6werchizxrnqvarmz2zu + react-dev-utils: 12.0.1_iukboom6ndih5an6iafl45j2fe transitivePeerDependencies: - eslint - supports-color @@ -13517,7 +13462,7 @@ packages: - webpack dev: false - /react-dev-utils/12.0.1_ha6vam6werchizxrnqvarmz2zu: + /react-dev-utils/12.0.1_iukboom6ndih5an6iafl45j2fe: resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -13528,7 +13473,7 @@ packages: optional: true dependencies: '@babel/code-frame': 7.18.6 - address: 1.2.1 + address: 1.2.2 browserslist: 4.21.4 chalk: 4.1.2 cross-spawn: 7.0.3 @@ -13536,11 +13481,11 @@ packages: escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.2_ha6vam6werchizxrnqvarmz2zu + fork-ts-checker-webpack-plugin: 6.5.2_iukboom6ndih5an6iafl45j2fe global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 - immer: 9.0.16 + immer: 9.0.17 is-root: 2.1.0 loader-utils: 3.2.1 open: 8.4.0 @@ -13579,11 +13524,6 @@ packages: /react-error-overlay/6.0.11: resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} - dev: false - - /react-error-overlay/6.0.9: - resolution: {integrity: sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==} - dev: true /react-fast-compare/3.2.0: resolution: {integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==} @@ -13594,7 +13534,7 @@ packages: react: ^16.6.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 invariant: 2.2.4 prop-types: 15.8.1 react: 18.2.0 @@ -13608,7 +13548,7 @@ packages: react: ^16.6.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 invariant: 2.2.4 prop-types: 15.8.1 react: 18.1.0 @@ -13676,8 +13616,8 @@ packages: react-native: optional: true dependencies: - '@babel/runtime': 7.20.6 - '@types/react-redux': 7.1.24 + '@babel/runtime': 7.20.7 + '@types/react-redux': 7.1.25 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -13686,7 +13626,7 @@ packages: react-is: 17.0.2 dev: true - /react-redux/8.0.5_6fpxtwwxc52cyvwzdgczt4jvpq: + /react-redux/8.0.5_gm3gubmwja4o7q6fr6adx3fpz4: resolution: {integrity: sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==} peerDependencies: '@types/react': ^16.8 || ^17.0 || ^18.0 @@ -13707,10 +13647,10 @@ packages: redux: optional: true dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 '@types/hoist-non-react-statics': 3.3.1 '@types/react': 18.0.26 - '@types/react-dom': 18.0.9 + '@types/react-dom': 18.0.10 '@types/use-sync-external-store': 0.0.3 hoist-non-react-statics: 3.3.2 react: 18.2.0 @@ -13720,11 +13660,6 @@ packages: use-sync-external-store: 1.2.0_react@18.2.0 dev: true - /react-refresh/0.11.0: - resolution: {integrity: sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==} - engines: {node: '>=0.10.0'} - dev: true - /react-refresh/0.14.0: resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} engines: {node: '>=0.10.0'} @@ -13754,17 +13689,17 @@ packages: react-router: 6.3.0_react@18.1.0 dev: true - /react-router-dom/6.4.5_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-a7HsgikBR0wNfroBHcZUCd9+mLRqZS8R5U1Z1mzLWxFXEkUT3vR1XXmSIVoVpxVX8Bar0nQYYYc9Yipq8dWwAA==} + /react-router-dom/6.6.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-6SCDXxRQqW5af8ImOqKza7icmQ47/EMbz572uFjzvcArg3lZ+04PxSPp8qGs+p2Y+q+b+S/AjXv8m8dyLndIIA==} engines: {node: '>=14'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@remix-run/router': 1.0.5 + '@remix-run/router': 1.2.1 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-router: 6.4.5_react@18.2.0 + react-router: 6.6.2_react@18.2.0 dev: true /react-router/6.3.0_react@18.1.0: @@ -13785,13 +13720,13 @@ packages: react: 18.2.0 dev: true - /react-router/6.4.5_react@18.2.0: - resolution: {integrity: sha512-1RQJ8bM70YEumHIlNUYc6mFfUDoWa5EgPDenK/fq0bxD8DYpQUi/S6Zoft+9DBrh2xmtg92N5HMAJgGWDhKJ5Q==} + /react-router/6.6.2_react@18.2.0: + resolution: {integrity: sha512-uJPG55Pek3orClbURDvfljhqFvMgJRo59Pktywkk8hUUkTY2aRfza8Yhl/vZQXs+TNQyr6tu+uqz/fLxPICOGQ==} engines: {node: '>=14'} peerDependencies: react: '>=16.8' dependencies: - '@remix-run/router': 1.0.5 + '@remix-run/router': 1.2.1 react: 18.2.0 dev: true @@ -13801,7 +13736,7 @@ packages: react: ^16.3.0 || ^17.0.0 react-dom: ^16.3.0 || ^17.0.0 dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 invariant: 2.2.4 prop-types: 15.8.1 react: 18.2.0 @@ -13917,7 +13852,7 @@ packages: /redux/4.2.0: resolution: {integrity: sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 dev: true /reflect.getprototypeof/1.0.3: @@ -13926,7 +13861,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.5 + es-abstract: 1.21.1 get-intrinsic: 1.1.3 globalthis: 1.0.3 which-builtin-type: 1.1.3 @@ -13961,14 +13896,10 @@ packages: /regenerator-runtime/0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - /regenerator-runtime/0.13.9: - resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} - dev: true - /regenerator-transform/0.15.1: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: - '@babel/runtime': 7.20.6 + '@babel/runtime': 7.20.7 dev: true /regexp-tree/0.1.24: @@ -14041,6 +13972,10 @@ packages: - supports-color dev: true + /remove-accents/0.4.2: + resolution: {integrity: sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==} + dev: true + /renderkid/3.0.0: resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} dependencies: @@ -14062,7 +13997,7 @@ packages: deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 dependencies: aws-sign2: 0.7.0 - aws4: 1.11.0 + aws4: 1.12.0 caseless: 0.12.0 combined-stream: 1.0.8 extend: 3.0.2 @@ -14120,8 +14055,8 @@ packages: engines: {node: '>=8'} dev: true - /resolve.exports/1.1.0: - resolution: {integrity: sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==} + /resolve.exports/1.1.1: + resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} engines: {node: '>=10'} dev: true @@ -14338,26 +14273,37 @@ packages: - react-dom dev: true - /rollup-plugin-visualizer/5.6.0: - resolution: {integrity: sha512-CKcc8GTUZjC+LsMytU8ocRr/cGZIfMR7+mdy4YnlyetlmIl/dM8BMnOEpD4JPIGt+ZVW7Db9ZtSsbgyeBH3uTA==} - engines: {node: '>=12'} + /rollup-plugin-visualizer/5.9.0: + resolution: {integrity: sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==} + engines: {node: '>=14'} hasBin: true peerDependencies: - rollup: ^2.0.0 + rollup: 2.x || 3.x + peerDependenciesMeta: + rollup: + optional: true dependencies: - nanoid: 3.3.4 open: 8.4.0 + picomatch: 2.3.1 source-map: 0.7.4 yargs: 17.6.2 dev: true + /rollup/2.79.1: + resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + /run-parallel/1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - /rxjs/7.6.0: - resolution: {integrity: sha512-DDa7d8TFNUalGC9VqXvQ1euWNN7sc63TrUCuM9J998+ViviahMIjKSOU7rfcgFOF+FCD71BhDRv4hrFz+ImDLQ==} + /rxjs/7.8.0: + resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} dependencies: tslib: 2.4.1 dev: true @@ -14384,8 +14330,8 @@ packages: regexp-tree: 0.1.24 dev: true - /safe-stable-stringify/2.4.1: - resolution: {integrity: sha512-dVHE6bMtS/bnL2mwualjc6IxEv1F+OCUpA46pKUj6F8uDbUM0jCCulPqRNPSnWwGNKx5etqMjZYdXtrm5KJZGA==} + /safe-stable-stringify/2.4.2: + resolution: {integrity: sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==} engines: {node: '>=10'} dev: true @@ -14393,6 +14339,11 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true + /sax/1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + dev: true + optional: true + /saxes/6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} @@ -14438,6 +14389,12 @@ packages: resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} dependencies: compute-scroll-into-view: 1.0.20 + dev: true + + /scroll-into-view-if-needed/3.0.4: + resolution: {integrity: sha512-s+/F50jwTOUt+u5oEIAzum9MN2lUQNvWBe/zfEsVQcbaERjGkKLq1s+2wCHkahMLC8nMLbzMVKivx9JhunXaZg==} + dependencies: + compute-scroll-into-view: 2.0.4 /select-hose/2.0.0: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} @@ -14584,7 +14541,7 @@ packages: dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.3 - object-inspect: 1.12.2 + object-inspect: 1.12.3 dev: true /signal-exit/3.0.7: @@ -14869,10 +14826,10 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.5 + es-abstract: 1.21.1 get-intrinsic: 1.1.3 has-symbols: 1.0.3 - internal-slot: 1.0.3 + internal-slot: 1.0.4 regexp.prototype.flags: 1.4.3 side-channel: 1.0.4 dev: true @@ -14882,7 +14839,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.5 + es-abstract: 1.21.1 dev: true /string.prototype.trimstart/1.0.6: @@ -14890,7 +14847,7 @@ packages: dependencies: call-bind: 1.0.2 define-properties: 1.1.4 - es-abstract: 1.20.5 + es-abstract: 1.21.1 dev: true /string_decoder/0.10.31: @@ -14967,22 +14924,60 @@ packages: babel-plugin-styled-components: optional: true dependencies: - '@babel/cli': 7.19.3_@babel+core@7.20.5 - '@babel/core': 7.20.5 + '@babel/cli': 7.20.7_@babel+core@7.20.12 + '@babel/core': 7.20.12 '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-external-helpers': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.5 - '@babel/plugin-proposal-object-rest-spread': 7.20.2_@babel+core@7.20.5 - '@babel/preset-env': 7.20.2_@babel+core@7.20.5 - '@babel/preset-react': 7.18.6_@babel+core@7.20.5 - '@babel/preset-typescript': 7.18.6_@babel+core@7.20.5 - '@babel/traverse': 7.20.5 + '@babel/plugin-external-helpers': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.20.12 + '@babel/preset-env': 7.20.2_@babel+core@7.20.12 + '@babel/preset-react': 7.18.6_@babel+core@7.20.12 + '@babel/preset-typescript': 7.18.6_@babel+core@7.20.12 + '@babel/traverse': 7.20.12 '@emotion/unitless': 0.7.5 - css-to-react-native: 3.0.0 + css-to-react-native: 3.1.0 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + shallowequal: 1.1.0 + stylis: 4.1.3 + transitivePeerDependencies: + - supports-color + dev: true + + /styled-components/6.0.0-beta.9_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-RYtmvWZForwSd24aZgi3iGZM/6HvJkP7zobHK+bwC01vI6QhHK5MX9ayXEnJWaFY7DoEWoAnar5ACiGVkTCoCQ==} + engines: {node: '>= 14'} + peerDependencies: + babel-plugin-styled-components: '>= 2' + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + peerDependenciesMeta: + babel-plugin-styled-components: + optional: true + shallowequal: + optional: true + stylis: + optional: true + tslib: + optional: true + dependencies: + '@babel/cli': 7.20.7_@babel+core@7.20.12 + '@babel/core': 7.20.12 + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-external-helpers': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.12 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.20.12 + '@babel/preset-env': 7.20.2_@babel+core@7.20.12 + '@babel/preset-react': 7.18.6_@babel+core@7.20.12 + '@babel/preset-typescript': 7.18.6_@babel+core@7.20.12 + '@babel/traverse': 7.20.12 + '@emotion/unitless': 0.8.0 + css-to-react-native: 3.1.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 stylis: 4.1.3 + tslib: 2.4.1 transitivePeerDependencies: - supports-color dev: true @@ -15083,7 +15078,7 @@ packages: globby: 11.1.0 globjoin: 0.1.4 html-tags: 3.2.0 - ignore: 5.2.1 + ignore: 5.2.4 import-lazy: 4.0.0 imurmurhash: 0.1.4 known-css-properties: 0.21.0 @@ -15140,7 +15135,7 @@ packages: globby: 11.1.0 globjoin: 0.1.4 html-tags: 3.2.0 - ignore: 5.2.1 + ignore: 5.2.4 import-lazy: 4.0.0 imurmurhash: 0.1.4 is-plain-object: 5.0.0 @@ -15151,10 +15146,10 @@ packages: normalize-path: 3.0.0 normalize-selector: 0.2.0 picocolors: 1.0.0 - postcss: 8.4.19 + postcss: 8.4.21 postcss-media-query-parser: 0.2.3 postcss-resolve-nested-selector: 0.1.1 - postcss-safe-parser: 6.0.0_postcss@8.4.19 + postcss-safe-parser: 6.0.0_postcss@8.4.21 postcss-selector-parser: 6.0.11 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 @@ -15180,6 +15175,13 @@ packages: postcss: 7.0.39 dev: true + /superjson/1.12.1: + resolution: {integrity: sha512-HMTj43zvwW5bD+JCZCvFf4DkZQCmiLTen4C+W1Xogj0SPOpnhxsriogM04QmBVGH5b3kcIIOr6FqQ/aoIDx7TQ==} + engines: {node: '>=10'} + dependencies: + copy-anything: 3.0.3 + dev: true + /supports-color/5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -15242,7 +15244,7 @@ packages: hasBin: true dependencies: call-me-maybe: 1.0.2 - node-fetch: 2.6.7 + node-fetch: 2.6.8 node-fetch-h2: 2.3.0 node-readfiles: 0.2.0 oas-kit-common: 1.0.8 @@ -15256,12 +15258,14 @@ packages: - encoding dev: true - /swr/1.3.0_react@18.2.0: - resolution: {integrity: sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==} + /swr/2.0.0_react@18.2.0: + resolution: {integrity: sha512-IhUx5yPkX+Fut3h0SqZycnaNLXLXsb2ECFq0Y29cxnK7d8r7auY2JWNbCW3IX+EqXUg3rwNJFlhrw5Ye/b6k7w==} + engines: {pnpm: '7'} peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 dependencies: react: 18.2.0 + use-sync-external-store: 1.2.0_react@18.2.0 /symbol-tree/3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -15271,7 +15275,7 @@ packages: resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} engines: {node: '>=10.0.0'} dependencies: - ajv: 8.11.2 + ajv: 8.12.0 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 @@ -15317,6 +15321,10 @@ packages: real-require: 0.1.0 dev: true + /throttle-debounce/5.0.0: + resolution: {integrity: sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==} + engines: {node: '>=12.22'} + /through/2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true @@ -15339,8 +15347,8 @@ packages: resolution: {integrity: sha512-uHNGu4evFt/8eNLldazeAM1M8JrMc1jshhJJfVRARTN3yT8HEEibofeQ7QETWQ5ISBjd6fKtTVBCC/+mGS6FpA==} dev: true - /tinycolor2/1.4.2: - resolution: {integrity: sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==} + /tinycolor2/1.5.2: + resolution: {integrity: sha512-h80m9GPFGbcLzZByXlNSEhp1gf8Dy+VX/2JCGUZsWLo7lV1mnE/XlxGYgRBoMLJh1lIDXP0EMC4RPTjlRaV+Bg==} /tmpl/1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -15378,7 +15386,7 @@ packages: engines: {node: '>=0.8'} dependencies: psl: 1.9.0 - punycode: 2.1.1 + punycode: 2.2.0 dev: true /tough-cookie/4.1.2: @@ -15386,7 +15394,7 @@ packages: engines: {node: '>=6'} dependencies: psl: 1.9.0 - punycode: 2.1.1 + punycode: 2.2.0 universalify: 0.2.0 url-parse: 1.5.10 dev: true @@ -15399,7 +15407,7 @@ packages: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} dependencies: - punycode: 2.1.1 + punycode: 2.2.0 dev: true /trim-newlines/3.0.1: @@ -15466,8 +15474,8 @@ packages: typescript: 4.9.4 dev: true - /tsx/3.12.1: - resolution: {integrity: sha512-Rcg1x+rNe7qwlP8j7kx4VjP/pJo/V57k+17hlrn6a7FuQLNwkaw5W4JF75tYornNVCxkXdSUnqlIT8JY/ttvIw==} + /tsx/3.12.2: + resolution: {integrity: sha512-ykAEkoBg30RXxeOMVeZwar+JH632dZn9EUJVyJwhfag62k6UO/dIyJEV58YuLF6e5BTdV/qmbQrpkWqjq9cUnQ==} hasBin: true dependencies: '@esbuild-kit/cjs-loader': 2.4.1 @@ -15553,6 +15561,14 @@ packages: resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} dev: true + /typed-array-length/1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.10 + dev: true + /typedarray-to-buffer/3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: @@ -15578,12 +15594,12 @@ packages: resolution: {integrity: sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==} dev: true - /umi-presets-pro/2.0.0_reqejh5yylq3ssqvxkfphxdmza: + /umi-presets-pro/2.0.0_aegj6e4bshbj2ek6a2qagy3lt4: resolution: {integrity: sha512-x/aQygHQlRl9TcHQf90thEfJaDaZjAVeh/R3iYnj9SZAZmZT9vzkvmjVGHanppYiA6yAo1MJtxI6zgDETv3tUA==} dependencies: - '@alita/plugins': 3.2.6_reqejh5yylq3ssqvxkfphxdmza + '@alita/plugins': 3.2.7_aegj6e4bshbj2ek6a2qagy3lt4 '@umijs/max-plugin-openapi': 2.0.0 - '@umijs/plugins': 4.0.35_reqejh5yylq3ssqvxkfphxdmza + '@umijs/plugins': 4.0.44_aegj6e4bshbj2ek6a2qagy3lt4 '@umijs/request-record': 1.1.2 swagger-ui-dist: 4.15.5 transitivePeerDependencies: @@ -15629,28 +15645,30 @@ packages: slash2: 2.0.0 dev: true - /umi/4.0.35_ew6kx7lupa6qwvuxl2p2nnz2da: - resolution: {integrity: sha512-5+k3dp19X51hoGimdzyk4igztm4Mx0AvcEgHVkJcEj/cFo2ydzVoDhjofqnGkpwoLPovu4aU4dLpFS6zZaT13g==} + /umi/4.0.44_jmsqo4zypbbjozzwpr4bmyrgiu: + resolution: {integrity: sha512-I1vdihqCQZXC4z6tAYa8jJKHCgBCyTtwdSZGx3NsdQDsNPELy/nXw0hdhBM/cHaISJxsluVs1xlUXevAJfBItA==} engines: {node: '>=14'} hasBin: true dependencies: - '@babel/runtime': 7.18.9 - '@umijs/bundler-utils': 4.0.35 - '@umijs/bundler-webpack': 4.0.35_typescript@4.9.4 - '@umijs/core': 4.0.35 - '@umijs/lint': 4.0.35_p4csibq5ks3vioan4srswcqg5u - '@umijs/preset-umi': 4.0.35_gxci7zjypbzwkagmgqo6pdnhwa - '@umijs/renderer-react': 4.0.35_biqbaboplfbrettd7655fr4n2y - '@umijs/server': 4.0.35 - '@umijs/test': 4.0.35 - '@umijs/utils': 4.0.35 - prettier-plugin-organize-imports: 2.3.4_2gbcgqmzq2pxiocqw2qs7hdeqe - prettier-plugin-packagejson: 2.3.0_prettier@2.8.1 + '@babel/runtime': 7.20.7 + '@umijs/bundler-utils': 4.0.44 + '@umijs/bundler-webpack': 4.0.44_typescript@4.9.4 + '@umijs/core': 4.0.44 + '@umijs/lint': 4.0.44_wgtjig7p4wmwivl42uyznyoani + '@umijs/preset-umi': 4.0.44_gxci7zjypbzwkagmgqo6pdnhwa + '@umijs/renderer-react': 4.0.44_biqbaboplfbrettd7655fr4n2y + '@umijs/server': 4.0.44 + '@umijs/test': 4.0.44 + '@umijs/utils': 4.0.44 + prettier-plugin-organize-imports: 3.2.1_7zh76q2qrt7th5cvcxurl33jgy + prettier-plugin-packagejson: 2.3.0_prettier@2.8.2 transitivePeerDependencies: - '@babel/core' + - '@types/node' - '@types/react' - '@types/webpack' - - encoding + - '@volar/vue-language-plugin-pug' + - '@volar/vue-typescript' - eslint - jest - postcss @@ -15663,10 +15681,14 @@ packages: - react - react-dom - rollup + - sass - sockjs-client - styled-components - stylelint + - stylus + - sugarss - supports-color + - terser - type-fest - typescript - vue-template-compiler @@ -15689,8 +15711,8 @@ packages: resolution: {integrity: sha512-cp0oQQyZhUM1kpJDLdGO1jPZHgS/MpzoWYfe9+CM2h/QGDZlqwT2T3YGukuBdaNJ/CAPoeyAZRRHz8JFo176vA==} dev: true - /unfetch/4.2.0: - resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} + /unfetch/5.0.0: + resolution: {integrity: sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg==} dev: true /unicode-canonical-property-names-ecmascript/2.0.0: @@ -15779,7 +15801,7 @@ packages: /uri-js/4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - punycode: 2.1.1 + punycode: 2.2.0 /url-parse/1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} @@ -15828,7 +15850,6 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: react: 18.2.0 - dev: true /util-deprecate/1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -15944,6 +15965,40 @@ packages: vfile-message: 2.0.4 dev: true + /vite/3.2.5_less@4.1.3: + resolution: {integrity: sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.15.18 + less: 4.1.3 + postcss: 8.4.21 + resolve: 1.22.1 + rollup: 2.79.1 + optionalDependencies: + fsevents: 2.3.2 + dev: true + /vm-browserify/1.1.2: resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} dev: true @@ -15984,6 +16039,11 @@ packages: defaults: 1.0.4 dev: true + /web-streams-polyfill/3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} + dev: true + /webidl-conversions/3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: true @@ -16142,12 +16202,12 @@ packages: async-limiter: 1.0.1 dev: true - /ws/8.11.0: - resolution: {integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==} + /ws/8.12.0: + resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 + utf-8-validate: '>=5.0.2' peerDependenciesMeta: bufferutil: optional: true @@ -16174,6 +16234,9 @@ packages: engines: {node: '>=10'} dev: true + /yallist/3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} diff --git a/src/app.tsx b/src/app.tsx index 42f7c66c..6b151582 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -39,12 +39,12 @@ export async function getInitialState(): Promise<{ return { fetchUserInfo, currentUser, - settings: defaultSettings, + settings: defaultSettings as Partial, }; } return { fetchUserInfo, - settings: defaultSettings, + settings: defaultSettings as Partial, }; } diff --git a/types/index.d.ts b/types/index.d.ts index 39723937..2c2805a9 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -5,7 +5,7 @@ export namespace API { token: string; }; - export type GET_API_CURRENT_USER_PAYLOAD = {}; + export type GET_API_CURRENT_USER_PAYLOAD = Record; export type GET_API_CURRENT_USER_RES = { /** example: {"name": "Serati Ma", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png", "userid": "00000001", "email": "antdesign@alipay.com", "signature": "海纳百川,有容乃大", "title": "交互专家", "group": "蚂蚁金服-某某某事业群-某某平台部-某某技术部-UED", "tags": [{"key": "0", "label": "很有想法的"}, {"key": "1", "label": "专注设计"}, {"key": "2", "label": "辣~"}, {"key": "3", "label": "大长腿"}, {"key": "4", "label": "川妹子"}, {"key": "5", "label": "海纳百川"}], "notifyCount": 12, "unreadCount": 11, "country": "China", "geographic": {"province": {"label": "浙江省", "key": "330000"}, "city": {"label": "杭州市", "key": "330100"}}, "address": "西湖区工专路 77 号", "phone": "0752-268888888"} */ @@ -49,7 +49,7 @@ export namespace API { pageSize: string; }; - export type GET_API_RULE_PAYLOAD = {}; + export type GET_API_RULE_PAYLOAD = Record; export type GET_API_RULE_RES = { /** example: [{"key": 99, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 99", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 503, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 81}, {"key": 98, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 98", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 164, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 12}, {"key": 97, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 97", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 174, "status": "1", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 81}, {"key": 96, "disabled": true, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 96", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 914, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 7}, {"key": 95, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 95", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 698, "status": "2", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 82}, {"key": 94, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 94", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 488, "status": "1", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 14}, {"key": 93, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 93", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 580, "status": "2", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 77}, {"key": 92, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 92", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 244, "status": "3", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 58}, {"key": 91, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 91", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 959, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 66}, {"key": 90, "disabled": true, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 90", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 958, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 72}, {"key": 89, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 89", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 301, "status": "2", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 2}, {"key": 88, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 88", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 277, "status": "1", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 12}, {"key": 87, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 87", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 810, "status": "1", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 82}, {"key": 86, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 86", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 780, "status": "3", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 22}, {"key": 85, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 85", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 705, "status": "3", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 12}, {"key": 84, "disabled": true, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 84", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 203, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 79}, {"key": 83, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 83", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 491, "status": "2", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 59}, {"key": 82, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 82", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 73, "status": "0", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 100}, {"key": 81, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/udxAbMEhpwthVVcjLXik.png", "name": "TradeCode 81", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 406, "status": "3", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 61}, {"key": 80, "disabled": false, "href": "https: //ant.design", "avatar": "https: //gw.alipayobjects.com/zos/rmsportal/eeHMaZBwmTvLdIwMfBpg.png", "name": "TradeCode 80", "owner": "曲丽丽", "desc": "这是一段描述", "callNo": 112, "status": "2", "updatedAt": "2022-12-06T05: 00: 57.040Z", "createdAt": "2022-12-06T05: 00: 57.040Z", "progress": 20}] */ @@ -83,11 +83,11 @@ export namespace API { token: string; }; - export type POST_API_LOGIN_OUT_LOGIN_PAYLOAD = {}; + export type POST_API_LOGIN_OUT_LOGIN_PAYLOAD = Record; export type POST_API_LOGIN_OUT_LOGIN_RES = { /** example: {} */ - data: {}; + data: Record; /** example: true */ success: boolean; }; From 8287612333fb4e86810bab3f463ba3b2adf823b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Fri, 13 Jan 2023 17:45:20 +0800 Subject: [PATCH 85/89] chore: ypdate snapshot --- pnpm-lock.yaml | 46 +++++++++++-------- .../Login/__snapshots__/login.test.tsx.snap | 8 +++- 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f921c339..7c1b4f5d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -86,7 +86,7 @@ devDependencies: swagger-ui-dist: 4.15.5 ts-node: 10.9.1_typescript@4.9.4 typescript: 4.9.4 - umi-presets-pro: 2.0.0_aegj6e4bshbj2ek6a2qagy3lt4 + umi-presets-pro: 2.0.2_aegj6e4bshbj2ek6a2qagy3lt4 packages: @@ -4653,8 +4653,8 @@ packages: - typescript dev: true - /@umijs/max-plugin-openapi/2.0.0: - resolution: {integrity: sha512-yLyLvNT5wr8fMaSeSKY5HcS53chCKR8RtQnV8OcYwz4tCpSaWLVA0aRK9L4TkFEHxYf6MebhKrHV96Xeeqyk/Q==} + /@umijs/max-plugin-openapi/2.0.2: + resolution: {integrity: sha512-CwFv9zVTPVUAYOyrlmo6AwaxFGFFDOY3w31yKURmM0/F08v9QRAOl3UkL47FDOLoQbhwlYJV8hgakzwxRAAV2Q==} dependencies: '@umijs/openapi': 1.8.1 rimraf: 3.0.2 @@ -5000,8 +5000,8 @@ packages: react-router-dom: 6.3.0_ef5jwxihqo6n7gxfmzogljlgcm dev: true - /@umijs/request-record/1.1.2: - resolution: {integrity: sha512-PFwaIn/D/ZbDacWkeRF7/uVpysxrVKCVnwdutxz+FY8KHw/S5M5BcwRu7qfJFC3xDSJLDtaL48IHVMe9djN1Tw==} + /@umijs/request-record/1.1.3: + resolution: {integrity: sha512-2dpqQC2gcHiYx1d3KYuIIbjKP1kdE4qCkldvcZotSKB0QNyp6p0mL6eLwyIpN2+n/tGVqPkThX4dPL2Ikob3Fw==} peerDependencies: umi: '>=3' dependencies: @@ -5606,7 +5606,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.4 - caniuse-lite: 1.0.30001443 + caniuse-lite: 1.0.30001444 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -5621,7 +5621,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.4 - caniuse-lite: 1.0.30001443 + caniuse-lite: 1.0.30001444 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -5634,7 +5634,7 @@ packages: hasBin: true dependencies: browserslist: 4.21.4 - caniuse-lite: 1.0.30001443 + caniuse-lite: 1.0.30001444 normalize-range: 0.1.2 num2fraction: 1.2.2 picocolors: 0.2.1 @@ -6030,7 +6030,7 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001443 + caniuse-lite: 1.0.30001444 electron-to-chromium: 1.4.284 node-releases: 2.0.8 update-browserslist-db: 1.0.10_browserslist@4.21.4 @@ -6122,8 +6122,8 @@ packages: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: true - /caniuse-lite/1.0.30001443: - resolution: {integrity: sha512-jUo8svymO8+Mkj3qbUbVjR8zv8LUGpGkUM/jKvc9SO2BvjCI980dp9fQbf/dyLs6RascPzgR4nhAKFA4OHeSaA==} + /caniuse-lite/1.0.30001444: + resolution: {integrity: sha512-ecER9xgJQVMqcrxThKptsW0pPxSae8R2RB87LNa+ivW9ppNWRHEplXcDzkCOP4LYWGj8hunXLqaiC41iBATNyg==} /carlo/0.9.46: resolution: {integrity: sha512-FwZ/wxjqe+5RgzF2SRsPSWsVB9+McAVRWW0tRkmbh7fBjrf3HFZZbcr8vr61p1K+NBaAPv57DRjxgIyfbHmd7g==} @@ -6866,7 +6866,7 @@ packages: resolution: {integrity: sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==} dependencies: call-bind: 1.0.2 - es-get-iterator: 1.1.2 + es-get-iterator: 1.1.3 get-intrinsic: 1.1.3 is-arguments: 1.1.1 is-array-buffer: 3.0.1 @@ -7284,8 +7284,8 @@ packages: which-typed-array: 1.1.9 dev: true - /es-get-iterator/1.1.2: - resolution: {integrity: sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==} + /es-get-iterator/1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: call-bind: 1.0.2 get-intrinsic: 1.1.3 @@ -7295,6 +7295,7 @@ packages: is-set: 2.0.2 is-string: 1.0.7 isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 dev: true /es-set-tostringtag/2.0.1: @@ -9328,7 +9329,7 @@ packages: resolution: {integrity: sha512-NiPOTBb5ahmIOYkJ7mVTvvB1bydnTzixvfO+59AjJKBpyjPBIULL3EHGxySyZijlVpewveJyhiLQThcivkkAtw==} engines: {node: '>= 0.4'} dependencies: - es-get-iterator: 1.1.2 + es-get-iterator: 1.1.3 functions-have-names: 1.2.3 has: 1.0.3 has-bigints: 1.0.2 @@ -14752,6 +14753,13 @@ packages: engines: {node: '>= 0.8'} dev: true + /stop-iteration-iterator/1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + dependencies: + internal-slot: 1.0.4 + dev: true + /stream-browserify/2.0.2: resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==} dependencies: @@ -15594,13 +15602,13 @@ packages: resolution: {integrity: sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==} dev: true - /umi-presets-pro/2.0.0_aegj6e4bshbj2ek6a2qagy3lt4: - resolution: {integrity: sha512-x/aQygHQlRl9TcHQf90thEfJaDaZjAVeh/R3iYnj9SZAZmZT9vzkvmjVGHanppYiA6yAo1MJtxI6zgDETv3tUA==} + /umi-presets-pro/2.0.2_aegj6e4bshbj2ek6a2qagy3lt4: + resolution: {integrity: sha512-qP4mM0DdQHGLDFQuO/ek95jHDQ7hnCqWwAMaYjCGroxVQWUV+GHt5cyU39bLkHQ3dPS8OWVen1Bjz2/JBF0nHw==} dependencies: '@alita/plugins': 3.2.7_aegj6e4bshbj2ek6a2qagy3lt4 - '@umijs/max-plugin-openapi': 2.0.0 + '@umijs/max-plugin-openapi': 2.0.2 '@umijs/plugins': 4.0.44_aegj6e4bshbj2ek6a2qagy3lt4 - '@umijs/request-record': 1.1.2 + '@umijs/request-record': 1.1.3 swagger-ui-dist: 4.15.5 transitivePeerDependencies: - '@babel/helper-module-imports' diff --git a/src/pages/User/Login/__snapshots__/login.test.tsx.snap b/src/pages/User/Login/__snapshots__/login.test.tsx.snap index 5d0531e2..af647ff5 100644 --- a/src/pages/User/Login/__snapshots__/login.test.tsx.snap +++ b/src/pages/User/Login/__snapshots__/login.test.tsx.snap @@ -31,6 +31,7 @@ exports[`Login Page should login success 1`] = `
    @@ -669,6 +671,7 @@ exports[`Login Page should show login form 1`] = ` >
    - 2022 Produced by Ant Financial Experience Department + 2023 Produced by Ant Financial Experience Department
    From df8bcbd22d631bba471b6db226b0e5d3d81ef54e Mon Sep 17 00:00:00 2001 From: Buddy John Date: Thu, 16 Feb 2023 14:27:11 +0800 Subject: [PATCH 86/89] fix(husky): Prevent the verify error on commit. (#10536) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If I initial my project by execute: pnpm install (not the npm install), Then use git commit, it'll always result an error: ✔ Preparing... ✔ Running tasks... ✔ Applying modifications... ✔ Cleaning up... npm ERR! could not determine executable to run npm ERR! A complete log of this run can be found in: husky - commit-msg hook exited with code 1 (error) so I add a missed dev-depency: @umijs/facrib, It's solved. --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 8f0b0a6d..d23d67c4 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,7 @@ "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", "@types/react-helmet": "^6.1.5", + "@umijs/facrib": "^2.14.1", "@umijs/lint": "^4.0.34", "@umijs/max": "^4.0.33", "cross-env": "^7.0.3", From 5063fdc4a03abc753008f2b3ee20aa3e3da474c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Thu, 16 Feb 2023 19:44:32 +0800 Subject: [PATCH 87/89] fix: fix fabric package name error --- package.json | 2 +- pnpm-lock.yaml | 3702 ++++++++++++++++++++++++++++-------------------- 2 files changed, 2163 insertions(+), 1541 deletions(-) diff --git a/package.json b/package.json index d23d67c4..c21e5856 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", "@types/react-helmet": "^6.1.5", - "@umijs/facrib": "^2.14.1", + "@umijs/fabric": "^2.14.1", "@umijs/lint": "^4.0.34", "@umijs/max": "^4.0.33", "cross-env": "^7.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7c1b4f5d..cc0b3d1a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,7 @@ specifiers: '@types/react': ^18.0.0 '@types/react-dom': ^18.0.0 '@types/react-helmet': ^6.1.5 + '@umijs/fabric': ^2.14.1 '@umijs/lint': ^4.0.34 '@umijs/max': ^4.0.33 '@umijs/route-utils': ^2.1.3 @@ -45,18 +46,18 @@ specifiers: dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-components': 2.3.52_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/use-emotion-css': 1.0.4_3eprgtpjc4b52y4s5m2payzg5q + '@ant-design/pro-components': 2.3.54_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/use-emotion-css': 1.0.4_zziuzmw57eovk2ycxuppotpvc4 '@umijs/route-utils': 2.2.2 - antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva + antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 lodash: 4.17.21 moment: 2.29.4 omit.js: 2.0.2 - rc-menu: 9.8.1_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-menu: 9.8.2_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 - react-dev-inspector: 1.8.4_ol4nhuzbuflsbzk2mijpqykzba + react-dev-inspector: 1.8.4_km5ddj7uwb23cqeymeyvzjsfb4 react-dom: 18.2.0_react@18.2.0 react-helmet-async: 1.3.0_biqbaboplfbrettd7655fr4n2y @@ -64,29 +65,30 @@ devDependencies: '@ant-design/pro-cli': 2.1.5 '@testing-library/react': 13.4.0_biqbaboplfbrettd7655fr4n2y '@types/classnames': 2.3.1 - '@types/express': 4.17.15 + '@types/express': 4.17.17 '@types/history': 4.7.11 - '@types/jest': 29.2.5 + '@types/jest': 29.4.0 '@types/lodash': 4.14.191 - '@types/react': 18.0.26 - '@types/react-dom': 18.0.10 + '@types/react': 18.0.28 + '@types/react-dom': 18.0.11 '@types/react-helmet': 6.1.6 - '@umijs/lint': 4.0.44_kudefufnb5v4dzpyosesvz63ky - '@umijs/max': 4.0.44_qgo5fbsqag6anccdzo2ypcvrri + '@umijs/fabric': 2.14.1 + '@umijs/lint': 4.0.51_jrzwjw3eqcxkrr4jwa5zddmkz4 + '@umijs/max': 4.0.51_sk62eavrhdxpjt2gdk56aqurvy cross-env: 7.0.3 - eslint: 8.31.0 + eslint: 8.34.0 express: 4.18.2 gh-pages: 3.2.3 husky: 7.0.4 - jest: 29.3.1_ts-node@10.9.1 - jest-environment-jsdom: 29.3.1 + jest: 29.4.3_ts-node@10.9.1 + jest-environment-jsdom: 29.4.3 lint-staged: 10.5.4 mockjs: 1.1.0 - prettier: 2.8.2 + prettier: 2.8.4 swagger-ui-dist: 4.15.5 - ts-node: 10.9.1_typescript@4.9.4 - typescript: 4.9.4 - umi-presets-pro: 2.0.2_aegj6e4bshbj2ek6a2qagy3lt4 + ts-node: 10.9.1_typescript@4.9.5 + typescript: 4.9.5 + umi-presets-pro: 2.0.2_j6z4hab2i3bwnwb4dzmobxs5ea packages: @@ -114,39 +116,35 @@ packages: react: 18.2.0 dev: true - /@alita/plugins/3.2.7_aegj6e4bshbj2ek6a2qagy3lt4: - resolution: {integrity: sha512-N4rpPLpqpC2GAsb9Wh0zBCf7sNxFi72EgMRQpLWWAl7J9SLgTlJjmB0vTersee/uXAvZO2WSwmPpreEpQAh8aQ==} + /@alita/plugins/3.2.10_j6z4hab2i3bwnwb4dzmobxs5ea: + resolution: {integrity: sha512-tpXRvnXWVGRHB0lTkkADg6hwJXPOv+qlxaDxnxIW/WHkypMXRQON0CKKnPLP5l7jsKaJWZDyYEWKBF2p1Srzdw==} dependencies: '@alita/babel-transform-jsx-class': 0.0.2 '@alita/inspx': 0.0.2_react@18.2.0 '@alita/request': 3.1.0 '@alita/types': 3.1.0 - '@umijs/bundler-utils': 4.0.36 - '@umijs/plugins': 4.0.36_aegj6e4bshbj2ek6a2qagy3lt4 - '@umijs/utils': 4.0.36 + '@umijs/bundler-utils': 4.0.42 + '@umijs/plugins': 4.0.42_j6z4hab2i3bwnwb4dzmobxs5ea + '@umijs/utils': 4.0.42 ahooks: 3.7.4_react@18.2.0 antd-mobile-alita: 2.3.4_biqbaboplfbrettd7655fr4n2y antd-mobile-icons: 0.2.2 babel-plugin-import: 1.13.6 babel-runtime-jsx-plus: 0.1.5 classnames: 2.3.2 - dva-core: 2.0.4_redux@4.2.0 + dva-core: 2.0.4_redux@4.2.1 dva-immer: 1.0.0 dva-loading: 3.0.22_dva-core@2.0.4 history: 5.3.0 react-redux: 7.2.9_biqbaboplfbrettd7655fr4n2y - react-router-dom: 6.6.2_biqbaboplfbrettd7655fr4n2y - redux: 4.2.0 + react-router-dom: 6.8.1_biqbaboplfbrettd7655fr4n2y + redux: 4.2.1 semver: 7.3.5 transitivePeerDependencies: - - '@babel/helper-module-imports' - - '@babel/types' - '@types/lodash.merge' - '@types/react' - '@types/react-dom' - antd - - aslemammad-vite-plugin-macro - - babel-plugin-macros - babel-plugin-styled-components - debug - dva @@ -155,7 +153,6 @@ packages: - react-dom - react-native - supports-color - - vite dev: true /@alita/request/3.1.0: @@ -182,20 +179,25 @@ packages: /@ant-design/colors/6.0.0: resolution: {integrity: sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==} dependencies: - '@ctrl/tinycolor': 3.5.0 + '@ctrl/tinycolor': 3.6.0 - /@ant-design/cssinjs/1.4.0_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-siFyX5VyiJWKBQAffI8zE0WZ4OWfI35QnqesbtHaVg49QxHFAcFN9VbJ+Qoos24JxABcxfopEwMWe2joZ2QVBQ==} + /@ant-design/colors/7.0.0: + resolution: {integrity: sha512-iVm/9PfGCbC0dSMBrz7oiEXZaaGH7ceU40OJEfKmyuzR9R5CRimJYPlRiFtMQGQcbNMea/ePcoIebi4ASGYXtg==} + dependencies: + '@ctrl/tinycolor': 3.6.0 + + /@ant-design/cssinjs/1.5.6_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-1S7LUPC9BMyQ/CUYgzfePJJwEfsbVHJe3Tpd9zhujTxRM/6LYpN9N4FTaPHVqpnPazm0S2vG0WBkh2T5Erwuug==} peerDependencies: react: '>=16.0.0' react-dom: '>=16.0.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 '@emotion/hash': 0.8.0 '@emotion/unitless': 0.7.5 classnames: 2.3.2 csstype: 3.1.1 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 stylis: 4.1.3 @@ -212,61 +214,76 @@ packages: dependencies: '@ant-design/colors': 6.0.0 '@ant-design/icons-svg': 4.2.1 - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - /@ant-design/pro-card/2.1.10_3eprgtpjc4b52y4s5m2payzg5q: - resolution: {integrity: sha512-edajGd2/35w73tLC7yMZf2/8tWg4Wz9pmN6jQgFo+QIRXoaHd5zpeQaOMxZojeqzCxTH0Qt60YpeLp/S+ahupQ==} + /@ant-design/icons/5.0.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-ZyF4ksXCcdtwA/1PLlnFLcF/q8/MhwxXhKHh4oCHDA4Ip+ZzAHoICtyp4wZWfiCVDP0yuz3HsjyvuldHFb3wjA==} + engines: {node: '>=8'} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@ant-design/colors': 7.0.0 + '@ant-design/icons-svg': 4.2.1 + '@babel/runtime': 7.20.13 + classnames: 2.3.2 + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /@ant-design/pro-card/2.1.12_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-8H7Qi0l7TWCOPmSlCP/X8lz8Q53QLxpNqqckgi3lye/HyXsCG1p7R8udMXEwwgFMBJZASwfcqr1Iy3yibOmMqw==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q - '@babel/runtime': 7.20.7 - antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva + '@ant-design/pro-provider': 2.4.2_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-utils': 2.5.6_eyanc6viuzknyw5lsn6lba32mq + '@babel/runtime': 7.20.13 + antd: 4.24.8_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 omit.js: 2.0.2 - rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 transitivePeerDependencies: - react-dom + dev: true - /@ant-design/pro-card/2.1.10_b6pt25ruzstflsuamv2lnyq45m: - resolution: {integrity: sha512-edajGd2/35w73tLC7yMZf2/8tWg4Wz9pmN6jQgFo+QIRXoaHd5zpeQaOMxZojeqzCxTH0Qt60YpeLp/S+ahupQ==} + /@ant-design/pro-card/2.1.12_zziuzmw57eovk2ycxuppotpvc4: + resolution: {integrity: sha512-8H7Qi0l7TWCOPmSlCP/X8lz8Q53QLxpNqqckgi3lye/HyXsCG1p7R8udMXEwwgFMBJZASwfcqr1Iy3yibOmMqw==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.4.0_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-utils': 2.5.4_b6pt25ruzstflsuamv2lnyq45m - '@babel/runtime': 7.20.7 - antd: 4.24.7_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-provider': 2.4.2_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-utils': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 + '@babel/runtime': 7.20.13 + antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 omit.js: 2.0.2 - rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 transitivePeerDependencies: - react-dom - dev: true /@ant-design/pro-cli/2.1.5: resolution: {integrity: sha512-nFdVRlKRFh6UcjKmkEnpImCz3mOCMz1u6lo9IIVo2lwlbNInc5EZxXfJJm4tAXUSrOfsiIl/Iwc2bsQ5xJBLeA==} hasBin: true dependencies: '@babel/core': 7.20.12 - '@babel/generator': 7.20.7 - '@babel/parser': 7.20.7 - '@babel/traverse': 7.20.12 + '@babel/generator': 7.20.14 + '@babel/parser': 7.20.15 + '@babel/traverse': 7.20.13 '@babel/types': 7.20.7 - '@umijs/fabric': 2.14.0 + '@umijs/fabric': 2.14.1 babel-types: 6.26.0 blink-diff: 1.0.13 carlo: 0.9.46 @@ -279,14 +296,14 @@ packages: import-fresh: 3.3.0 intl-messageformat: 9.13.0 lodash.groupby: 4.6.0 - node-fetch: 2.6.8 + node-fetch: 2.6.9 node-import-ts: 1.0.6 ora: 5.4.1 pngjs-image: 0.11.7 - prettier: 2.8.2 + prettier: 2.8.4 rimraf: 3.0.2 semver: 7.3.8 - typescript: 4.9.4 + typescript: 4.9.5 umi-utils: 1.7.3 yargs-parser: 20.2.9 transitivePeerDependencies: @@ -298,145 +315,145 @@ packages: - utf-8-validate dev: true - /@ant-design/pro-components/2.3.52_3eprgtpjc4b52y4s5m2payzg5q: - resolution: {integrity: sha512-df51Xi59QRXXIc5uMcO/7/tPjNziGt1w40860yCztFBNCoNc9B+xvDwsuRWgvRL1yqM4SZL1Al7T392CtyESSg==} + /@ant-design/pro-components/2.3.54_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-kKXxs1U50BHGEe4dTVttqw/lvZHdbzlrBAuugP39eY/tNUlZyl0C1f0u+W7VsNYed6q6KV9aYm0zTWv0vBZ9TQ==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@ant-design/pro-card': 2.1.10_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-descriptions': 2.0.44_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-field': 2.2.5_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-form': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-layout': 7.6.1_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-list': 2.0.45_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-skeleton': 2.0.7_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-table': 3.2.12_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q - '@babel/runtime': 7.20.7 - antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva + '@ant-design/pro-card': 2.1.12_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-descriptions': 2.0.46_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-field': 2.2.7_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-form': 2.5.6_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-layout': 7.7.1_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-list': 2.0.47_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-provider': 2.4.2_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-skeleton': 2.0.8_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-table': 3.2.14_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-utils': 2.5.6_eyanc6viuzknyw5lsn6lba32mq + '@babel/runtime': 7.20.13 + antd: 4.24.8_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' - rc-field-form + dev: true - /@ant-design/pro-components/2.3.52_b6pt25ruzstflsuamv2lnyq45m: - resolution: {integrity: sha512-df51Xi59QRXXIc5uMcO/7/tPjNziGt1w40860yCztFBNCoNc9B+xvDwsuRWgvRL1yqM4SZL1Al7T392CtyESSg==} + /@ant-design/pro-components/2.3.54_zziuzmw57eovk2ycxuppotpvc4: + resolution: {integrity: sha512-kKXxs1U50BHGEe4dTVttqw/lvZHdbzlrBAuugP39eY/tNUlZyl0C1f0u+W7VsNYed6q6KV9aYm0zTWv0vBZ9TQ==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@ant-design/pro-card': 2.1.10_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-descriptions': 2.0.44_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-field': 2.2.5_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-form': 2.5.4_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-layout': 7.6.1_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-list': 2.0.45_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-provider': 2.4.0_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-skeleton': 2.0.7_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-table': 3.2.12_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-utils': 2.5.4_b6pt25ruzstflsuamv2lnyq45m - '@babel/runtime': 7.20.7 - antd: 4.24.7_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-card': 2.1.12_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-descriptions': 2.0.46_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-field': 2.2.7_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-form': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-layout': 7.7.1_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-list': 2.0.47_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-provider': 2.4.2_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-skeleton': 2.0.8_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-table': 3.2.14_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-utils': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 + '@babel/runtime': 7.20.13 + antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva react: 18.2.0 react-dom: 18.2.0_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' - rc-field-form - dev: true - /@ant-design/pro-descriptions/2.0.44_3eprgtpjc4b52y4s5m2payzg5q: - resolution: {integrity: sha512-UEwZbvjOBTxWvPGv8qb3i+Q5czuHFYwRokSgVzVyS2el6xLYr4ZjG0a2CQsjbBnIb0MvZCfnkIn+W0XD/bjS3g==} + /@ant-design/pro-descriptions/2.0.46_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-VEkMUsweHHk1HYrMmcPZ8k8CYb4NBWTqPjwWK/bbOacDqHDw86nd4pmB3jdN+zl4jMasCAX8HOJe4skva/h2HQ==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' dependencies: - '@ant-design/pro-field': 2.2.5_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-form': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-skeleton': 2.0.7_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q - '@babel/runtime': 7.20.7 - antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-field': 2.2.7_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-form': 2.5.6_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-skeleton': 2.0.8_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-utils': 2.5.6_eyanc6viuzknyw5lsn6lba32mq + '@babel/runtime': 7.20.13 + antd: 4.24.8_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 use-json-comparison: 1.0.6_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' - rc-field-form - react-dom + dev: true - /@ant-design/pro-descriptions/2.0.44_b6pt25ruzstflsuamv2lnyq45m: - resolution: {integrity: sha512-UEwZbvjOBTxWvPGv8qb3i+Q5czuHFYwRokSgVzVyS2el6xLYr4ZjG0a2CQsjbBnIb0MvZCfnkIn+W0XD/bjS3g==} + /@ant-design/pro-descriptions/2.0.46_zziuzmw57eovk2ycxuppotpvc4: + resolution: {integrity: sha512-VEkMUsweHHk1HYrMmcPZ8k8CYb4NBWTqPjwWK/bbOacDqHDw86nd4pmB3jdN+zl4jMasCAX8HOJe4skva/h2HQ==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' dependencies: - '@ant-design/pro-field': 2.2.5_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-form': 2.5.4_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-skeleton': 2.0.7_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-utils': 2.5.4_b6pt25ruzstflsuamv2lnyq45m - '@babel/runtime': 7.20.7 - antd: 4.24.7_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-field': 2.2.7_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-form': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-skeleton': 2.0.8_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-utils': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 + '@babel/runtime': 7.20.13 + antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 use-json-comparison: 1.0.6_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' - rc-field-form - react-dom - dev: true - /@ant-design/pro-field/2.2.5_3eprgtpjc4b52y4s5m2payzg5q: - resolution: {integrity: sha512-7Rp0uRhdCUnOFKXkId5wCjjQJBWo0sMhOQs10y40/hNpGpTEpVuEmJo2Jx4Sj2hj/g663WOUSF0YBK7PhFtTFA==} + /@ant-design/pro-field/2.2.7_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-7sdIz8x3n1QIQoDWYR9hfM5/BjIAGzbQRBehMCwAZhRg2tFhu804m8UgrQDI8DjiCNketlNHdxMYQKE6v4IYGQ==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q - '@babel/runtime': 7.20.7 - '@chenshuai2144/sketch-color': 1.0.8_react@18.2.0 - antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva + '@ant-design/pro-provider': 2.4.2_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-utils': 2.5.6_eyanc6viuzknyw5lsn6lba32mq + '@babel/runtime': 7.20.13 + '@chenshuai2144/sketch-color': 1.0.9_react@18.2.0 + antd: 4.24.8_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 dayjs: 1.11.7 lodash.tonumber: 4.0.3 omit.js: 2.0.2 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 - swr: 2.0.0_react@18.2.0 + swr: 2.0.3_react@18.2.0 transitivePeerDependencies: - react-dom + dev: true - /@ant-design/pro-field/2.2.5_b6pt25ruzstflsuamv2lnyq45m: - resolution: {integrity: sha512-7Rp0uRhdCUnOFKXkId5wCjjQJBWo0sMhOQs10y40/hNpGpTEpVuEmJo2Jx4Sj2hj/g663WOUSF0YBK7PhFtTFA==} + /@ant-design/pro-field/2.2.7_zziuzmw57eovk2ycxuppotpvc4: + resolution: {integrity: sha512-7sdIz8x3n1QIQoDWYR9hfM5/BjIAGzbQRBehMCwAZhRg2tFhu804m8UgrQDI8DjiCNketlNHdxMYQKE6v4IYGQ==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.4.0_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-utils': 2.5.4_b6pt25ruzstflsuamv2lnyq45m - '@babel/runtime': 7.20.7 - '@chenshuai2144/sketch-color': 1.0.8_react@18.2.0 - antd: 4.24.7_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-provider': 2.4.2_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-utils': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 + '@babel/runtime': 7.20.13 + '@chenshuai2144/sketch-color': 1.0.9_react@18.2.0 + antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 dayjs: 1.11.7 lodash.tonumber: 4.0.3 omit.js: 2.0.2 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 - swr: 2.0.0_react@18.2.0 + swr: 2.0.3_react@18.2.0 transitivePeerDependencies: - react-dom - dev: true - /@ant-design/pro-form/2.5.4_3eprgtpjc4b52y4s5m2payzg5q: - resolution: {integrity: sha512-Udzs2BLLHK9xhryB0GqE4FvC0KVjiD88z0NqSkJT1AfFMbBn5ERUh2TJ87vfSc8CS4UPGGeU868YzXVMR9AkbA==} + /@ant-design/pro-form/2.5.6_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-OYHQ0tFb3vECKrKUSwC4c/xYjB5OsfY2U68Q3jKHJ7EqMXtC0MCaksfUZcl7nJ9U5FYFOK9RCcjvJvjt3HcA8A==} peerDependencies: '@types/lodash.merge': ^4.6.7 antd: '>=4.23.0' @@ -448,24 +465,26 @@ packages: optional: true dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-field': 2.2.5_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q - '@babel/runtime': 7.20.7 + '@ant-design/pro-field': 2.2.7_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-provider': 2.4.2_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-utils': 2.5.6_eyanc6viuzknyw5lsn6lba32mq + '@babel/runtime': 7.20.13 + '@chenshuai2144/sketch-color': 1.0.9_react@18.2.0 '@umijs/use-params': 1.0.9_react@18.2.0 - antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva + antd: 4.24.8_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 lodash.merge: 4.6.2 omit.js: 2.0.2 - rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 use-json-comparison: 1.0.6_react@18.2.0 use-media-antd-query: 1.1.0_react@18.2.0 + dev: true - /@ant-design/pro-form/2.5.4_b6pt25ruzstflsuamv2lnyq45m: - resolution: {integrity: sha512-Udzs2BLLHK9xhryB0GqE4FvC0KVjiD88z0NqSkJT1AfFMbBn5ERUh2TJ87vfSc8CS4UPGGeU868YzXVMR9AkbA==} + /@ant-design/pro-form/2.5.6_zziuzmw57eovk2ycxuppotpvc4: + resolution: {integrity: sha512-OYHQ0tFb3vECKrKUSwC4c/xYjB5OsfY2U68Q3jKHJ7EqMXtC0MCaksfUZcl7nJ9U5FYFOK9RCcjvJvjt3HcA8A==} peerDependencies: '@types/lodash.merge': ^4.6.7 antd: '>=4.23.0' @@ -477,96 +496,96 @@ packages: optional: true dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-field': 2.2.5_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-provider': 2.4.0_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-utils': 2.5.4_b6pt25ruzstflsuamv2lnyq45m - '@babel/runtime': 7.20.7 + '@ant-design/pro-field': 2.2.7_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-provider': 2.4.2_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-utils': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 + '@babel/runtime': 7.20.13 + '@chenshuai2144/sketch-color': 1.0.9_react@18.2.0 '@umijs/use-params': 1.0.9_react@18.2.0 - antd: 4.24.7_biqbaboplfbrettd7655fr4n2y + antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 lodash.merge: 4.6.2 omit.js: 2.0.2 - rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 use-json-comparison: 1.0.6_react@18.2.0 use-media-antd-query: 1.1.0_react@18.2.0 - dev: true - /@ant-design/pro-layout/7.6.1_3eprgtpjc4b52y4s5m2payzg5q: - resolution: {integrity: sha512-MNmOALRmVbAUbsbJSmUdXyKgvxyTG1pp9YYwway5AqKz28PdfDp6HhqrvCE7zRnxIaJWv9Vb6IZ/XqstI5zDeg==} + /@ant-design/pro-layout/7.7.1_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-+Uoav0ftebcTFU63JTr3jtFQd7oLteNQyw0lG/lKqMTfJWEFcaSx+WmBif6iLbsX1KYgpNGklI+GB/iMwoTG3Q==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q - '@babel/runtime': 7.20.7 + '@ant-design/pro-provider': 2.4.2_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-utils': 2.5.6_eyanc6viuzknyw5lsn6lba32mq + '@babel/runtime': 7.20.13 '@umijs/route-utils': 4.0.1 '@umijs/use-params': 1.0.9_react@18.2.0 - antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva + antd: 4.24.8_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 lodash.merge: 4.6.2 omit.js: 2.0.2 path-to-regexp: 2.4.0 - rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - swr: 2.0.0_react@18.2.0 + swr: 2.0.3_react@18.2.0 unstated-next: 1.1.0 use-json-comparison: 1.0.6_react@18.2.0 use-media-antd-query: 1.1.0_react@18.2.0 warning: 4.0.3 + dev: true - /@ant-design/pro-layout/7.6.1_b6pt25ruzstflsuamv2lnyq45m: - resolution: {integrity: sha512-MNmOALRmVbAUbsbJSmUdXyKgvxyTG1pp9YYwway5AqKz28PdfDp6HhqrvCE7zRnxIaJWv9Vb6IZ/XqstI5zDeg==} + /@ant-design/pro-layout/7.7.1_zziuzmw57eovk2ycxuppotpvc4: + resolution: {integrity: sha512-+Uoav0ftebcTFU63JTr3jtFQd7oLteNQyw0lG/lKqMTfJWEFcaSx+WmBif6iLbsX1KYgpNGklI+GB/iMwoTG3Q==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.4.0_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-utils': 2.5.4_b6pt25ruzstflsuamv2lnyq45m - '@babel/runtime': 7.20.7 + '@ant-design/pro-provider': 2.4.2_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-utils': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 + '@babel/runtime': 7.20.13 '@umijs/route-utils': 4.0.1 '@umijs/use-params': 1.0.9_react@18.2.0 - antd: 4.24.7_biqbaboplfbrettd7655fr4n2y + antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 lodash.merge: 4.6.2 omit.js: 2.0.2 path-to-regexp: 2.4.0 - rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - swr: 2.0.0_react@18.2.0 + swr: 2.0.3_react@18.2.0 unstated-next: 1.1.0 use-json-comparison: 1.0.6_react@18.2.0 use-media-antd-query: 1.1.0_react@18.2.0 warning: 4.0.3 - dev: true - /@ant-design/pro-list/2.0.45_3eprgtpjc4b52y4s5m2payzg5q: - resolution: {integrity: sha512-jGcTqL+ziAKZ71NERmbfFST+BoOIyVy6NQNDvTNa2V/r2ZYR+eLStEcRfTp0MyWaWillXJqBIi3jNhDUIXWVhg==} + /@ant-design/pro-list/2.0.47_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-pMB4jHuRTcPk/pPEgvFgj9FBzMokJ9Gj79NB6RTF6ZQOr3Vj6lEkEsvVGD8zjrbWeHIL/HvRxG+p5v/U/nnsuQ==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-card': 2.1.10_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-field': 2.2.5_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-table': 3.2.12_3eprgtpjc4b52y4s5m2payzg5q - '@babel/runtime': 7.20.7 - antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva + '@ant-design/pro-card': 2.1.12_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-field': 2.2.7_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-table': 3.2.14_eyanc6viuzknyw5lsn6lba32mq + '@babel/runtime': 7.20.13 + antd: 4.24.8_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 dayjs: 1.11.7 - rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y rc-util: 4.21.1 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -575,23 +594,24 @@ packages: transitivePeerDependencies: - '@types/lodash.merge' - rc-field-form + dev: true - /@ant-design/pro-list/2.0.45_b6pt25ruzstflsuamv2lnyq45m: - resolution: {integrity: sha512-jGcTqL+ziAKZ71NERmbfFST+BoOIyVy6NQNDvTNa2V/r2ZYR+eLStEcRfTp0MyWaWillXJqBIi3jNhDUIXWVhg==} + /@ant-design/pro-list/2.0.47_zziuzmw57eovk2ycxuppotpvc4: + resolution: {integrity: sha512-pMB4jHuRTcPk/pPEgvFgj9FBzMokJ9Gj79NB6RTF6ZQOr3Vj6lEkEsvVGD8zjrbWeHIL/HvRxG+p5v/U/nnsuQ==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-card': 2.1.10_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-field': 2.2.5_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-table': 3.2.12_b6pt25ruzstflsuamv2lnyq45m - '@babel/runtime': 7.20.7 - antd: 4.24.7_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-card': 2.1.12_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-field': 2.2.7_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-table': 3.2.14_zziuzmw57eovk2ycxuppotpvc4 + '@babel/runtime': 7.20.13 + antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 dayjs: 1.11.7 - rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y rc-util: 4.21.1 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -600,70 +620,69 @@ packages: transitivePeerDependencies: - '@types/lodash.merge' - rc-field-form - dev: true - /@ant-design/pro-provider/2.4.0_3eprgtpjc4b52y4s5m2payzg5q: - resolution: {integrity: sha512-toz3F7moI6o99DCaEJRQv/jYrQXYlxiM3RpTb5L+zXYwc4hFxfv8Jj2Qm6XMX0DRZgCsDt5KK7R+9c9LzoNxbg==} + /@ant-design/pro-provider/2.4.2_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-x816YJbfXwKw6CeOVMnxoDWwq9Q/XwVmIXRKTNTYeoKvZy1KoKbXLnXOSoO5EwPrKrA+NyvaTndY8/gks8tXUQ==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@ant-design/cssinjs': 1.4.0_biqbaboplfbrettd7655fr4n2y - '@babel/runtime': 7.20.7 - '@ctrl/tinycolor': 3.5.0 - antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + '@ant-design/cssinjs': 1.5.6_biqbaboplfbrettd7655fr4n2y + '@babel/runtime': 7.20.13 + '@ctrl/tinycolor': 3.6.0 + antd: 4.24.8_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - swr: 2.0.0_react@18.2.0 + swr: 2.0.3_react@18.2.0 + dev: true - /@ant-design/pro-provider/2.4.0_b6pt25ruzstflsuamv2lnyq45m: - resolution: {integrity: sha512-toz3F7moI6o99DCaEJRQv/jYrQXYlxiM3RpTb5L+zXYwc4hFxfv8Jj2Qm6XMX0DRZgCsDt5KK7R+9c9LzoNxbg==} + /@ant-design/pro-provider/2.4.2_zziuzmw57eovk2ycxuppotpvc4: + resolution: {integrity: sha512-x816YJbfXwKw6CeOVMnxoDWwq9Q/XwVmIXRKTNTYeoKvZy1KoKbXLnXOSoO5EwPrKrA+NyvaTndY8/gks8tXUQ==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@ant-design/cssinjs': 1.4.0_biqbaboplfbrettd7655fr4n2y - '@babel/runtime': 7.20.7 - '@ctrl/tinycolor': 3.5.0 - antd: 4.24.7_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + '@ant-design/cssinjs': 1.5.6_biqbaboplfbrettd7655fr4n2y + '@babel/runtime': 7.20.13 + '@ctrl/tinycolor': 3.6.0 + antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - swr: 2.0.0_react@18.2.0 - dev: true + swr: 2.0.3_react@18.2.0 - /@ant-design/pro-skeleton/2.0.7_3eprgtpjc4b52y4s5m2payzg5q: - resolution: {integrity: sha512-7RoCUVgWDTGrWeNuFlscsxrrXc5jshYXk6gjkQKospR0hQ1AK/aWlkttAAaqDFZlvPxSyLu8w11TmquRuYcNcg==} + /@ant-design/pro-skeleton/2.0.8_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-Rb5Fpd6s1q5EemdO43o4w/Eab7ze6Gd3mOdMPHAp2dK5qm3Wj6Qa6Dr94zcsHom2VaZfaPVTatatHxdR+7byOQ==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 - antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva + '@babel/runtime': 7.20.13 + antd: 4.24.8_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 use-media-antd-query: 1.1.0_react@18.2.0 + dev: true - /@ant-design/pro-skeleton/2.0.7_b6pt25ruzstflsuamv2lnyq45m: - resolution: {integrity: sha512-7RoCUVgWDTGrWeNuFlscsxrrXc5jshYXk6gjkQKospR0hQ1AK/aWlkttAAaqDFZlvPxSyLu8w11TmquRuYcNcg==} + /@ant-design/pro-skeleton/2.0.8_zziuzmw57eovk2ycxuppotpvc4: + resolution: {integrity: sha512-Rb5Fpd6s1q5EemdO43o4w/Eab7ze6Gd3mOdMPHAp2dK5qm3Wj6Qa6Dr94zcsHom2VaZfaPVTatatHxdR+7byOQ==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 - antd: 4.24.7_biqbaboplfbrettd7655fr4n2y + '@babel/runtime': 7.20.13 + antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva react: 18.2.0 react-dom: 18.2.0_react@18.2.0 use-media-antd-query: 1.1.0_react@18.2.0 - dev: true - /@ant-design/pro-table/3.2.12_3eprgtpjc4b52y4s5m2payzg5q: - resolution: {integrity: sha512-jhfKBtU5DnOlj0eL/Tz3D5j9DZt6KeWCcaJOA/FDr/ZTj5ROUThhK5DqzeLjR9O/DTBCgiwB8Vpiqt0uWPWlXw==} + /@ant-design/pro-table/3.2.14_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-2IEo4wKCqeJaPpdfM3gTH8QtcNOa3z/mhDPgBMzLc+jM0g433Lqcv3yMjyH1Dkgpp+B23JBmeQEN930B9x4GZw==} peerDependencies: antd: '>=4.23.0' rc-field-form: ^1.22.0 @@ -671,18 +690,18 @@ packages: react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-card': 2.1.10_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-field': 2.2.5_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-form': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q - '@ant-design/pro-utils': 2.5.4_3eprgtpjc4b52y4s5m2payzg5q - '@babel/runtime': 7.20.7 - antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva + '@ant-design/pro-card': 2.1.12_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-field': 2.2.7_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-form': 2.5.6_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-provider': 2.4.2_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-utils': 2.5.6_eyanc6viuzknyw5lsn6lba32mq + '@babel/runtime': 7.20.13 + antd: 4.24.8_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 dayjs: 1.11.7 omit.js: 2.0.2 - rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-sortable-hoc: 2.0.0_biqbaboplfbrettd7655fr4n2y @@ -690,9 +709,10 @@ packages: use-json-comparison: 1.0.6_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' + dev: true - /@ant-design/pro-table/3.2.12_b6pt25ruzstflsuamv2lnyq45m: - resolution: {integrity: sha512-jhfKBtU5DnOlj0eL/Tz3D5j9DZt6KeWCcaJOA/FDr/ZTj5ROUThhK5DqzeLjR9O/DTBCgiwB8Vpiqt0uWPWlXw==} + /@ant-design/pro-table/3.2.14_zziuzmw57eovk2ycxuppotpvc4: + resolution: {integrity: sha512-2IEo4wKCqeJaPpdfM3gTH8QtcNOa3z/mhDPgBMzLc+jM0g433Lqcv3yMjyH1Dkgpp+B23JBmeQEN930B9x4GZw==} peerDependencies: antd: '>=4.23.0' rc-field-form: ^1.22.0 @@ -700,18 +720,18 @@ packages: react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-card': 2.1.10_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-field': 2.2.5_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-form': 2.5.4_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-provider': 2.4.0_b6pt25ruzstflsuamv2lnyq45m - '@ant-design/pro-utils': 2.5.4_b6pt25ruzstflsuamv2lnyq45m - '@babel/runtime': 7.20.7 - antd: 4.24.7_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-card': 2.1.12_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-field': 2.2.7_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-form': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-provider': 2.4.2_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-utils': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 + '@babel/runtime': 7.20.13 + antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 dayjs: 1.11.7 omit.js: 2.0.2 - rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-sortable-hoc: 2.0.0_biqbaboplfbrettd7655fr4n2y @@ -719,53 +739,52 @@ packages: use-json-comparison: 1.0.6_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' - dev: true - /@ant-design/pro-utils/2.5.4_3eprgtpjc4b52y4s5m2payzg5q: - resolution: {integrity: sha512-fwnGRcYQbJwIyTWvioCw443qJ2Jq/TdkR/LFoewJqQK8zeZ7I62pEgLqxK0l0sffZpN1cKAIQfydqvcT3kl+mQ==} + /@ant-design/pro-utils/2.5.6_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-TthUmuPG2nRaeRTbmAfOSWSVPPPWB5JL9g55kllMhHNwDtSjWA5MDvZT4e6MMOlAI/zTXoQYE+542Y6hMGX+SA==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.4.0_3eprgtpjc4b52y4s5m2payzg5q - '@babel/runtime': 7.20.7 - antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva + '@ant-design/pro-provider': 2.4.2_eyanc6viuzknyw5lsn6lba32mq + '@babel/runtime': 7.20.13 + antd: 4.24.8_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 dayjs: 1.11.7 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-sortable-hoc: 2.0.0_biqbaboplfbrettd7655fr4n2y - swr: 2.0.0_react@18.2.0 + swr: 2.0.3_react@18.2.0 + dev: true - /@ant-design/pro-utils/2.5.4_b6pt25ruzstflsuamv2lnyq45m: - resolution: {integrity: sha512-fwnGRcYQbJwIyTWvioCw443qJ2Jq/TdkR/LFoewJqQK8zeZ7I62pEgLqxK0l0sffZpN1cKAIQfydqvcT3kl+mQ==} + /@ant-design/pro-utils/2.5.6_zziuzmw57eovk2ycxuppotpvc4: + resolution: {integrity: sha512-TthUmuPG2nRaeRTbmAfOSWSVPPPWB5JL9g55kllMhHNwDtSjWA5MDvZT4e6MMOlAI/zTXoQYE+542Y6hMGX+SA==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.4.0_b6pt25ruzstflsuamv2lnyq45m - '@babel/runtime': 7.20.7 - antd: 4.24.7_biqbaboplfbrettd7655fr4n2y + '@ant-design/pro-provider': 2.4.2_zziuzmw57eovk2ycxuppotpvc4 + '@babel/runtime': 7.20.13 + antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 dayjs: 1.11.7 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-sortable-hoc: 2.0.0_biqbaboplfbrettd7655fr4n2y - swr: 2.0.0_react@18.2.0 - dev: true + swr: 2.0.3_react@18.2.0 /@ant-design/react-slick/0.29.2_react@18.2.0: resolution: {integrity: sha512-kgjtKmkGHa19FW21lHnAfyyH9AAoh35pBdcJ53rHmQ3O+cfFHGHnUbj/HFrRNJ5vIts09FKJVAD8RpaC+RaWfA==} peerDependencies: react: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 json2mq: 0.2.0 lodash: 4.17.21 @@ -778,14 +797,14 @@ packages: peerDependencies: react: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 json2mq: 0.2.0 react: 18.2.0 resize-observer-polyfill: 1.5.1 throttle-debounce: 5.0.0 - /@ant-design/use-emotion-css/1.0.4_3eprgtpjc4b52y4s5m2payzg5q: + /@ant-design/use-emotion-css/1.0.4_zziuzmw57eovk2ycxuppotpvc4: resolution: {integrity: sha512-PekXeeHCpSNi6ziV62gy2Yy2MijssiVMaCJbbyOmPbeZJYQmB4FecJwlB+e2WuIbSHQdM3O9pyN4Cx3GJKxJkA==} peerDependencies: antd: '>=5.0.0' @@ -793,7 +812,7 @@ packages: react-dom: '>=17.0.0' dependencies: '@emotion/css': 11.10.5 - antd: 5.1.4_jb42yyeu5qxbfieyxjks6malva + antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva react: 18.2.0 react-dom: 18.2.0_react@18.2.0 transitivePeerDependencies: @@ -843,8 +862,8 @@ packages: dependencies: '@babel/highlight': 7.18.6 - /@babel/compat-data/7.20.10: - resolution: {integrity: sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==} + /@babel/compat-data/7.20.14: + resolution: {integrity: sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==} engines: {node: '>=6.9.0'} /@babel/core/7.20.12: @@ -853,13 +872,13 @@ packages: dependencies: '@ampproject/remapping': 2.2.0 '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.7 + '@babel/generator': 7.20.14 '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 '@babel/helper-module-transforms': 7.20.11 - '@babel/helpers': 7.20.7 - '@babel/parser': 7.20.7 + '@babel/helpers': 7.20.13 + '@babel/parser': 7.20.15 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.12 + '@babel/traverse': 7.20.13 '@babel/types': 7.20.7 convert-source-map: 1.9.0 debug: 4.3.4 @@ -897,8 +916,22 @@ packages: semver: 6.3.0 dev: true - /@babel/generator/7.20.7: - resolution: {integrity: sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==} + /@babel/eslint-parser/7.19.1_ydmbqfus77qykiqxhcwsorsqbq: + resolution: {integrity: sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': '>=7.11.0' + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/core': 7.20.12 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.34.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.0 + dev: true + + /@babel/generator/7.20.14: + resolution: {integrity: sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.7 @@ -926,10 +959,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.20.10 + '@babel/compat-data': 7.20.14 '@babel/core': 7.20.12 '@babel/helper-validator-option': 7.18.6 - browserslist: 4.21.4 + browserslist: 4.21.5 lru-cache: 5.1.1 semver: 6.3.0 @@ -960,7 +993,7 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.2.2 + regexpu-core: 5.3.0 dev: true /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.20.12: @@ -1026,7 +1059,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.19.1 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.12 + '@babel/traverse': 7.20.13 '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color @@ -1065,7 +1098,7 @@ packages: '@babel/helper-member-expression-to-functions': 7.20.7 '@babel/helper-optimise-call-expression': 7.18.6 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.12 + '@babel/traverse': 7.20.13 '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color @@ -1108,18 +1141,18 @@ packages: dependencies: '@babel/helper-function-name': 7.19.0 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.12 + '@babel/traverse': 7.20.13 '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color dev: true - /@babel/helpers/7.20.7: - resolution: {integrity: sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==} + /@babel/helpers/7.20.13: + resolution: {integrity: sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==} engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.20.7 - '@babel/traverse': 7.20.12 + '@babel/traverse': 7.20.13 '@babel/types': 7.20.7 transitivePeerDependencies: - supports-color @@ -1132,8 +1165,8 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 - /@babel/parser/7.20.7: - resolution: {integrity: sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==} + /@babel/parser/7.20.15: + resolution: {integrity: sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==} engines: {node: '>=6.0.0'} hasBin: true dependencies: @@ -1213,8 +1246,8 @@ packages: - supports-color dev: true - /@babel/plugin-proposal-decorators/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-JB45hbUweYpwAGjkiM7uCyXMENH2lG+9r3G2E+ttc2PRXAoEkpfd/KW5jDg4j8RS6tLtTG1jZi9LbHZVSfs1/A==} + /@babel/plugin-proposal-decorators/7.20.13_@babel+core@7.20.12: + resolution: {integrity: sha512-7T6BKHa9Cpd7lCueHBBzP0nkXNina+h5giOZw+a8ZpMfPFY19VjJAjIxyFHuWkhCWgL6QMqRiY/wB1fLXzm6Mw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1301,7 +1334,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.20.10 + '@babel/compat-data': 7.20.14 '@babel/core': 7.20.12 '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 @@ -1698,8 +1731,8 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-block-scoping/7.20.11_@babel+core@7.20.12: - resolution: {integrity: sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==} + /@babel/plugin-transform-block-scoping/7.20.15_@babel+core@7.20.12: + resolution: {integrity: sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1962,7 +1995,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 - '@babel/plugin-transform-react-jsx': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-react-jsx': 7.20.13_@babel+core@7.20.12 dev: true /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.20.12: @@ -1985,8 +2018,8 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-react-jsx/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-Tfq7qqD+tRj3EoDhY00nn2uP2hsRxgYGi5mLQ5TimKav0a9Lrpd4deE+fcLXU8zFYRjlKPHZhpCvfEA6qnBxqQ==} + /@babel/plugin-transform-react-jsx/7.20.13_@babel+core@7.20.12: + resolution: {integrity: sha512-MmTZx/bkUrfJhhYAYt3Urjm+h8DQGrPrnKQ94jLo7NLuOU+T89a7IByhKmrb8SKhrIYIQ0FN0CHMbnFRen4qNw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2082,8 +2115,8 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-typescript/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-m3wVKEvf6SoszD8pu4NZz3PvfKRCMgk6D6d0Qi9hNnlM5M6CFS92EgF4EiHVLKbU0r/r7ty1hg7NPZwE7WRbYw==} + /@babel/plugin-transform-typescript/7.20.13_@babel+core@7.20.12: + resolution: {integrity: sha512-O7I/THxarGcDZxkgWKMUrk7NK1/WbHAg3Xx86gqS6x9MTrNL6AwIluuZ96ms4xeDe6AVx6rjHbWHP7x26EPQBA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -2123,7 +2156,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.20.10 + '@babel/compat-data': 7.20.14 '@babel/core': 7.20.12 '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 @@ -2163,7 +2196,7 @@ packages: '@babel/plugin-transform-arrow-functions': 7.20.7_@babel+core@7.20.12 '@babel/plugin-transform-async-to-generator': 7.20.7_@babel+core@7.20.12 '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-block-scoping': 7.20.11_@babel+core@7.20.12 + '@babel/plugin-transform-block-scoping': 7.20.15_@babel+core@7.20.12 '@babel/plugin-transform-classes': 7.20.7_@babel+core@7.20.12 '@babel/plugin-transform-computed-properties': 7.20.7_@babel+core@7.20.12 '@babel/plugin-transform-destructuring': 7.20.7_@babel+core@7.20.12 @@ -2197,7 +2230,7 @@ packages: babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.20.12 babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.20.12 babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.20.12 - core-js-compat: 3.27.1 + core-js-compat: 3.28.0 semver: 6.3.0 transitivePeerDependencies: - supports-color @@ -2226,7 +2259,7 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-option': 7.18.6 '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-react-jsx': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-react-jsx': 7.20.13_@babel+core@7.20.12 '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.20.12 '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.20.12 dev: true @@ -2240,36 +2273,47 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-typescript': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-typescript': 7.20.13_@babel+core@7.20.12 transitivePeerDependencies: - supports-color dev: true + /@babel/regjsgen/0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: true + + /@babel/runtime/7.20.13: + resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + /@babel/runtime/7.20.7: resolution: {integrity: sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 + dev: true /@babel/template/7.20.7: resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/parser': 7.20.7 + '@babel/parser': 7.20.15 '@babel/types': 7.20.7 - /@babel/traverse/7.20.12: - resolution: {integrity: sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==} + /@babel/traverse/7.20.13: + resolution: {integrity: sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.7 + '@babel/generator': 7.20.14 '@babel/helper-environment-visitor': 7.18.9 '@babel/helper-function-name': 7.19.0 '@babel/helper-hoist-variables': 7.18.6 '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.20.7 + '@babel/parser': 7.20.15 '@babel/types': 7.20.7 debug: 4.3.4 globals: 11.12.0 @@ -2292,14 +2336,14 @@ packages: resolution: {integrity: sha512-h0OYmPR3A5Dfbetra/GzxBAzQk8sH7LhRkRUTdagX6nrtlUgJGYCTv4bBK33jsTQw9HDd8PE2x1Ma+iRKEDUsw==} dev: true - /@chenshuai2144/sketch-color/1.0.8_react@18.2.0: - resolution: {integrity: sha512-dPAzzWc+w7zyTAi71WXYZpiTYyIS80MxYyy2E/7jufhnJI1Z29wCPL35VvuJ/gs5zYpF2+w/B7BizWa2zKXpGw==} + /@chenshuai2144/sketch-color/1.0.9_react@18.2.0: + resolution: {integrity: sha512-obzSy26cb7Pm7OprWyVpgMpIlrZpZ0B7vbrU0RMbvRg0YAI890S5Xy02Aj1Nhl4+KTbi1lVYHt6HQP8Hm9s+1w==} peerDependencies: react: '>=16.12.0' dependencies: react: 18.2.0 reactcss: 1.2.3_react@18.2.0 - tinycolor2: 1.5.2 + tinycolor2: 1.6.0 /@cspotcode/source-map-support/0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} @@ -2394,7 +2438,7 @@ packages: peerDependencies: postcss: ^8.2 dependencies: - '@csstools/selector-specificity': 2.0.2_laljekdltgzr3kfi7r4exvsr5a + '@csstools/selector-specificity': 2.1.1_laljekdltgzr3kfi7r4exvsr5a postcss-selector-parser: 6.0.11 dev: true @@ -2404,7 +2448,7 @@ packages: peerDependencies: postcss: ^8.2 dependencies: - '@csstools/selector-specificity': 2.0.2_wajs5nedgkikc5pcuwett7legi + '@csstools/selector-specificity': 2.1.1_wajs5nedgkikc5pcuwett7legi postcss: 8.4.21 postcss-selector-parser: 6.0.11 dev: true @@ -2503,29 +2547,29 @@ packages: postcss: 8.4.21 dev: true - /@csstools/selector-specificity/2.0.2_laljekdltgzr3kfi7r4exvsr5a: - resolution: {integrity: sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==} - engines: {node: ^12 || ^14 || >=16} + /@csstools/selector-specificity/2.1.1_laljekdltgzr3kfi7r4exvsr5a: + resolution: {integrity: sha512-jwx+WCqszn53YHOfvFMJJRd/B2GqkCBt+1MJSG6o5/s8+ytHMvDZXsJgUEWLk12UnLd7HYKac4BYU5i/Ron1Cw==} + engines: {node: ^14 || ^16 || >=18} peerDependencies: - postcss: ^8.2 + postcss: ^8.4 postcss-selector-parser: ^6.0.10 dependencies: postcss-selector-parser: 6.0.11 dev: true - /@csstools/selector-specificity/2.0.2_wajs5nedgkikc5pcuwett7legi: - resolution: {integrity: sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==} - engines: {node: ^12 || ^14 || >=16} + /@csstools/selector-specificity/2.1.1_wajs5nedgkikc5pcuwett7legi: + resolution: {integrity: sha512-jwx+WCqszn53YHOfvFMJJRd/B2GqkCBt+1MJSG6o5/s8+ytHMvDZXsJgUEWLk12UnLd7HYKac4BYU5i/Ron1Cw==} + engines: {node: ^14 || ^16 || >=18} peerDependencies: - postcss: ^8.2 + postcss: ^8.4 postcss-selector-parser: ^6.0.10 dependencies: postcss: 8.4.21 postcss-selector-parser: 6.0.11 dev: true - /@ctrl/tinycolor/3.5.0: - resolution: {integrity: sha512-tlJpwF40DEQcfR/QF+wNMVyGMaO9FQp6Z1Wahj4Gk3CJQYHwA2xVG7iKDFdW6zuxZY9XWOpGcfNCTsX4McOsOg==} + /@ctrl/tinycolor/3.6.0: + resolution: {integrity: sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ==} engines: {node: '>=10'} /@emotion/babel-plugin/11.10.5: @@ -2535,7 +2579,7 @@ packages: dependencies: '@babel/helper-module-imports': 7.18.6 '@babel/plugin-syntax-jsx': 7.18.6 - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 '@emotion/hash': 0.9.0 '@emotion/memoize': 0.8.0 '@emotion/serialize': 1.1.1 @@ -2611,25 +2655,25 @@ packages: resolution: {integrity: sha512-AHPmaAx+RYfZz0eYu6Gviiagpmiyw98ySSlQvCUhVGDRtDFe4DBS0x1bSjdF3gqUDYOczB+yYvBTtEylYSdRhg==} dev: false - /@esbuild-kit/cjs-loader/2.4.1: - resolution: {integrity: sha512-lhc/XLith28QdW0HpHZvZKkorWgmCNT7sVelMHDj3HFdTfdqkwEKvT+aXVQtNAmCC39VJhunDkWhONWB7335mg==} + /@esbuild-kit/cjs-loader/2.4.2: + resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} dependencies: - '@esbuild-kit/core-utils': 3.0.0 - get-tsconfig: 4.3.0 + '@esbuild-kit/core-utils': 3.1.0 + get-tsconfig: 4.4.0 dev: true - /@esbuild-kit/core-utils/3.0.0: - resolution: {integrity: sha512-TXmwH9EFS3DC2sI2YJWJBgHGhlteK0Xyu1VabwetMULfm3oYhbrsWV5yaSr2NTWZIgDGVLHbRf0inxbjXqAcmQ==} + /@esbuild-kit/core-utils/3.1.0: + resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} dependencies: - esbuild: 0.15.18 + esbuild: 0.17.8 source-map-support: 0.5.21 dev: true - /@esbuild-kit/esm-loader/2.5.4: - resolution: {integrity: sha512-afmtLf6uqxD5IgwCzomtqCYIgz/sjHzCWZFvfS5+FzeYxOURPUo4QcHtqJxbxWOMOogKriZanN/1bJQE/ZL93A==} + /@esbuild-kit/esm-loader/2.5.5: + resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} dependencies: - '@esbuild-kit/core-utils': 3.0.0 - get-tsconfig: 4.3.0 + '@esbuild-kit/core-utils': 3.1.0 + get-tsconfig: 4.4.0 dev: true /@esbuild/android-arm/0.15.18: @@ -2650,6 +2694,15 @@ packages: dev: true optional: true + /@esbuild/android-arm/0.17.8: + resolution: {integrity: sha512-0/rb91GYKhrtbeglJXOhAv9RuYimgI8h623TplY2X+vA4EXnk3Zj1fXZreJ0J3OJJu1bwmb0W7g+2cT/d8/l/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-arm64/0.16.17: resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} engines: {node: '>=12'} @@ -2659,6 +2712,15 @@ packages: dev: true optional: true + /@esbuild/android-arm64/0.17.8: + resolution: {integrity: sha512-oa/N5j6v1svZQs7EIRPqR8f+Bf8g6HBDjD/xHC02radE/NjKHK7oQmtmLxPs1iVwYyvE+Kolo6lbpfEQ9xnhxQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/android-x64/0.16.17: resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} engines: {node: '>=12'} @@ -2668,6 +2730,15 @@ packages: dev: true optional: true + /@esbuild/android-x64/0.17.8: + resolution: {integrity: sha512-bTliMLqD7pTOoPg4zZkXqCDuzIUguEWLpeqkNfC41ODBHwoUgZ2w5JBeYimv4oP6TDVocoYmEhZrCLQTrH89bg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-arm64/0.16.17: resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} engines: {node: '>=12'} @@ -2677,6 +2748,15 @@ packages: dev: true optional: true + /@esbuild/darwin-arm64/0.17.8: + resolution: {integrity: sha512-ghAbV3ia2zybEefXRRm7+lx8J/rnupZT0gp9CaGy/3iolEXkJ6LYRq4IpQVI9zR97ID80KJVoUlo3LSeA/sMAg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/darwin-x64/0.16.17: resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} engines: {node: '>=12'} @@ -2686,6 +2766,15 @@ packages: dev: true optional: true + /@esbuild/darwin-x64/0.17.8: + resolution: {integrity: sha512-n5WOpyvZ9TIdv2V1K3/iIkkJeKmUpKaCTdun9buhGRWfH//osmUjlv4Z5mmWdPWind/VGcVxTHtLfLCOohsOXw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-arm64/0.16.17: resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} engines: {node: '>=12'} @@ -2695,6 +2784,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-arm64/0.17.8: + resolution: {integrity: sha512-a/SATTaOhPIPFWvHZDoZYgxaZRVHn0/LX1fHLGfZ6C13JqFUZ3K6SMD6/HCtwOQ8HnsNaEeokdiDSFLuizqv5A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/freebsd-x64/0.16.17: resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} engines: {node: '>=12'} @@ -2704,6 +2802,15 @@ packages: dev: true optional: true + /@esbuild/freebsd-x64/0.17.8: + resolution: {integrity: sha512-xpFJb08dfXr5+rZc4E+ooZmayBW6R3q59daCpKZ/cDU96/kvDM+vkYzNeTJCGd8rtO6fHWMq5Rcv/1cY6p6/0Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm/0.16.17: resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} engines: {node: '>=12'} @@ -2713,6 +2820,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm/0.17.8: + resolution: {integrity: sha512-6Ij8gfuGszcEwZpi5jQIJCVIACLS8Tz2chnEBfYjlmMzVsfqBP1iGmHQPp7JSnZg5xxK9tjCc+pJ2WtAmPRFVA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-arm64/0.16.17: resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} engines: {node: '>=12'} @@ -2722,6 +2838,15 @@ packages: dev: true optional: true + /@esbuild/linux-arm64/0.17.8: + resolution: {integrity: sha512-v3iwDQuDljLTxpsqQDl3fl/yihjPAyOguxuloON9kFHYwopeJEf1BkDXODzYyXEI19gisEsQlG1bM65YqKSIww==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ia32/0.16.17: resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} engines: {node: '>=12'} @@ -2731,6 +2856,15 @@ packages: dev: true optional: true + /@esbuild/linux-ia32/0.17.8: + resolution: {integrity: sha512-8svILYKhE5XetuFk/B6raFYIyIqydQi+GngEXJgdPdI7OMKUbSd7uzR02wSY4kb53xBrClLkhH4Xs8P61Q2BaA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-loong64/0.15.18: resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} engines: {node: '>=12'} @@ -2749,6 +2883,15 @@ packages: dev: true optional: true + /@esbuild/linux-loong64/0.17.8: + resolution: {integrity: sha512-B6FyMeRJeV0NpyEOYlm5qtQfxbdlgmiGdD+QsipzKfFky0K5HW5Td6dyK3L3ypu1eY4kOmo7wW0o94SBqlqBSA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-mips64el/0.16.17: resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} engines: {node: '>=12'} @@ -2758,6 +2901,15 @@ packages: dev: true optional: true + /@esbuild/linux-mips64el/0.17.8: + resolution: {integrity: sha512-CCb67RKahNobjm/eeEqeD/oJfJlrWyw29fgiyB6vcgyq97YAf3gCOuP6qMShYSPXgnlZe/i4a8WFHBw6N8bYAA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-ppc64/0.16.17: resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} engines: {node: '>=12'} @@ -2767,6 +2919,15 @@ packages: dev: true optional: true + /@esbuild/linux-ppc64/0.17.8: + resolution: {integrity: sha512-bytLJOi55y55+mGSdgwZ5qBm0K9WOCh0rx+vavVPx+gqLLhxtSFU0XbeYy/dsAAD6xECGEv4IQeFILaSS2auXw==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-riscv64/0.16.17: resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} engines: {node: '>=12'} @@ -2776,6 +2937,15 @@ packages: dev: true optional: true + /@esbuild/linux-riscv64/0.17.8: + resolution: {integrity: sha512-2YpRyQJmKVBEHSBLa8kBAtbhucaclb6ex4wchfY0Tj3Kg39kpjeJ9vhRU7x4mUpq8ISLXRXH1L0dBYjAeqzZAw==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-s390x/0.16.17: resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} engines: {node: '>=12'} @@ -2785,6 +2955,15 @@ packages: dev: true optional: true + /@esbuild/linux-s390x/0.17.8: + resolution: {integrity: sha512-QgbNY/V3IFXvNf11SS6exkpVcX0LJcob+0RWCgV9OiDAmVElnxciHIisoSix9uzYzScPmS6dJFbZULdSAEkQVw==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/linux-x64/0.16.17: resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} engines: {node: '>=12'} @@ -2794,6 +2973,15 @@ packages: dev: true optional: true + /@esbuild/linux-x64/0.17.8: + resolution: {integrity: sha512-mM/9S0SbAFDBc4OPoyP6SEOo5324LpUxdpeIUUSrSTOfhHU9hEfqRngmKgqILqwx/0DVJBzeNW7HmLEWp9vcOA==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@esbuild/netbsd-x64/0.16.17: resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} engines: {node: '>=12'} @@ -2803,6 +2991,15 @@ packages: dev: true optional: true + /@esbuild/netbsd-x64/0.17.8: + resolution: {integrity: sha512-eKUYcWaWTaYr9zbj8GertdVtlt1DTS1gNBWov+iQfWuWyuu59YN6gSEJvFzC5ESJ4kMcKR0uqWThKUn5o8We6Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/openbsd-x64/0.16.17: resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} engines: {node: '>=12'} @@ -2812,6 +3009,15 @@ packages: dev: true optional: true + /@esbuild/openbsd-x64/0.17.8: + resolution: {integrity: sha512-Vc9J4dXOboDyMXKD0eCeW0SIeEzr8K9oTHJU+Ci1mZc5njPfhKAqkRt3B/fUNU7dP+mRyralPu8QUkiaQn7iIg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + /@esbuild/sunos-x64/0.16.17: resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} engines: {node: '>=12'} @@ -2821,6 +3027,15 @@ packages: dev: true optional: true + /@esbuild/sunos-x64/0.17.8: + resolution: {integrity: sha512-0xvOTNuPXI7ft1LYUgiaXtpCEjp90RuBBYovdd2lqAFxje4sEucurg30M1WIm03+3jxByd3mfo+VUmPtRSVuOw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-arm64/0.16.17: resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} engines: {node: '>=12'} @@ -2830,6 +3045,15 @@ packages: dev: true optional: true + /@esbuild/win32-arm64/0.17.8: + resolution: {integrity: sha512-G0JQwUI5WdEFEnYNKzklxtBheCPkuDdu1YrtRrjuQv30WsYbkkoixKxLLv8qhJmNI+ATEWquZe/N0d0rpr55Mg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-ia32/0.16.17: resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} engines: {node: '>=12'} @@ -2839,6 +3063,15 @@ packages: dev: true optional: true + /@esbuild/win32-ia32/0.17.8: + resolution: {integrity: sha512-Fqy63515xl20OHGFykjJsMnoIWS+38fqfg88ClvPXyDbLtgXal2DTlhb1TfTX34qWi3u4I7Cq563QcHpqgLx8w==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@esbuild/win32-x64/0.16.17: resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} engines: {node: '>=12'} @@ -2848,6 +3081,15 @@ packages: dev: true optional: true + /@esbuild/win32-x64/0.17.8: + resolution: {integrity: sha512-1iuezdyDNngPnz8rLRDO2C/ZZ/emJLb72OsZeqQ6gL6Avko/XCXZw+NuxBSNhBAP13Hie418V7VMt9et1FMvpg==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@eslint/eslintrc/0.4.3: resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -2855,7 +3097,7 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 7.3.1 - globals: 13.19.0 + globals: 13.20.0 ignore: 4.0.6 import-fresh: 3.3.0 js-yaml: 3.14.1 @@ -2872,7 +3114,7 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 9.4.1 - globals: 13.19.0 + globals: 13.20.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -2895,21 +3137,21 @@ packages: '@floating-ui/core': 0.6.2 dev: true - /@floating-ui/react-dom-interactions/0.3.1_2wivdsbsvmk3pblmocpmpqwn2e: + /@floating-ui/react-dom-interactions/0.3.1_geqtkvvluj2en6xdskblg4z7uq: resolution: {integrity: sha512-tP2KEh7EHJr5hokSBHcPGojb+AorDNUf0NYfZGg/M+FsMvCOOsSEeEF0O1NDfETIzDnpbHnCs0DuvCFhSMSStg==} deprecated: Package renamed to @floating-ui/react dependencies: - '@floating-ui/react-dom': 0.6.3_2wivdsbsvmk3pblmocpmpqwn2e - aria-hidden: 1.2.2_3d3cqnhbk5jgdxsmxlr7d24np4 + '@floating-ui/react-dom': 0.6.3_geqtkvvluj2en6xdskblg4z7uq + aria-hidden: 1.2.2_obbe7ycx7dfgllab6ij5426xhu point-in-polygon: 1.1.0 - use-isomorphic-layout-effect: 1.1.2_3d3cqnhbk5jgdxsmxlr7d24np4 + use-isomorphic-layout-effect: 1.1.2_obbe7ycx7dfgllab6ij5426xhu transitivePeerDependencies: - '@types/react' - react - react-dom dev: true - /@floating-ui/react-dom/0.6.3_2wivdsbsvmk3pblmocpmpqwn2e: + /@floating-ui/react-dom/0.6.3_geqtkvvluj2en6xdskblg4z7uq: resolution: {integrity: sha512-hC+pS5D6AgS2wWjbmSQ6UR6Kpy+drvWGJIri6e1EDGADTPsCaa4KzCgmCczHrQeInx9tqs81EyDmbKJYY2swKg==} peerDependencies: react: '>=16.8.0' @@ -2918,7 +3160,7 @@ packages: '@floating-ui/dom': 0.4.5 react: 18.1.0 react-dom: 18.1.0_react@18.1.0 - use-isomorphic-layout-effect: 1.1.2_3d3cqnhbk5jgdxsmxlr7d24np4 + use-isomorphic-layout-effect: 1.1.2_obbe7ycx7dfgllab6ij5426xhu transitivePeerDependencies: - '@types/react' dev: true @@ -2927,13 +3169,13 @@ packages: resolution: {integrity: sha512-EBikYFp2JCdIfGEb5G9dyCkTGDmC57KSHhRQOC3aYxoPWVZvfWCDjZwkGYHN7Lis/fmuWl906bnNTJifDQ3sXw==} dependencies: '@formatjs/intl-localematcher': 0.2.25 - tslib: 2.4.1 + tslib: 2.5.0 dev: true /@formatjs/fast-memoize/1.2.1: resolution: {integrity: sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==} dependencies: - tslib: 2.4.1 + tslib: 2.5.0 dev: true /@formatjs/icu-messageformat-parser/2.1.0: @@ -2941,14 +3183,14 @@ packages: dependencies: '@formatjs/ecma402-abstract': 1.11.4 '@formatjs/icu-skeleton-parser': 1.3.6 - tslib: 2.4.1 + tslib: 2.5.0 dev: true /@formatjs/icu-skeleton-parser/1.3.6: resolution: {integrity: sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==} dependencies: '@formatjs/ecma402-abstract': 1.11.4 - tslib: 2.4.1 + tslib: 2.5.0 dev: true /@formatjs/intl-displaynames/1.2.10: @@ -2966,7 +3208,7 @@ packages: /@formatjs/intl-localematcher/0.2.25: resolution: {integrity: sha512-YmLcX70BxoSopLFdLr1Ds99NdlTI2oWoLbaUW2M406lxOIPzE1KQhRz2fPUkq34xVZQaihCoU29h0KK7An3bhA==} dependencies: - tslib: 2.4.1 + tslib: 2.5.0 dev: true /@formatjs/intl-relativetimeformat/4.5.16: @@ -3026,8 +3268,8 @@ packages: '@antfu/utils': 0.7.2 '@iconify/types': 2.0.0 debug: 4.3.4 - kolorist: 1.6.0 - local-pkg: 0.4.2 + kolorist: 1.7.0 + local-pkg: 0.4.3 transitivePeerDependencies: - supports-color dev: true @@ -3048,20 +3290,20 @@ packages: engines: {node: '>=8'} dev: true - /@jest/console/29.3.1: - resolution: {integrity: sha512-IRE6GD47KwcqA09RIWrabKdHPiKDGgtAL31xDxbi/RjQMsr+lY+ppxmHwY0dUEV3qvvxZzoe5Hl0RXZJOjQNUg==} + /@jest/console/29.4.3: + resolution: {integrity: sha512-W/o/34+wQuXlgqlPYTansOSiBnuxrTv61dEVkA6HNmpcgHLUjfaUbdqt6oVvOzaawwo9IdW9QOtMgQ1ScSZC4A==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 - '@types/node': 18.11.18 + '@jest/types': 29.4.3 + '@types/node': 18.13.0 chalk: 4.1.2 - jest-message-util: 29.3.1 - jest-util: 29.3.1 + jest-message-util: 29.4.3 + jest-util: 29.4.3 slash: 3.0.0 dev: true - /@jest/core/29.3.1_ts-node@10.9.1: - resolution: {integrity: sha512-0ohVjjRex985w5MmO5L3u5GR1O30DexhBSpuwx2P+9ftyqHdJXnk7IUWiP80oHMvt7ubHCJHxV0a0vlKVuZirw==} + /@jest/core/29.4.3_ts-node@10.9.1: + resolution: {integrity: sha512-56QvBq60fS4SPZCuM7T+7scNrkGIe7Mr6PVIXUpu48ouvRaWOFqRPV91eifvFM0ay2HmfswXiGf97NGUN5KofQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -3069,32 +3311,32 @@ packages: node-notifier: optional: true dependencies: - '@jest/console': 29.3.1 - '@jest/reporters': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.18 + '@jest/console': 29.4.3 + '@jest/reporters': 29.4.3 + '@jest/test-result': 29.4.3 + '@jest/transform': 29.4.3 + '@jest/types': 29.4.3 + '@types/node': 18.13.0 ansi-escapes: 4.3.2 chalk: 4.1.2 - ci-info: 3.7.1 + ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.10 - jest-changed-files: 29.2.0 - jest-config: 29.3.1_zfha7dvnw4nti6zkbsmhmn6xo4 - jest-haste-map: 29.3.1 - jest-message-util: 29.3.1 - jest-regex-util: 29.2.0 - jest-resolve: 29.3.1 - jest-resolve-dependencies: 29.3.1 - jest-runner: 29.3.1 - jest-runtime: 29.3.1 - jest-snapshot: 29.3.1 - jest-util: 29.3.1 - jest-validate: 29.3.1 - jest-watcher: 29.3.1 + jest-changed-files: 29.4.3 + jest-config: 29.4.3_ucpl6toqp57nqodtp3vxxi6g5a + jest-haste-map: 29.4.3 + jest-message-util: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.4.3 + jest-resolve-dependencies: 29.4.3 + jest-runner: 29.4.3 + jest-runtime: 29.4.3 + jest-snapshot: 29.4.3 + jest-util: 29.4.3 + jest-validate: 29.4.3 + jest-watcher: 29.4.3 micromatch: 4.0.5 - pretty-format: 29.3.1 + pretty-format: 29.4.3 slash: 3.0.0 strip-ansi: 6.0.1 transitivePeerDependencies: @@ -3102,59 +3344,59 @@ packages: - ts-node dev: true - /@jest/environment/29.3.1: - resolution: {integrity: sha512-pMmvfOPmoa1c1QpfFW0nXYtNLpofqo4BrCIk6f2kW4JFeNlHV2t3vd+3iDLf31e2ot2Mec0uqZfmI+U0K2CFag==} + /@jest/environment/29.4.3: + resolution: {integrity: sha512-dq5S6408IxIa+lr54zeqce+QgI+CJT4nmmA+1yzFgtcsGK8c/EyiUb9XQOgz3BMKrRDfKseeOaxj2eO8LlD3lA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/fake-timers': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.18 - jest-mock: 29.3.1 + '@jest/fake-timers': 29.4.3 + '@jest/types': 29.4.3 + '@types/node': 18.13.0 + jest-mock: 29.4.3 dev: true - /@jest/expect-utils/29.3.1: - resolution: {integrity: sha512-wlrznINZI5sMjwvUoLVk617ll/UYfGIZNxmbU+Pa7wmkL4vYzhV9R2pwVqUh4NWWuLQWkI8+8mOkxs//prKQ3g==} + /@jest/expect-utils/29.4.3: + resolution: {integrity: sha512-/6JWbkxHOP8EoS8jeeTd9dTfc9Uawi+43oLKHfp6zzux3U2hqOOVnV3ai4RpDYHOccL6g+5nrxpoc8DmJxtXVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.2.0 + jest-get-type: 29.4.3 dev: true - /@jest/expect/29.3.1: - resolution: {integrity: sha512-QivM7GlSHSsIAWzgfyP8dgeExPRZ9BIe2LsdPyEhCGkZkoyA+kGsoIzbKAfZCvvRzfZioKwPtCZIt5SaoxYCvg==} + /@jest/expect/29.4.3: + resolution: {integrity: sha512-iktRU/YsxEtumI9zsPctYUk7ptpC+AVLLk1Ax3AsA4g1C+8OOnKDkIQBDHtD5hA/+VtgMd5AWI5gNlcAlt2vxQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - expect: 29.3.1 - jest-snapshot: 29.3.1 + expect: 29.4.3 + jest-snapshot: 29.4.3 transitivePeerDependencies: - supports-color dev: true - /@jest/fake-timers/29.3.1: - resolution: {integrity: sha512-iHTL/XpnDlFki9Tq0Q1GGuVeQ8BHZGIYsvCO5eN/O/oJaRzofG9Xndd9HuSDBI/0ZS79pg0iwn07OMTQ7ngF2A==} + /@jest/fake-timers/29.4.3: + resolution: {integrity: sha512-4Hote2MGcCTWSD2gwl0dwbCpBRHhE6olYEuTj8FMowdg3oQWNKr2YuxenPQYZ7+PfqPY1k98wKDU4Z+Hvd4Tiw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 - '@sinonjs/fake-timers': 9.1.2 - '@types/node': 18.11.18 - jest-message-util: 29.3.1 - jest-mock: 29.3.1 - jest-util: 29.3.1 + '@jest/types': 29.4.3 + '@sinonjs/fake-timers': 10.0.2 + '@types/node': 18.13.0 + jest-message-util: 29.4.3 + jest-mock: 29.4.3 + jest-util: 29.4.3 dev: true - /@jest/globals/29.3.1: - resolution: {integrity: sha512-cTicd134vOcwO59OPaB6AmdHQMCtWOe+/DitpTZVxWgMJ+YvXL1HNAmPyiGbSHmF/mXVBkvlm8YYtQhyHPnV6Q==} + /@jest/globals/29.4.3: + resolution: {integrity: sha512-8BQ/5EzfOLG7AaMcDh7yFCbfRLtsc+09E1RQmRBI4D6QQk4m6NSK/MXo+3bJrBN0yU8A2/VIcqhvsOLFmziioA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/expect': 29.3.1 - '@jest/types': 29.3.1 - jest-mock: 29.3.1 + '@jest/environment': 29.4.3 + '@jest/expect': 29.4.3 + '@jest/types': 29.4.3 + jest-mock: 29.4.3 transitivePeerDependencies: - supports-color dev: true - /@jest/reporters/29.3.1: - resolution: {integrity: sha512-GhBu3YFuDrcAYW/UESz1JphEAbvUjaY2vShRZRoRY1mxpCMB3yGSJ4j9n0GxVlEOdCf7qjvUfBCrTUUqhVfbRA==} + /@jest/reporters/29.4.3: + resolution: {integrity: sha512-sr2I7BmOjJhyqj9ANC6CTLsL4emMoka7HkQpcoMRlhCbQJjz2zsRzw0BDPiPyEFDXAbxKgGFYuQZiSJ1Y6YoTg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -3163,12 +3405,12 @@ packages: optional: true dependencies: '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 + '@jest/console': 29.4.3 + '@jest/test-result': 29.4.3 + '@jest/transform': 29.4.3 + '@jest/types': 29.4.3 '@jridgewell/trace-mapping': 0.3.17 - '@types/node': 18.11.18 + '@types/node': 18.13.0 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -3179,26 +3421,26 @@ packages: istanbul-lib-report: 3.0.0 istanbul-lib-source-maps: 4.0.1 istanbul-reports: 3.1.5 - jest-message-util: 29.3.1 - jest-util: 29.3.1 - jest-worker: 29.3.1 + jest-message-util: 29.4.3 + jest-util: 29.4.3 + jest-worker: 29.4.3 slash: 3.0.0 string-length: 4.0.2 strip-ansi: 6.0.1 - v8-to-istanbul: 9.0.1 + v8-to-istanbul: 9.1.0 transitivePeerDependencies: - supports-color dev: true - /@jest/schemas/29.0.0: - resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} + /@jest/schemas/29.4.3: + resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@sinclair/typebox': 0.24.51 + '@sinclair/typebox': 0.25.22 dev: true - /@jest/source-map/29.2.0: - resolution: {integrity: sha512-1NX9/7zzI0nqa6+kgpSdKPK+WU1p+SJk3TloWZf5MzPbxri9UEeXX5bWZAPCzbQcyuAzubcdUHA7hcNznmRqWQ==} + /@jest/source-map/29.4.3: + resolution: {integrity: sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jridgewell/trace-mapping': 0.3.17 @@ -3206,41 +3448,41 @@ packages: graceful-fs: 4.2.10 dev: true - /@jest/test-result/29.3.1: - resolution: {integrity: sha512-qeLa6qc0ddB0kuOZyZIhfN5q0e2htngokyTWsGriedsDhItisW7SDYZ7ceOe57Ii03sL988/03wAcBh3TChMGw==} + /@jest/test-result/29.4.3: + resolution: {integrity: sha512-Oi4u9NfBolMq9MASPwuWTlC5WvmNRwI4S8YrQg5R5Gi47DYlBe3sh7ILTqi/LGrK1XUE4XY9KZcQJTH1WJCLLA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.3.1 - '@jest/types': 29.3.1 + '@jest/console': 29.4.3 + '@jest/types': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 collect-v8-coverage: 1.0.1 dev: true - /@jest/test-sequencer/29.3.1: - resolution: {integrity: sha512-IqYvLbieTv20ArgKoAMyhLHNrVHJfzO6ARZAbQRlY4UGWfdDnLlZEF0BvKOMd77uIiIjSZRwq3Jb3Fa3I8+2UA==} + /@jest/test-sequencer/29.4.3: + resolution: {integrity: sha512-yi/t2nES4GB4G0mjLc0RInCq/cNr9dNwJxcGg8sslajua5Kb4kmozAc+qPLzplhBgfw1vLItbjyHzUN92UXicw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.3.1 + '@jest/test-result': 29.4.3 graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 + jest-haste-map: 29.4.3 slash: 3.0.0 dev: true - /@jest/transform/29.3.1: - resolution: {integrity: sha512-8wmCFBTVGYqFNLWfcOWoVuMuKYPUBTnTMDkdvFtAYELwDOl9RGwOsvQWGPFxDJ8AWY9xM/8xCXdqmPK3+Q5Lug==} + /@jest/transform/29.4.3: + resolution: {integrity: sha512-8u0+fBGWolDshsFgPQJESkDa72da/EVwvL+II0trN2DR66wMwiQ9/CihaGfHdlLGFzbBZwMykFtxuwFdZqlKwg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.20.12 - '@jest/types': 29.3.1 + '@jest/types': 29.4.3 '@jridgewell/trace-mapping': 0.3.17 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 convert-source-map: 2.0.0 fast-json-stable-stringify: 2.1.0 graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 - jest-regex-util: 29.2.0 - jest-util: 29.3.1 + jest-haste-map: 29.4.3 + jest-regex-util: 29.4.3 + jest-util: 29.4.3 micromatch: 4.0.5 pirates: 4.0.5 slash: 3.0.0 @@ -3255,20 +3497,20 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.18 + '@types/node': 18.13.0 '@types/yargs': 16.0.5 chalk: 4.1.2 dev: true - /@jest/types/29.3.1: - resolution: {integrity: sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==} + /@jest/types/29.4.3: + resolution: {integrity: sha512-bPYfw8V65v17m2Od1cv44FH+SiKW7w2Xu7trhcdTLUmSv85rfKsP+qXSjO4KGJr4dtPSzl/gvslZBXctf1qGEA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.0.0 + '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.18 - '@types/yargs': 17.0.19 + '@types/node': 18.13.0 + '@types/yargs': 17.0.22 chalk: 4.1.2 dev: true @@ -3338,127 +3580,39 @@ packages: dependencies: '@babel/runtime': 7.20.7 hoist-non-react-statics: 3.3.2 - react: 18.2.0 - react-is: 16.13.1 - dev: true - - /@nicolo-ribaudo/chokidar-2/2.1.8-no-fsevents.3: - resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==} - requiresBuild: true - dev: true - optional: true - - /@nicolo-ribaudo/eslint-scope-5-internals/5.1.1-v1: - resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} - dependencies: - eslint-scope: 5.1.1 - dev: true - - /@nodelib/fs.scandir/2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - /@nodelib/fs.stat/2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - - /@nodelib/fs.walk/1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - - /@parcel/css-darwin-arm64/1.9.0: - resolution: {integrity: sha512-f/guZseS2tNKtKw94LgpNTItZqdVA0mnznqPsmQaR5lSB+cM3IPrSV8cgOOpAS7Vwo9ggxuJartToxBBN+dWSw==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@parcel/css-darwin-x64/1.9.0: - resolution: {integrity: sha512-4SpuwiM/4ayOgKflqSLd87XT7YwyC3wd2QuzOOkasjbe38UU+tot/87l2lQYEB538YinLdfwFQuFLDY0x9MxgA==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /@parcel/css-linux-arm-gnueabihf/1.9.0: - resolution: {integrity: sha512-KxCyX5fFvX5636Y8LSXwCxXMtIncgP7Lkw8nLsqd24C5YqMokmuOtAcHb/vQ9zQG6YiUWTv0MybqDuL7dBDfVw==} - engines: {node: '>= 12.0.0'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - - /@parcel/css-linux-arm64-gnu/1.9.0: - resolution: {integrity: sha512-wZ6Gsn6l+lSuvRdfWoyr7TdY24l29eGCD8QhXcqA1ALnFI7+KOTMBJ6aV3tjWUjMw3sg5qkosMHVqlWZzvrgXw==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] - requiresBuild: true + react: 18.2.0 + react-is: 16.13.1 dev: true - optional: true - /@parcel/css-linux-arm64-musl/1.9.0: - resolution: {integrity: sha512-N6n5HhMzcNR5oXWr0Md91gKYtuDhqDlp+aGDb3VT21uSCNLOvijOUz248v/VaPoRno1BPFYlMxn0fYYTTReB3A==} - engines: {node: '>= 12.0.0'} - cpu: [arm64] - os: [linux] + /@nicolo-ribaudo/chokidar-2/2.1.8-no-fsevents.3: + resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==} requiresBuild: true dev: true optional: true - /@parcel/css-linux-x64-gnu/1.9.0: - resolution: {integrity: sha512-QufawDkaiOjsh6jcZk/dgDBPMqBtIs+LGTOgcJDM6XL4mcbDNxO6VkDANssRUgPnbG66YYy419CUWFta9aeVOg==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true + /@nicolo-ribaudo/eslint-scope-5-internals/5.1.1-v1: + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + dependencies: + eslint-scope: 5.1.1 dev: true - optional: true - /@parcel/css-linux-x64-musl/1.9.0: - resolution: {integrity: sha512-s528buicSd83/5M5DN31JqwefZ8tqx4Jm97srkLDVBCZg+XEe9P0bO7q1Ngz5ZVFqfwvv8OYLPOtAtBmEppG3g==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true + /@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 - /@parcel/css-win32-x64-msvc/1.9.0: - resolution: {integrity: sha512-L4s84iK4PXnO/SzZyTsazAuzadtEYLGHgi1dyKYxMMGCjToCDjuwsn5K8bykeewZxjoL7RaunQGqCBRt5dfB5Q==} - engines: {node: '>= 12.0.0'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true + /@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} - /@parcel/css/1.9.0: - resolution: {integrity: sha512-egCetUQ1H6pgYxOIxVQ8X/YT5e8G0R8eq6aVaUHrqnZ7A8cc6FYgknl9XRmoy2Xxo9h1htrbzdaEShQ5gROwvw==} - engines: {node: '>= 12.0.0'} + /@nodelib/fs.walk/1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} dependencies: - detect-libc: 1.0.3 - optionalDependencies: - '@parcel/css-darwin-arm64': 1.9.0 - '@parcel/css-darwin-x64': 1.9.0 - '@parcel/css-linux-arm-gnueabihf': 1.9.0 - '@parcel/css-linux-arm64-gnu': 1.9.0 - '@parcel/css-linux-arm64-musl': 1.9.0 - '@parcel/css-linux-x64-gnu': 1.9.0 - '@parcel/css-linux-x64-musl': 1.9.0 - '@parcel/css-win32-x64-msvc': 1.9.0 - dev: true + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 /@pmmmwh/react-refresh-webpack-plugin/0.5.7_react-refresh@0.14.0: resolution: {integrity: sha512-bcKCAzF0DV2IIROp9ZHkRJa6O4jy7NlnHdWL3GmcUxYWNjLXkK5kfELELwEfSP5hXPfVL/qOGMAROuMQb9GG8Q==} @@ -3488,7 +3642,7 @@ packages: dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 - core-js-pure: 3.27.1 + core-js-pure: 3.28.0 error-stack-parser: 2.1.4 find-up: 5.0.0 html-entities: 2.3.3 @@ -3505,7 +3659,7 @@ packages: /@radix-ui/popper/0.0.10: resolution: {integrity: sha512-YFKuPqQPKscreQid7NuB4it3PMzSwGg03vgrud6sVliHkI43QNAOHyrHyMNo015jg6QK5GVDn+7J2W5uygqSGA==} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 csstype: 3.1.1 dev: true @@ -3515,8 +3669,8 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + '@babel/runtime': 7.20.13 + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -3524,7 +3678,20 @@ packages: resolution: {integrity: sha512-9N8nRk0oKj1qJzANKl+n9eNSMUGsZtjwNuDCiZ/KA+dt1fE3zq5x2XxclRcAbOIXnZcJ53ozP2Pa60gyELXagA==} engines: {node: '>=8.x'} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 + + /@rc-component/mutate-observer/1.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-okqRJSfNisXdI6CUeOLZC5ukBW/8kir2Ii4PJiKpUt+3+uS7dxwJUMxsUZquxA1rQuL8YcEmKVp/TCnR+yUdZA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.13 + classnames: 2.3.2 + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 /@rc-component/portal/1.1.0_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-tbXM9SB1r5FOuZjRCljERFByFiEUcMmCWMXLog/NmgCzlAzreXyf23Vei3ZpSMxSMavzPnhCovfZjZdmxS3d1w==} @@ -3533,50 +3700,51 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - /@rc-component/tour/1.1.0_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-Cy45VnNEDq6DLF5eKonIflObDfofbPq7AJpSf18qLN+j9+wW+sNlRv3JnCMDUsCdhSlnM4+yJ1RMokKp9GCpOQ==} + /@rc-component/tour/1.6.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-b/s7LCb7bW4wxpWfZyNpl7khHUzSyObSlsLaIScRGd+W/v1wFVk8F7gRytl/z8ik9ZSXbLWx9EvexIuHoO/RcQ==} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 '@rc-component/portal': 1.1.0_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - /@remix-run/router/1.2.1: - resolution: {integrity: sha512-XiY0IsyHR+DXYS5vBxpoBe/8veTeoRpMHP+vDosLZxL5bnpetzI0igkxkLZS235ldLzyfkxF+2divEwWHP3vMQ==} + /@remix-run/router/1.3.2: + resolution: {integrity: sha512-t54ONhl/h75X94SWsHGQ4G/ZrCEguKSRQr7DrjTciJXW0YU1QhlwYeycvK5JgkzlxmvrK7wq1NB/PLtHxoiDcA==} engines: {node: '>=14'} dev: true - /@sinclair/typebox/0.24.51: - resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} + /@sinclair/typebox/0.25.22: + resolution: {integrity: sha512-6U6r2L7rnM7EG8G1tWzIjdB3QlsHF4slgcqXNN/SF0xJOAr0nDmT2GedlkyO3mrv8mDTJ24UuOMWR3diBrCvQQ==} dev: true - /@sinonjs/commons/1.8.6: - resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} + /@sinonjs/commons/2.0.0: + resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} dependencies: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers/9.1.2: - resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==} + /@sinonjs/fake-timers/10.0.2: + resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} dependencies: - '@sinonjs/commons': 1.8.6 + '@sinonjs/commons': 2.0.0 dev: true /@stylelint/postcss-css-in-js/0.37.3_j55xdkkcxc32kvnyvx3y7casfm: resolution: {integrity: sha512-scLk3cSH1H9KggSniseb2KNAU5D9FWc3H7BxCSAIdtU9OWIyw0zkEZ9qEKHryRM+SExYXRKNb7tOOVNAsQ3iwg==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: postcss: '>=7.0.0' postcss-syntax: '>=0.36.2' @@ -3590,6 +3758,7 @@ packages: /@stylelint/postcss-css-in-js/0.38.0_64375vj2stjdn6gyt55zwvoboa: resolution: {integrity: sha512-XOz5CAe49kS95p5yRd+DAIWDojTjfmyAQ4bbDlXMdbZTQ5t0ThjSLvWI6JI2uiS7MFurVBkZ6zUqcimzcLTBoQ==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: postcss: '>=7.0.0' postcss-syntax: '>=0.36.2' @@ -3747,7 +3916,7 @@ packages: dependencies: '@svgr/core': 6.2.1 cosmiconfig: 7.1.0 - deepmerge: 4.2.2 + deepmerge: 4.3.0 svgo: 2.8.0 dev: true @@ -3758,27 +3927,27 @@ packages: remove-accents: 0.4.2 dev: true - /@tanstack/query-core/4.22.0: - resolution: {integrity: sha512-OeLyBKBQoT265f5G9biReijeP8mBxNFwY7ZUu1dKL+YzqpG5q5z7J/N1eT8aWyKuhyDTiUHuKm5l+oIVzbtrjw==} + /@tanstack/query-core/4.24.6: + resolution: {integrity: sha512-Tfru6YTDTCpX7dKVwHp/sosw/dNjEdzrncduUjIkQxn7n7u+74HT2ZrGtwwrU6Orws4x7zp3FKRqBPWVVhpx9w==} dev: true - /@tanstack/react-query-devtools/4.22.0_gp275tdwez2a4eujt75dnnp754: - resolution: {integrity: sha512-YeYFBnfqvb+ZlA0IiJqiHNNSzepNhI1p2o9i8NlhQli9+Zrn230M47OBaBUs8qr3DD1dC2zGB1Dis50Ktz8gAA==} + /@tanstack/react-query-devtools/4.24.6_r32zdxeb7iubg3qfkymfterewe: + resolution: {integrity: sha512-d8CN4ZTtLkdCNi9x4Hogma0fdhlv7ckknv/RLuV4nbUciUoZEvhg1cI0+vp/1aY4W3jq9vH0BD/eUQKecgY15Q==} peerDependencies: - '@tanstack/react-query': 4.22.0 + '@tanstack/react-query': 4.24.6 react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@tanstack/match-sorter-utils': 8.7.6 - '@tanstack/react-query': 4.22.0_biqbaboplfbrettd7655fr4n2y + '@tanstack/react-query': 4.24.6_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - superjson: 1.12.1 + superjson: 1.12.2 use-sync-external-store: 1.2.0_react@18.2.0 dev: true - /@tanstack/react-query/4.22.0_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-P9o+HjG42uB/xHR6dMsJaPhtZydSe4v0xdG5G/cEj1oHZAXelMlm67/rYJNQGKgBamKElKogj+HYGF+NY2yHYg==} + /@tanstack/react-query/4.24.6_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-pbJUVZCS4pcXS0kZiY+mVJ01ude0GrH5OXT2g9whcqSveRG/YVup/XdA9NdRpSMGkP2HxDRxxRNsTXkniWeIIA==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -3789,22 +3958,22 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.22.0 + '@tanstack/query-core': 4.24.6 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 use-sync-external-store: 1.2.0_react@18.2.0 dev: true - /@testing-library/dom/8.19.1: - resolution: {integrity: sha512-P6iIPyYQ+qH8CvGauAqanhVnjrnRe0IZFSYCeGkSRW9q3u8bdVn2NPI+lasFyVsEQn1J/IFmp5Aax41+dAP9wg==} + /@testing-library/dom/8.20.0: + resolution: {integrity: sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA==} engines: {node: '>=12'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 '@types/aria-query': 5.0.1 aria-query: 5.1.3 chalk: 4.1.2 - dom-accessibility-api: 0.5.15 + dom-accessibility-api: 0.5.16 lz-string: 1.4.4 pretty-format: 27.5.1 dev: true @@ -3816,9 +3985,9 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/runtime': 7.20.7 - '@testing-library/dom': 8.19.1 - '@types/react-dom': 18.0.10 + '@babel/runtime': 7.20.13 + '@testing-library/dom': 8.20.0 + '@types/react-dom': 18.0.11 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: true @@ -3853,10 +4022,10 @@ packages: resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} dev: true - /@types/babel__core/7.1.20: - resolution: {integrity: sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==} + /@types/babel__core/7.20.0: + resolution: {integrity: sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==} dependencies: - '@babel/parser': 7.20.7 + '@babel/parser': 7.20.15 '@babel/types': 7.20.7 '@types/babel__generator': 7.6.4 '@types/babel__template': 7.4.1 @@ -3872,7 +4041,7 @@ packages: /@types/babel__template/7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: - '@babel/parser': 7.20.7 + '@babel/parser': 7.20.15 '@babel/types': 7.20.7 dev: true @@ -3886,7 +4055,7 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 18.11.18 + '@types/node': 18.13.0 dev: true /@types/classnames/2.3.1: @@ -3899,7 +4068,7 @@ packages: /@types/connect/3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.11.18 + '@types/node': 18.13.0 dev: true /@types/eslint/7.29.0: @@ -3913,19 +4082,19 @@ packages: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} dev: true - /@types/express-serve-static-core/4.17.32: - resolution: {integrity: sha512-aI5h/VOkxOF2Z1saPy0Zsxs5avets/iaiAJYznQFm5By/pamU31xWKL//epiF4OfUA2qTOc9PV6tCUjhO8wlZA==} + /@types/express-serve-static-core/4.17.33: + resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} dependencies: - '@types/node': 18.11.18 + '@types/node': 18.13.0 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: true - /@types/express/4.17.15: - resolution: {integrity: sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==} + /@types/express/4.17.17: + resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} dependencies: '@types/body-parser': 1.19.2 - '@types/express-serve-static-core': 4.17.32 + '@types/express-serve-static-core': 4.17.33 '@types/qs': 6.9.7 '@types/serve-static': 1.15.0 dev: true @@ -3934,13 +4103,13 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.11.18 + '@types/node': 18.13.0 dev: true /@types/graceful-fs/4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 18.11.18 + '@types/node': 18.13.0 dev: true /@types/hapi__joi/17.1.9: @@ -3954,7 +4123,7 @@ packages: /@types/hoist-non-react-statics/3.3.1: resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} dependencies: - '@types/react': 18.0.26 + '@types/react': 18.0.28 hoist-non-react-statics: 3.3.2 dev: true @@ -3982,11 +4151,11 @@ packages: '@types/istanbul-lib-report': 3.0.0 dev: true - /@types/jest/29.2.5: - resolution: {integrity: sha512-H2cSxkKgVmqNHXP7TC2L/WUorrZu8ZigyRywfVzv6EyBlxj39n4C00hjXYQWsbwqgElaj/CiAeSRmk5GoaKTgw==} + /@types/jest/29.4.0: + resolution: {integrity: sha512-VaywcGQ9tPorCX/Jkkni7RWGFfI11whqzs8dvxF41P17Z+z872thvEvlIbznjPJ02kl1HMX3LmLOonsj2n7HeQ==} dependencies: - expect: 29.3.1 - pretty-format: 29.3.1 + expect: 29.4.3 + pretty-format: 29.4.3 dev: true /@types/js-cookie/2.2.7: @@ -3996,7 +4165,7 @@ packages: /@types/jsdom/20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 18.11.18 + '@types/node': 18.13.0 '@types/tough-cookie': 4.0.2 parse5: 7.1.2 dev: true @@ -4030,8 +4199,8 @@ packages: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node/18.11.18: - resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} + /@types/node/18.13.0: + resolution: {integrity: sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==} dev: true /@types/normalize-package-data/2.4.1: @@ -4057,29 +4226,29 @@ packages: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: true - /@types/react-dom/18.0.10: - resolution: {integrity: sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==} + /@types/react-dom/18.0.11: + resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: - '@types/react': 18.0.26 + '@types/react': 18.0.28 dev: true /@types/react-helmet/6.1.6: resolution: {integrity: sha512-ZKcoOdW/Tg+kiUbkFCBtvDw0k3nD4HJ/h/B9yWxN4uDO8OkRksWTO+EL+z/Qu3aHTeTll3Ro0Cc/8UhwBCMG5A==} dependencies: - '@types/react': 18.0.26 + '@types/react': 18.0.28 dev: true /@types/react-redux/7.1.25: resolution: {integrity: sha512-bAGh4e+w5D8dajd6InASVIyCo4pZLJ66oLb80F9OBLO1gKESbZcRCJpTT6uLXX+HAB57zw1WTdwJdAsewuTweg==} dependencies: '@types/hoist-non-react-statics': 3.3.1 - '@types/react': 18.0.26 + '@types/react': 18.0.28 hoist-non-react-statics: 3.3.2 - redux: 4.2.0 + redux: 4.2.1 dev: true - /@types/react/18.0.26: - resolution: {integrity: sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==} + /@types/react/18.0.28: + resolution: {integrity: sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.2 @@ -4098,7 +4267,7 @@ packages: resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} dependencies: '@types/mime': 3.0.1 - '@types/node': 18.11.18 + '@types/node': 18.13.0 dev: true /@types/stack-utils/2.0.1: @@ -4127,13 +4296,13 @@ packages: '@types/yargs-parser': 21.0.0 dev: true - /@types/yargs/17.0.19: - resolution: {integrity: sha512-cAx3qamwaYX9R0fzOIZAlFpo4A+1uBVCxqpKz9D26uTF4srRXaGTTsikQmaotCtNdbhzyUH7ft6p9ktz9s6UNQ==} + /@types/yargs/17.0.22: + resolution: {integrity: sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==} dependencies: '@types/yargs-parser': 21.0.0 dev: true - /@typescript-eslint/eslint-plugin/5.48.1_3jon24igvnqaqexgwtxk6nkpse: + /@typescript-eslint/eslint-plugin/5.48.1_bpcieom4krd4yjmz5o6lu67pxm: resolution: {integrity: sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4144,23 +4313,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.48.1_iukboom6ndih5an6iafl45j2fe + '@typescript-eslint/parser': 5.48.1_ifw3q4r6iq3gw7cspzs2siycvu '@typescript-eslint/scope-manager': 5.48.1 - '@typescript-eslint/type-utils': 5.48.1_iukboom6ndih5an6iafl45j2fe - '@typescript-eslint/utils': 5.48.1_iukboom6ndih5an6iafl45j2fe + '@typescript-eslint/type-utils': 5.48.1_ifw3q4r6iq3gw7cspzs2siycvu + '@typescript-eslint/utils': 5.48.1_ifw3q4r6iq3gw7cspzs2siycvu debug: 4.3.4 eslint: 8.31.0 ignore: 5.2.4 natural-compare-lite: 1.4.0 regexpp: 3.2.0 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.4 - typescript: 4.9.4 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/eslint-plugin/5.48.1_s66zx5d3yhyn34ft2zz26bcwti: + /@typescript-eslint/eslint-plugin/5.48.1_bzepuo66bcyj4mepwnxofjvdli: resolution: {integrity: sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4171,23 +4340,51 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/parser': 5.48.1_yfqovispp7u7jaktymfaqwl2py + '@typescript-eslint/parser': 5.48.1_7kw3g6rralp5ps6mg3uyzz6azm '@typescript-eslint/scope-manager': 5.48.1 - '@typescript-eslint/type-utils': 5.48.1_yfqovispp7u7jaktymfaqwl2py - '@typescript-eslint/utils': 5.48.1_yfqovispp7u7jaktymfaqwl2py + '@typescript-eslint/type-utils': 5.48.1_7kw3g6rralp5ps6mg3uyzz6azm + '@typescript-eslint/utils': 5.48.1_7kw3g6rralp5ps6mg3uyzz6azm + debug: 4.3.4 + eslint: 8.34.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + regexpp: 3.2.0 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/eslint-plugin/5.52.0_j2xzuhj7jlo6utt4db5kd4zyxy: + resolution: {integrity: sha512-lHazYdvYVsBokwCdKOppvYJKaJ4S41CgKBcPvyd0xjZNbvQdhn/pnJlGtQksQ/NhInzdaeaSarlBjDXHuclEbg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/parser': 5.52.0_jofidmxrjzhj7l6vknpw5ecvfe + '@typescript-eslint/scope-manager': 5.52.0 + '@typescript-eslint/type-utils': 5.52.0_jofidmxrjzhj7l6vknpw5ecvfe + '@typescript-eslint/utils': 5.52.0_jofidmxrjzhj7l6vknpw5ecvfe debug: 4.3.4 eslint: 7.32.0 + grapheme-splitter: 1.0.4 ignore: 5.2.4 natural-compare-lite: 1.4.0 regexpp: 3.2.0 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.4 - typescript: 4.9.4 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/experimental-utils/4.33.0_yfqovispp7u7jaktymfaqwl2py: + /@typescript-eslint/experimental-utils/4.33.0_jofidmxrjzhj7l6vknpw5ecvfe: resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -4196,7 +4393,7 @@ packages: '@types/json-schema': 7.0.11 '@typescript-eslint/scope-manager': 4.33.0 '@typescript-eslint/types': 4.33.0 - '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.9.4 + '@typescript-eslint/typescript-estree': 4.33.0_typescript@4.9.5 eslint: 7.32.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@7.32.0 @@ -4205,7 +4402,7 @@ packages: - typescript dev: true - /@typescript-eslint/parser/5.48.1_iukboom6ndih5an6iafl45j2fe: + /@typescript-eslint/parser/5.48.1_7kw3g6rralp5ps6mg3uyzz6azm: resolution: {integrity: sha512-4yg+FJR/V1M9Xoq56SF9Iygqm+r5LMXvheo6DQ7/yUWynQ4YfCRnsKuRgqH4EQ5Ya76rVwlEpw4Xu+TgWQUcdA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4217,15 +4414,15 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.48.1 '@typescript-eslint/types': 5.48.1 - '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.4 + '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.5 debug: 4.3.4 - eslint: 8.31.0 - typescript: 4.9.4 + eslint: 8.34.0 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser/5.48.1_yfqovispp7u7jaktymfaqwl2py: + /@typescript-eslint/parser/5.48.1_ifw3q4r6iq3gw7cspzs2siycvu: resolution: {integrity: sha512-4yg+FJR/V1M9Xoq56SF9Iygqm+r5LMXvheo6DQ7/yUWynQ4YfCRnsKuRgqH4EQ5Ya76rVwlEpw4Xu+TgWQUcdA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4237,10 +4434,30 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.48.1 '@typescript-eslint/types': 5.48.1 - '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.4 + '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.5 + debug: 4.3.4 + eslint: 8.31.0 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser/5.52.0_jofidmxrjzhj7l6vknpw5ecvfe: + resolution: {integrity: sha512-e2KiLQOZRo4Y0D/b+3y08i3jsekoSkOYStROYmPUnGMEoA0h+k2qOH5H6tcjIc68WDvGwH+PaOrP1XRzLJ6QlA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.52.0 + '@typescript-eslint/types': 5.52.0 + '@typescript-eslint/typescript-estree': 5.52.0_typescript@4.9.5 debug: 4.3.4 eslint: 7.32.0 - typescript: 4.9.4 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true @@ -4261,7 +4478,15 @@ packages: '@typescript-eslint/visitor-keys': 5.48.1 dev: true - /@typescript-eslint/type-utils/5.48.1_iukboom6ndih5an6iafl45j2fe: + /@typescript-eslint/scope-manager/5.52.0: + resolution: {integrity: sha512-AR7sxxfBKiNV0FWBSARxM8DmNxrwgnYMPwmpkC1Pl1n+eT8/I2NAUPuwDy/FmDcC6F8pBfmOcaxcxRHspgOBMw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.52.0 + '@typescript-eslint/visitor-keys': 5.52.0 + dev: true + + /@typescript-eslint/type-utils/5.48.1_7kw3g6rralp5ps6mg3uyzz6azm: resolution: {integrity: sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4271,17 +4496,17 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.4 - '@typescript-eslint/utils': 5.48.1_iukboom6ndih5an6iafl45j2fe + '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.5 + '@typescript-eslint/utils': 5.48.1_7kw3g6rralp5ps6mg3uyzz6azm debug: 4.3.4 - eslint: 8.31.0 - tsutils: 3.21.0_typescript@4.9.4 - typescript: 4.9.4 + eslint: 8.34.0 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/type-utils/5.48.1_yfqovispp7u7jaktymfaqwl2py: + /@typescript-eslint/type-utils/5.48.1_ifw3q4r6iq3gw7cspzs2siycvu: resolution: {integrity: sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4291,12 +4516,32 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.4 - '@typescript-eslint/utils': 5.48.1_yfqovispp7u7jaktymfaqwl2py + '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.5 + '@typescript-eslint/utils': 5.48.1_ifw3q4r6iq3gw7cspzs2siycvu + debug: 4.3.4 + eslint: 8.31.0 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/type-utils/5.52.0_jofidmxrjzhj7l6vknpw5ecvfe: + resolution: {integrity: sha512-tEKuUHfDOv852QGlpPtB3lHOoig5pyFQN/cUiZtpw99D93nEBjexRLre5sQZlkMoHry/lZr8qDAt2oAHLKA6Jw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.52.0_typescript@4.9.5 + '@typescript-eslint/utils': 5.52.0_jofidmxrjzhj7l6vknpw5ecvfe debug: 4.3.4 eslint: 7.32.0 - tsutils: 3.21.0_typescript@4.9.4 - typescript: 4.9.4 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true @@ -4311,7 +4556,12 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree/4.33.0_typescript@4.9.4: + /@typescript-eslint/types/5.52.0: + resolution: {integrity: sha512-oV7XU4CHYfBhk78fS7tkum+/Dpgsfi91IIDy7fjCyq2k6KB63M6gMC0YIvy+iABzmXThCRI6xpCEyVObBdWSDQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/typescript-estree/4.33.0_typescript@4.9.5: resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -4326,13 +4576,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.4 - typescript: 4.9.4 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree/5.48.1_typescript@4.9.4: + /@typescript-eslint/typescript-estree/5.48.1_typescript@4.9.5: resolution: {integrity: sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4347,13 +4597,34 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.3.8 - tsutils: 3.21.0_typescript@4.9.4 - typescript: 4.9.4 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree/5.52.0_typescript@4.9.5: + resolution: {integrity: sha512-WeWnjanyEwt6+fVrSR0MYgEpUAuROxuAH516WPjUblIrClzYJj0kBbjdnbQXLpgAN8qbEuGywiQsXUVDiAoEuQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.52.0 + '@typescript-eslint/visitor-keys': 5.52.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.8 + tsutils: 3.21.0_typescript@4.9.5 + typescript: 4.9.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils/5.48.1_iukboom6ndih5an6iafl45j2fe: + /@typescript-eslint/utils/5.48.1_7kw3g6rralp5ps6mg3uyzz6azm: resolution: {integrity: sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4363,17 +4634,17 @@ packages: '@types/semver': 7.3.13 '@typescript-eslint/scope-manager': 5.48.1 '@typescript-eslint/types': 5.48.1 - '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.4 - eslint: 8.31.0 + '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.5 + eslint: 8.34.0 eslint-scope: 5.1.1 - eslint-utils: 3.0.0_eslint@8.31.0 + eslint-utils: 3.0.0_eslint@8.34.0 semver: 7.3.8 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/utils/5.48.1_yfqovispp7u7jaktymfaqwl2py: + /@typescript-eslint/utils/5.48.1_ifw3q4r6iq3gw7cspzs2siycvu: resolution: {integrity: sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -4383,7 +4654,67 @@ packages: '@types/semver': 7.3.13 '@typescript-eslint/scope-manager': 5.48.1 '@typescript-eslint/types': 5.48.1 - '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.4 + '@typescript-eslint/typescript-estree': 5.48.1_typescript@4.9.5 + eslint: 8.31.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.31.0 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils/5.52.0_7kw3g6rralp5ps6mg3uyzz6azm: + resolution: {integrity: sha512-As3lChhrbwWQLNk2HC8Ree96hldKIqk98EYvypd3It8Q1f8d5zWyIoaZEp2va5667M4ZyE7X8UUR+azXrFl+NA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.52.0 + '@typescript-eslint/types': 5.52.0 + '@typescript-eslint/typescript-estree': 5.52.0_typescript@4.9.5 + eslint: 8.34.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.34.0 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils/5.52.0_ifw3q4r6iq3gw7cspzs2siycvu: + resolution: {integrity: sha512-As3lChhrbwWQLNk2HC8Ree96hldKIqk98EYvypd3It8Q1f8d5zWyIoaZEp2va5667M4ZyE7X8UUR+azXrFl+NA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.52.0 + '@typescript-eslint/types': 5.52.0 + '@typescript-eslint/typescript-estree': 5.52.0_typescript@4.9.5 + eslint: 8.31.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@8.31.0 + semver: 7.3.8 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils/5.52.0_jofidmxrjzhj7l6vknpw5ecvfe: + resolution: {integrity: sha512-As3lChhrbwWQLNk2HC8Ree96hldKIqk98EYvypd3It8Q1f8d5zWyIoaZEp2va5667M4ZyE7X8UUR+azXrFl+NA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@types/semver': 7.3.13 + '@typescript-eslint/scope-manager': 5.52.0 + '@typescript-eslint/types': 5.52.0 + '@typescript-eslint/typescript-estree': 5.52.0_typescript@4.9.5 eslint: 7.32.0 eslint-scope: 5.1.1 eslint-utils: 3.0.0_eslint@7.32.0 @@ -4409,21 +4740,29 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@umijs/ast/4.0.44: - resolution: {integrity: sha512-ldnKagu/qFk9ujEqpPdsxic2YSpd0JB5sI0j241TjQcpvr8xDy4aHAq4GMDqX1RiVuNt6/L2F193MvCG2oMdYQ==} + /@typescript-eslint/visitor-keys/5.52.0: + resolution: {integrity: sha512-qMwpw6SU5VHCPr99y274xhbm+PRViK/NATY6qzt+Et7+mThGuFSl/ompj2/hrBlRP/kq+BFdgagnOSgw9TB0eA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.52.0 + eslint-visitor-keys: 3.3.0 + dev: true + + /@umijs/ast/4.0.51: + resolution: {integrity: sha512-UY/d4PyxDX5RWueyHHTWzTlTS9Y5O3ao1pfrQyFux5oZ3UYG+6AT+4oNWhhkEfCnVbbMShFCfUQX7XbCMoGjBQ==} dependencies: - '@umijs/bundler-utils': 4.0.44 + '@umijs/bundler-utils': 4.0.51 transitivePeerDependencies: - supports-color dev: true - /@umijs/babel-preset-umi/4.0.44: - resolution: {integrity: sha512-6uF8lSxTGr0mTMUc5y22jlxWqBGKVmx0GscPt3zSIhmXcqffwf34wjEpbeCqQ8rq7y4VWdRSZQjgK3DhKGc1dg==} + /@umijs/babel-preset-umi/4.0.51: + resolution: {integrity: sha512-jQpTqJln0dAidP9Adyt+8dUZGxlWs8ZfyjhchNJdoUSRAvPqPEdn2usGYvwR9BUQUSdj2L0Z4vX0bLoNF9H1CA==} dependencies: '@babel/runtime': 7.20.7 '@bloomberg/record-tuple-polyfill': 0.0.4 - '@umijs/bundler-utils': 4.0.44 - '@umijs/utils': 4.0.44 + '@umijs/bundler-utils': 4.0.51 + '@umijs/utils': 4.0.51 babel-plugin-styled-components: 2.0.7 core-js: 3.27.1 transitivePeerDependencies: @@ -4431,12 +4770,12 @@ packages: - supports-color dev: true - /@umijs/bundler-esbuild/4.0.44: - resolution: {integrity: sha512-Kbft17+6d9kIHNbibmJIS0aDM1NcXkjQUVec3cNwDlDvvIrjTGlLsGV5fejq5bXx+TVwukK3h+AIS7XsIi7n0Q==} + /@umijs/bundler-esbuild/4.0.51: + resolution: {integrity: sha512-sDTFW/am2f2lbCDao++3l58IAeMM3sFnxl+FzLRM+HxRxgqKn9NBJf7EtOn5t73/h9CMxoeiVTy+NsyBr5i6nA==} hasBin: true dependencies: - '@umijs/bundler-utils': 4.0.44 - '@umijs/utils': 4.0.44 + '@umijs/bundler-utils': 4.0.51 + '@umijs/utils': 4.0.51 enhanced-resolve: 5.9.3 postcss: 8.4.21 postcss-flexbugs-fixes: 5.0.2_postcss@8.4.21 @@ -4445,10 +4784,10 @@ packages: - supports-color dev: true - /@umijs/bundler-utils/4.0.36: - resolution: {integrity: sha512-Xsazfi8RqnnhwcxWtCBX4nzzBoWuRPhDMIj2VjfLAOgUFse7HDOyuNeE/SVFeSkJZ94i7mq//v6F5MH6VgyaMw==} + /@umijs/bundler-utils/4.0.42: + resolution: {integrity: sha512-cXhMyCiSK/Otg5nkeDJuDeRS84KqFoSR14BTtKkRCH6N3Dk9Xp2q8zXne9DNdQx7HUvb6s1pmA6Pc9S1mzNp5g==} dependencies: - '@umijs/utils': 4.0.36 + '@umijs/utils': 4.0.42 esbuild: 0.15.18 regenerate: 1.4.2 regenerate-unicode-properties: 10.0.1 @@ -4457,25 +4796,25 @@ packages: - supports-color dev: true - /@umijs/bundler-utils/4.0.44: - resolution: {integrity: sha512-L7Q/D7lSAWxuXIbBCOLrbfOm5xb4uA89xdWRzUj3n2IhBRP/h7xVF+qmLO/QgcY1ON11hzZUCnB4z4HZ6c+95Q==} + /@umijs/bundler-utils/4.0.51: + resolution: {integrity: sha512-XuwhCMWX1OxANN96ynabeBj+V1F/XTZ1jHGLUu16t4Pjab7eirrQA/L7RmEMm2SfBtKtzeeHY60DBv9RJVE3Xw==} dependencies: - '@umijs/utils': 4.0.44 + '@umijs/utils': 4.0.51 esbuild: 0.16.17 regenerate: 1.4.2 - regenerate-unicode-properties: 10.0.1 + regenerate-unicode-properties: 10.1.0 spdy: 4.0.2 transitivePeerDependencies: - supports-color dev: true - /@umijs/bundler-vite/4.0.44: - resolution: {integrity: sha512-wVAQMLg6UI7I7IcqifYwQQ2Pz6DgjrxeFHMjTQHRnvzAuJgEstyZ1MRc2Yg53q8zgCpvbHUwvDr5htIFQ39Dvg==} + /@umijs/bundler-vite/4.0.51: + resolution: {integrity: sha512-Er6gP+1S8Jnk6ZyK1mwGDQbA14LAiMGoK8jMsjknqPkCzdy1Y3/H4JdFQhHBERz/Fq0DA/jcxEnVfwbtGCFy2Q==} hasBin: true dependencies: '@svgr/core': 6.2.1 - '@umijs/bundler-utils': 4.0.44 - '@umijs/utils': 4.0.44 + '@umijs/bundler-utils': 4.0.51 + '@umijs/utils': 4.0.51 '@vitejs/plugin-react': 2.2.0_vite@3.2.5 less: 4.1.3 postcss-preset-env: 7.5.0 @@ -4492,30 +4831,30 @@ packages: - terser dev: true - /@umijs/bundler-webpack/4.0.44_typescript@4.9.4: - resolution: {integrity: sha512-6/wwCL4uuWDLVhRR4TAHZSUC+XvJmIuCC5ybyspvkm2YItf4ze6EDoNaYDFam2J19cHBkOALxGQ+UX4DEPk1SA==} + /@umijs/bundler-webpack/4.0.51_typescript@4.9.5: + resolution: {integrity: sha512-NwoKhwz/Pe63UE9yss+kgsTVhHfiQZ/uIsVFYRkrZLU/6EadrO1Xjprvoh4ZAA9sNnJguw3Il3q1l8rzuscFew==} hasBin: true dependencies: - '@parcel/css': 1.9.0 '@pmmmwh/react-refresh-webpack-plugin': 0.5.7_react-refresh@0.14.0 '@svgr/core': 6.2.1 '@svgr/plugin-jsx': 6.5.1_@svgr+core@6.2.1 '@svgr/plugin-svgo': 6.5.1_@svgr+core@6.2.1 '@types/hapi__joi': 17.1.9 - '@umijs/babel-preset-umi': 4.0.44 - '@umijs/bundler-utils': 4.0.44 + '@umijs/babel-preset-umi': 4.0.51 + '@umijs/bundler-utils': 4.0.51 '@umijs/case-sensitive-paths-webpack-plugin': 1.0.1 - '@umijs/mfsu': 4.0.44 - '@umijs/utils': 4.0.44 + '@umijs/mfsu': 4.0.51 + '@umijs/utils': 4.0.51 cors: 2.8.5 css-loader: 6.7.1 es5-imcompatible-versions: 0.1.77 - fork-ts-checker-webpack-plugin: 7.3.0_typescript@4.9.4 + fork-ts-checker-webpack-plugin: 7.3.0_typescript@4.9.5 jest-worker: 29.3.1 + lightningcss: 1.18.0 node-libs-browser: 2.2.1 postcss: 8.4.21 postcss-preset-env: 7.5.0_postcss@8.4.21 - react-error-overlay: 6.0.11 + react-error-overlay: 6.0.9 react-refresh: 0.14.0 transitivePeerDependencies: - '@types/webpack' @@ -4535,53 +4874,53 @@ packages: resolution: {integrity: sha512-kDKJ8yTarxwxGJDInG33hOpaQRZ//XpNuuznQ/1Mscypw6kappzFmrBr2dOYave++K7JHouoANF354UpbEQw0Q==} dev: true - /@umijs/core/4.0.44: - resolution: {integrity: sha512-Zxf6PIwEhE83c+EfkNhtNNeya1TCEZLwwjI94tHubFc9/VX7/UErV91oROx2DxyTjucRBtn5nWqHfBqD4px90A==} + /@umijs/core/4.0.51: + resolution: {integrity: sha512-Y+CvHNsynbWsE/Y+E7eq6Q3pfUGRnj75J5edU9LPmk/9V4e7MLF79IxMzS1xC514zr7eZrLRRsXp2QFPJCCX7Q==} dependencies: - '@umijs/bundler-utils': 4.0.44 - '@umijs/utils': 4.0.44 + '@umijs/bundler-utils': 4.0.51 + '@umijs/utils': 4.0.51 transitivePeerDependencies: - supports-color dev: true - /@umijs/did-you-know/1.0.1: - resolution: {integrity: sha512-FnKZbWb/X3Nk5vmQ4u2qEtB20+fv1kt4WCSvMIhln/kjh+oS6RA4WfvB+EHsfxdotD4qSaj5cqIDgbCYoCNzEA==} + /@umijs/did-you-know/1.0.3: + resolution: {integrity: sha512-9EZ+rgY9+2HEaE+Z9dGkal2ccw8L4uuz77tCB5WpskW7NBZX5nOj82sqF/shEtA5tU3SWO/Mi4n35K3iONvDtw==} dev: true - /@umijs/fabric/2.14.0: - resolution: {integrity: sha512-tiqKWYFwK9dgrdC8U1IjdIqeIv6W3NhROJHb07u1D72KWpGoN2U7/gVRtyMq7psBSK4EwHyXL6sFtIGUibs2ng==} + /@umijs/fabric/2.14.1: + resolution: {integrity: sha512-fOyXcbViOB+/jW+g2rCiK9XjSZVn4OzFuMZpSCriCdR/KxhxLTokvJWFm3CzBEmg9vXfrBFQ4c/ykmqoVacHtw==} hasBin: true dependencies: '@babel/core': 7.20.12 '@babel/eslint-parser': 7.19.1_go3kp2l7mdrkdyt3xfyeu7ppfa '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-decorators': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-proposal-decorators': 7.20.13_@babel+core@7.20.12 '@babel/preset-env': 7.20.2_@babel+core@7.20.12 '@babel/preset-react': 7.18.6_@babel+core@7.20.12 '@babel/preset-typescript': 7.18.6_@babel+core@7.20.12 - '@typescript-eslint/eslint-plugin': 5.48.1_s66zx5d3yhyn34ft2zz26bcwti - '@typescript-eslint/parser': 5.48.1_yfqovispp7u7jaktymfaqwl2py + '@typescript-eslint/eslint-plugin': 5.52.0_j2xzuhj7jlo6utt4db5kd4zyxy + '@typescript-eslint/parser': 5.52.0_jofidmxrjzhj7l6vknpw5ecvfe chalk: 4.1.2 eslint: 7.32.0 eslint-config-prettier: 8.6.0_eslint@7.32.0 eslint-formatter-pretty: 4.1.0 eslint-plugin-babel: 5.3.1_eslint@7.32.0 - eslint-plugin-jest: 24.7.0_7o4xqfjf6pwo3mvvonizibb5lq + eslint-plugin-jest: 24.7.0_giwqt5bttcxhbw6aus5n7ehcnu eslint-plugin-promise: 6.1.1_eslint@7.32.0 - eslint-plugin-react: 7.32.0_eslint@7.32.0 + eslint-plugin-react: 7.32.2_eslint@7.32.0 eslint-plugin-react-hooks: 4.6.0_eslint@7.32.0 eslint-plugin-unicorn: 20.1.0_eslint@7.32.0 fast-glob: 3.2.12 os-locale: 5.0.0 - prettier: 2.8.2 - prettier-plugin-packagejson: 2.3.0_prettier@2.8.2 - prettier-plugin-two-style-order: 1.0.1_prettier@2.8.2 + prettier: 2.8.4 + prettier-plugin-packagejson: 2.3.0_prettier@2.8.4 + prettier-plugin-two-style-order: 1.0.1_prettier@2.8.4 stylelint: 13.13.1 stylelint-config-css-modules: 2.3.0_stylelint@13.13.1 stylelint-config-prettier: 8.0.2_stylelint@13.13.1 stylelint-config-standard: 20.0.0_stylelint@13.13.1 - stylelint-declaration-block-no-ignored-properties: 2.6.0_stylelint@13.13.1 - typescript: 4.9.4 + stylelint-declaration-block-no-ignored-properties: 2.7.0_stylelint@13.13.1 + typescript: 4.9.5 transitivePeerDependencies: - postcss-jsx - postcss-markdown @@ -4595,18 +4934,18 @@ packages: query-string: 6.14.1 dev: true - /@umijs/lint/4.0.44_kudefufnb5v4dzpyosesvz63ky: - resolution: {integrity: sha512-fBuxAb3LrWjXiARIbL0Qxb8y3oe794YtdlCM7yqLMH/IAA10JSQbH4EtKmlMPIXKRDbJtSxqNWmzgdkPv+4/Hg==} + /@umijs/lint/4.0.51_jrzwjw3eqcxkrr4jwa5zddmkz4: + resolution: {integrity: sha512-hWh9cvCYKJUw1RTZtLzOx2dqcCb+AIKroyoeoml6idA8e9g4NgghUT6u5qCtC8A+v82hq9BsT7xLyKs3/H/hTg==} dependencies: '@babel/core': 7.20.12 - '@babel/eslint-parser': 7.19.1_ucmnolur3r335ullwiyt3zl3pi + '@babel/eslint-parser': 7.19.1_ydmbqfus77qykiqxhcwsorsqbq '@stylelint/postcss-css-in-js': 0.38.0_64375vj2stjdn6gyt55zwvoboa - '@typescript-eslint/eslint-plugin': 5.48.1_3jon24igvnqaqexgwtxk6nkpse - '@typescript-eslint/parser': 5.48.1_iukboom6ndih5an6iafl45j2fe - '@umijs/babel-preset-umi': 4.0.44 - eslint-plugin-jest: 26.1.5_gwbh725yvx2gda2van5hxf7p64 - eslint-plugin-react: 7.29.4_eslint@8.31.0 - eslint-plugin-react-hooks: 4.5.0_eslint@8.31.0 + '@typescript-eslint/eslint-plugin': 5.48.1_bzepuo66bcyj4mepwnxofjvdli + '@typescript-eslint/parser': 5.48.1_7kw3g6rralp5ps6mg3uyzz6azm + '@umijs/babel-preset-umi': 4.0.51 + eslint-plugin-jest: 26.1.5_slhnd4adxg6hncizzqnqt5iyja + eslint-plugin-react: 7.29.4_eslint@8.34.0 + eslint-plugin-react-hooks: 4.5.0_eslint@8.34.0 postcss: 8.4.21 postcss-syntax: 0.36.2_postcss@8.4.21 stylelint-config-standard: 25.0.0 @@ -4624,16 +4963,16 @@ packages: - typescript dev: true - /@umijs/lint/4.0.44_wgtjig7p4wmwivl42uyznyoani: - resolution: {integrity: sha512-fBuxAb3LrWjXiARIbL0Qxb8y3oe794YtdlCM7yqLMH/IAA10JSQbH4EtKmlMPIXKRDbJtSxqNWmzgdkPv+4/Hg==} + /@umijs/lint/4.0.51_uqnovjyowm2y6c3zpb3q5ibfoy: + resolution: {integrity: sha512-hWh9cvCYKJUw1RTZtLzOx2dqcCb+AIKroyoeoml6idA8e9g4NgghUT6u5qCtC8A+v82hq9BsT7xLyKs3/H/hTg==} dependencies: '@babel/core': 7.20.12 '@babel/eslint-parser': 7.19.1_ucmnolur3r335ullwiyt3zl3pi '@stylelint/postcss-css-in-js': 0.38.0_64375vj2stjdn6gyt55zwvoboa - '@typescript-eslint/eslint-plugin': 5.48.1_3jon24igvnqaqexgwtxk6nkpse - '@typescript-eslint/parser': 5.48.1_iukboom6ndih5an6iafl45j2fe - '@umijs/babel-preset-umi': 4.0.44 - eslint-plugin-jest: 26.1.5_gwbh725yvx2gda2van5hxf7p64 + '@typescript-eslint/eslint-plugin': 5.48.1_bpcieom4krd4yjmz5o6lu67pxm + '@typescript-eslint/parser': 5.48.1_ifw3q4r6iq3gw7cspzs2siycvu + '@umijs/babel-preset-umi': 4.0.51 + eslint-plugin-jest: 26.1.5_miw4sfjr4mddcelagl22ykbtrm eslint-plugin-react: 7.29.4_eslint@8.31.0 eslint-plugin-react-hooks: 4.5.0_eslint@8.31.0 postcss: 8.4.21 @@ -4656,7 +4995,7 @@ packages: /@umijs/max-plugin-openapi/2.0.2: resolution: {integrity: sha512-CwFv9zVTPVUAYOyrlmo6AwaxFGFFDOY3w31yKURmM0/F08v9QRAOl3UkL47FDOLoQbhwlYJV8hgakzwxRAAV2Q==} dependencies: - '@umijs/openapi': 1.8.1 + '@umijs/openapi': 1.8.2 rimraf: 3.0.2 serve-static: 1.15.0 swagger-ui-dist: 4.15.5 @@ -4668,20 +5007,18 @@ packages: - supports-color dev: true - /@umijs/max/4.0.44_qgo5fbsqag6anccdzo2ypcvrri: - resolution: {integrity: sha512-lDVu+2SHxUvOzthInprswxHIUE6Bl/vxLw+kWuj2CJHNuBwIKdwf6aigw9L827PU+/0kNGfUelEWcwyTWuIe7w==} + /@umijs/max/4.0.51_sk62eavrhdxpjt2gdk56aqurvy: + resolution: {integrity: sha512-ivDkpKsS+a/bMI2edNXoSah/dLVixV+Dp4N47mKPOjn5JpO79byqrfRawWEUnNXlt+FshoNHLyoHFIlPP5E4GQ==} hasBin: true dependencies: - '@umijs/lint': 4.0.44_wgtjig7p4wmwivl42uyznyoani - '@umijs/plugins': 4.0.44_ol4gf5ysdgp6msy6qgsp7snw2u - antd: 4.24.7_biqbaboplfbrettd7655fr4n2y + '@umijs/lint': 4.0.51_uqnovjyowm2y6c3zpb3q5ibfoy + '@umijs/plugins': 4.0.51_g6h54c4lfmdo55asb7z5z7dyhu + antd: 4.24.8_biqbaboplfbrettd7655fr4n2y eslint: 8.31.0 stylelint: 14.8.2 - umi: 4.0.44_jmsqo4zypbbjozzwpr4bmyrgiu + umi: 4.0.51_5sxtzqf4pm6epycwyxpxfttr6q transitivePeerDependencies: - '@babel/core' - - '@babel/helper-module-imports' - - '@babel/types' - '@types/lodash.merge' - '@types/node' - '@types/react' @@ -4689,8 +5026,6 @@ packages: - '@types/webpack' - '@volar/vue-language-plugin-pug' - '@volar/vue-typescript' - - aslemammad-vite-plugin-macro - - babel-plugin-macros - babel-plugin-styled-components - debug - dva @@ -4716,7 +5051,6 @@ packages: - terser - type-fest - typescript - - vite - vue-template-compiler - webpack - webpack-dev-server @@ -4724,32 +5058,33 @@ packages: - webpack-plugin-serve dev: true - /@umijs/mfsu/4.0.44: - resolution: {integrity: sha512-giTdTGh7zYNm6MdlDUivREBUtNabXqnXVtr1s+8mtYfvixnpe+vKE66tkR4Frd6r/Rj+va+DFNvgM+OSkD0M2A==} + /@umijs/mfsu/4.0.51: + resolution: {integrity: sha512-ipv3X5wdq3komrcJgY1FLqs6PluoL+IMN+JCfWxRq65qvzTCqWB0Ho6F58UUnTkk+8WmQyULrCGgKvfO0IoJEA==} dependencies: - '@umijs/bundler-esbuild': 4.0.44 - '@umijs/bundler-utils': 4.0.44 - '@umijs/utils': 4.0.44 + '@umijs/bundler-esbuild': 4.0.51 + '@umijs/bundler-utils': 4.0.51 + '@umijs/utils': 4.0.51 enhanced-resolve: 5.9.3 is-equal: 1.6.4 transitivePeerDependencies: - supports-color dev: true - /@umijs/openapi/1.8.1: - resolution: {integrity: sha512-xXOHhAHOJp37PIjJcyK3GQwRo81kyomB+OelSyDlc8Htct0/6tSPaj9OqDuUwg2gd+mGf90CpdssHaesfhPgkQ==} + /@umijs/openapi/1.8.2: + resolution: {integrity: sha512-XVhhL/VeKqLJf5MGIClrIj2kuBFOD0Mp6zCL/9PhGVX28oxYDOBKSntLBc3VH6yT8FuFP1GQVc5A8EpjqgWOqw==} dependencies: - '@umijs/fabric': 2.14.0 + '@umijs/fabric': 2.14.1 chalk: 4.1.2 dayjs: 1.11.7 glob: 7.2.3 + lodash: 4.17.21 memoizee: 0.4.15 mock.js: 0.2.0 mockjs: 1.1.0 - node-fetch: 2.6.8 + node-fetch: 2.6.9 nunjucks: 3.2.3 openapi3-ts: 2.0.2 - prettier: 2.8.2 + prettier: 2.8.4 reserved-words: 0.1.2 rimraf: 3.0.2 swagger2openapi: 7.0.8 @@ -4762,26 +5097,26 @@ packages: - supports-color dev: true - /@umijs/plugin-run/4.0.44: - resolution: {integrity: sha512-WYmbf1QvxyKNbg1sJbekSCzDjbW+SZe/1YvydmFEOb8+9FhoK447oqqZ22i/f/ssn7kr+vKzdoGBAqNHehQPkw==} + /@umijs/plugin-run/4.0.51: + resolution: {integrity: sha512-VZ5Mweo9xsXpeYvtCTvsVQQmldkkheCS5I+QW9RQmpIv3R1QF3dB8hw4ym82v89ym/USS5XvkmeuebId1SD3BA==} dependencies: - tsx: 3.12.2 + tsx: 3.12.3 dev: true - /@umijs/plugins/4.0.36_aegj6e4bshbj2ek6a2qagy3lt4: - resolution: {integrity: sha512-FqkWOsowHFjQxyI+LzXjrGh8/D2m/VkYMMMY+jlLoprFybBapdT2oQuOqZyo22rRMn2H9Ii8eIG8L7e/yv02rg==} + /@umijs/plugins/4.0.42_j6z4hab2i3bwnwb4dzmobxs5ea: + resolution: {integrity: sha512-H9KXiGkkoAUIi4Cwx7d3g33COLdMN4+fbO/PIl52xDb18Gafi4hylHnEjPnttNUz8YhW5S+4BMS8UzisqIhjbw==} dependencies: '@ahooksjs/use-request': 2.8.15_react@18.2.0 '@ant-design/antd-theme-variable': 1.0.0 '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-components': 2.3.52_3eprgtpjc4b52y4s5m2payzg5q - '@umijs/bundler-utils': 4.0.36 - '@umijs/valtio': 1.0.2_react@18.2.0 + '@ant-design/pro-components': 2.3.54_zziuzmw57eovk2ycxuppotpvc4 + '@umijs/bundler-utils': 4.0.42 + '@umijs/valtio': 1.0.3_react@18.2.0 antd-dayjs-webpack-plugin: 1.0.6_dayjs@1.11.7 axios: 0.27.2 babel-plugin-import: 1.13.6 dayjs: 1.11.7 - dva-core: 2.0.4_redux@4.2.0 + dva-core: 2.0.4_redux@4.2.1 dva-immer: 1.0.0 dva-loading: 3.0.22_dva-core@2.0.4 event-emitter: 0.3.5 @@ -4789,21 +5124,17 @@ packages: intl: 1.2.5 lodash: 4.17.21 moment: 2.29.4 - qiankun: 2.8.4 + qiankun: 2.9.2 react-intl: 3.12.1_react@18.2.0 - react-redux: 8.0.5_gm3gubmwja4o7q6fr6adx3fpz4 - redux: 4.2.0 + react-redux: 8.0.5_ctrls2ti7t7iutxbwkm5ipogyy + redux: 4.2.1 styled-components: 6.0.0-beta.6_biqbaboplfbrettd7655fr4n2y warning: 4.0.3 transitivePeerDependencies: - - '@babel/helper-module-imports' - - '@babel/types' - '@types/lodash.merge' - '@types/react' - '@types/react-dom' - antd - - aslemammad-vite-plugin-macro - - babel-plugin-macros - babel-plugin-styled-components - debug - dva @@ -4812,25 +5143,24 @@ packages: - react-dom - react-native - supports-color - - vite dev: true - /@umijs/plugins/4.0.44_aegj6e4bshbj2ek6a2qagy3lt4: - resolution: {integrity: sha512-jOwvMOycqcJ2DtCDy4RAUBI9iP3S4cmFILVGKKXXl1q/89/5JtCt2p0KD0JH8qQele+2Q7gusP5+mhbbojNEDA==} + /@umijs/plugins/4.0.51_g6h54c4lfmdo55asb7z5z7dyhu: + resolution: {integrity: sha512-IIUYvSEzA89gVWIo3hB79OLDuFYswsL6M6tIOWjQIiQHRJG5fA4DXF5LEdAEgEX/1BnrzHZEkhRIF2Fmar/lnw==} dependencies: '@ahooksjs/use-request': 2.8.15_react@18.2.0 '@ant-design/antd-theme-variable': 1.0.0 '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-components': 2.3.52_3eprgtpjc4b52y4s5m2payzg5q - '@tanstack/react-query': 4.22.0_biqbaboplfbrettd7655fr4n2y - '@tanstack/react-query-devtools': 4.22.0_gp275tdwez2a4eujt75dnnp754 - '@umijs/bundler-utils': 4.0.44 - '@umijs/valtio': 1.0.2_react@18.2.0 + '@ant-design/pro-components': 2.3.54_eyanc6viuzknyw5lsn6lba32mq + '@tanstack/react-query': 4.24.6_biqbaboplfbrettd7655fr4n2y + '@tanstack/react-query-devtools': 4.24.6_r32zdxeb7iubg3qfkymfterewe + '@umijs/bundler-utils': 4.0.51 + '@umijs/valtio': 1.0.3_react@18.2.0 antd-dayjs-webpack-plugin: 1.0.6_dayjs@1.11.7 axios: 0.27.2 babel-plugin-import: 1.13.6 dayjs: 1.11.7 - dva-core: 2.0.4_redux@4.2.0 + dva-core: 2.0.4_redux@4.2.1 dva-immer: 1.0.0 dva-loading: 3.0.22_dva-core@2.0.4 event-emitter: 0.3.5 @@ -4838,22 +5168,18 @@ packages: intl: 1.2.5 lodash: 4.17.21 moment: 2.29.4 - qiankun: 2.8.4 + qiankun: 2.9.2 react-intl: 3.12.1_react@18.2.0 - react-redux: 8.0.5_gm3gubmwja4o7q6fr6adx3fpz4 - redux: 4.2.0 + react-redux: 8.0.5_ctrls2ti7t7iutxbwkm5ipogyy + redux: 4.2.1 styled-components: 6.0.0-beta.9_biqbaboplfbrettd7655fr4n2y - tslib: 2.4.1 + tslib: 2.5.0 warning: 4.0.3 transitivePeerDependencies: - - '@babel/helper-module-imports' - - '@babel/types' - '@types/lodash.merge' - '@types/react' - '@types/react-dom' - antd - - aslemammad-vite-plugin-macro - - babel-plugin-macros - babel-plugin-styled-components - debug - dva @@ -4862,25 +5188,24 @@ packages: - react-dom - react-native - supports-color - - vite dev: true - /@umijs/plugins/4.0.44_ol4gf5ysdgp6msy6qgsp7snw2u: - resolution: {integrity: sha512-jOwvMOycqcJ2DtCDy4RAUBI9iP3S4cmFILVGKKXXl1q/89/5JtCt2p0KD0JH8qQele+2Q7gusP5+mhbbojNEDA==} + /@umijs/plugins/4.0.51_j6z4hab2i3bwnwb4dzmobxs5ea: + resolution: {integrity: sha512-IIUYvSEzA89gVWIo3hB79OLDuFYswsL6M6tIOWjQIiQHRJG5fA4DXF5LEdAEgEX/1BnrzHZEkhRIF2Fmar/lnw==} dependencies: '@ahooksjs/use-request': 2.8.15_react@18.2.0 '@ant-design/antd-theme-variable': 1.0.0 '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-components': 2.3.52_b6pt25ruzstflsuamv2lnyq45m - '@tanstack/react-query': 4.22.0_biqbaboplfbrettd7655fr4n2y - '@tanstack/react-query-devtools': 4.22.0_gp275tdwez2a4eujt75dnnp754 - '@umijs/bundler-utils': 4.0.44 - '@umijs/valtio': 1.0.2_react@18.2.0 + '@ant-design/pro-components': 2.3.54_zziuzmw57eovk2ycxuppotpvc4 + '@tanstack/react-query': 4.24.6_biqbaboplfbrettd7655fr4n2y + '@tanstack/react-query-devtools': 4.24.6_r32zdxeb7iubg3qfkymfterewe + '@umijs/bundler-utils': 4.0.51 + '@umijs/valtio': 1.0.3_react@18.2.0 antd-dayjs-webpack-plugin: 1.0.6_dayjs@1.11.7 axios: 0.27.2 babel-plugin-import: 1.13.6 dayjs: 1.11.7 - dva-core: 2.0.4_redux@4.2.0 + dva-core: 2.0.4_redux@4.2.1 dva-immer: 1.0.0 dva-loading: 3.0.22_dva-core@2.0.4 event-emitter: 0.3.5 @@ -4888,22 +5213,18 @@ packages: intl: 1.2.5 lodash: 4.17.21 moment: 2.29.4 - qiankun: 2.8.4 + qiankun: 2.9.2 react-intl: 3.12.1_react@18.2.0 - react-redux: 8.0.5_gm3gubmwja4o7q6fr6adx3fpz4 - redux: 4.2.0 + react-redux: 8.0.5_ctrls2ti7t7iutxbwkm5ipogyy + redux: 4.2.1 styled-components: 6.0.0-beta.9_biqbaboplfbrettd7655fr4n2y - tslib: 2.4.1 + tslib: 2.5.0 warning: 4.0.3 transitivePeerDependencies: - - '@babel/helper-module-imports' - - '@babel/types' - '@types/lodash.merge' - '@types/react' - '@types/react-dom' - antd - - aslemammad-vite-plugin-macro - - babel-plugin-macros - babel-plugin-styled-components - debug - dva @@ -4912,29 +5233,28 @@ packages: - react-dom - react-native - supports-color - - vite dev: true - /@umijs/preset-umi/4.0.44_gxci7zjypbzwkagmgqo6pdnhwa: - resolution: {integrity: sha512-sE8Z3Z740BjEgWOmS4wEmuq+N8Ra5qwx0OMWI1WCml3Tr+MI+PqcVPDfIOdVLAGi2XnnWWimCjSztA38hKvnlw==} + /@umijs/preset-umi/4.0.51_c6mc5dj2lvpczaqlkcypbolpey: + resolution: {integrity: sha512-1ib+2k4KzpWHbn2RALMHNpODlSO/INAnLzX+6cZGI+6DCZsz2fIisnAULaKMDlrz8+j+5ANUoAJshRx1hjr48g==} dependencies: '@iconify/utils': 2.0.9 '@svgr/core': 6.2.1 - '@umijs/ast': 4.0.44 - '@umijs/babel-preset-umi': 4.0.44 - '@umijs/bundler-utils': 4.0.44 - '@umijs/bundler-vite': 4.0.44 - '@umijs/bundler-webpack': 4.0.44_typescript@4.9.4 - '@umijs/core': 4.0.44 - '@umijs/did-you-know': 1.0.1 + '@umijs/ast': 4.0.51 + '@umijs/babel-preset-umi': 4.0.51 + '@umijs/bundler-utils': 4.0.51 + '@umijs/bundler-vite': 4.0.51 + '@umijs/bundler-webpack': 4.0.51_typescript@4.9.5 + '@umijs/core': 4.0.51 + '@umijs/did-you-know': 1.0.3 '@umijs/history': 5.3.1 - '@umijs/mfsu': 4.0.44 - '@umijs/plugin-run': 4.0.44 - '@umijs/renderer-react': 4.0.44_ef5jwxihqo6n7gxfmzogljlgcm - '@umijs/server': 4.0.44 - '@umijs/utils': 4.0.44 + '@umijs/mfsu': 4.0.51 + '@umijs/plugin-run': 4.0.51 + '@umijs/renderer-react': 4.0.51_ef5jwxihqo6n7gxfmzogljlgcm + '@umijs/server': 4.0.51 + '@umijs/utils': 4.0.51 babel-plugin-dynamic-import-node: 2.3.3 - click-to-react-component: 1.0.8_2wivdsbsvmk3pblmocpmpqwn2e + click-to-react-component: 1.0.8_geqtkvvluj2en6xdskblg4z7uq core-js: 3.27.1 current-script-polyfill: 1.0.0 enhanced-resolve: 5.9.3 @@ -4970,8 +5290,8 @@ packages: - webpack-plugin-serve dev: true - /@umijs/renderer-react/4.0.44_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-2U4StybP3raJJIm1+AMm+kXn53s3EHXEXGXpYqAivWGcWlTVRWonaA2mTVXBfRJh/c7FwksI7QbeYxN3APNUgg==} + /@umijs/renderer-react/4.0.51_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-QVqr2WD+rRS903KndVVDJOfSjjs0YG2MTGpmW4YYSYd9kTEGNpzEzS8lbKZ0BXmweXT7WX2Jy6qG3u68kabiNQ==} peerDependencies: react: '>=16.8' react-dom: '>=16.8' @@ -4985,8 +5305,8 @@ packages: react-router-dom: 6.3.0_biqbaboplfbrettd7655fr4n2y dev: true - /@umijs/renderer-react/4.0.44_ef5jwxihqo6n7gxfmzogljlgcm: - resolution: {integrity: sha512-2U4StybP3raJJIm1+AMm+kXn53s3EHXEXGXpYqAivWGcWlTVRWonaA2mTVXBfRJh/c7FwksI7QbeYxN3APNUgg==} + /@umijs/renderer-react/4.0.51_ef5jwxihqo6n7gxfmzogljlgcm: + resolution: {integrity: sha512-QVqr2WD+rRS903KndVVDJOfSjjs0YG2MTGpmW4YYSYd9kTEGNpzEzS8lbKZ0BXmweXT7WX2Jy6qG3u68kabiNQ==} peerDependencies: react: '>=16.8' react-dom: '>=16.8' @@ -5008,7 +5328,7 @@ packages: chokidar: 3.5.3 express: 4.18.2 lodash: 4.17.21 - prettier: 2.8.2 + prettier: 2.8.4 transitivePeerDependencies: - supports-color dev: true @@ -5025,10 +5345,10 @@ packages: /@umijs/route-utils/4.0.1: resolution: {integrity: sha512-+1ixf1BTOLuH+ORb4x8vYMPeIt38n9q0fJDwhv9nSxrV46mxbLF0nmELIo9CKQB2gHfuC4+hww6xejJ6VYnBHQ==} - /@umijs/server/4.0.44: - resolution: {integrity: sha512-lgjnJhyE/XmT3coEQOQ8T5bPFxBqg9dit+MvVRMcLSFvAfLW9R3uExvCWrt3AhuWAdlVVVgHOJ8QIp3qrWN4LA==} + /@umijs/server/4.0.51: + resolution: {integrity: sha512-UBkp7Idfi0OxNZCfrRKc35BQocr5hQqRLX9MsEwzPEHc5Qw4lreUL3R5Za+PkwpdrNEm3rMEAqqNFYXArtZbag==} dependencies: - '@umijs/bundler-utils': 4.0.44 + '@umijs/bundler-utils': 4.0.51 history: 5.3.0 react: 18.1.0 react-dom: 18.1.0_react@18.1.0 @@ -5037,13 +5357,14 @@ packages: - supports-color dev: true - /@umijs/test/4.0.44: - resolution: {integrity: sha512-LRY5JakZvqFkf1W9rnGpR8rkLrug0j+kBKcThnISSuTLymDVz9muj5TgdnwbynDDIhMkoY3z4nZJKjyvd+4V2A==} + /@umijs/test/4.0.51: + resolution: {integrity: sha512-jwoNUg8pgQiAuRfJZYcx3oMFIqPXw0A+vJQwsE9nLIgkUnLHlS4D1BP5pc7WusYYeuwEJewLDTH3iQQgiFEHFw==} dependencies: '@babel/plugin-transform-modules-commonjs': 7.20.11 '@jest/types': 27.5.1 - '@umijs/bundler-utils': 4.0.44 - babel-jest: 29.3.1 + '@umijs/bundler-utils': 4.0.51 + '@umijs/utils': 4.0.51 + babel-jest: 29.4.3 esbuild: 0.16.17 identity-obj-proxy: 3.0.0 isomorphic-unfetch: 4.0.2 @@ -5059,31 +5380,26 @@ packages: dependencies: react: 18.2.0 - /@umijs/utils/4.0.36: - resolution: {integrity: sha512-Wrv56ZyUBWGLY5dfjaQqDXirLPLkmCBBXUdQgGvyTy2dGAGmJ0HA/KPgSzgmhBDVT54sIuDOSwNxl0SeaIdgew==} + /@umijs/utils/4.0.42: + resolution: {integrity: sha512-67GEzaV+6aLVxvbO5xtbSY3I3aBwvrETd8fpCOS+tnZSzFOt5qh5ffU8FFXhPAiBrsv0jrt9Wk9IIi+S3ulLdg==} dependencies: chokidar: 3.5.3 pino: 7.11.0 dev: true - /@umijs/utils/4.0.44: - resolution: {integrity: sha512-cnz4eDW0wvWegJdaoamEFffHB989Qv0lcwC2RFhspO5AF34813PLcYpr6htTOT2tq0fcoUaSBzETmhuQOQV1wg==} + /@umijs/utils/4.0.51: + resolution: {integrity: sha512-4mWqNAH9FZMH3CnRZIxg49AEAjEyMW+ra7abccuvIPYUesuuqjF9Ng7scW1wp9euGRGsIXfe+xSlmHdz8CdwXA==} dependencies: chokidar: 3.5.3 pino: 7.11.0 dev: true - /@umijs/valtio/1.0.2_react@18.2.0: - resolution: {integrity: sha512-+nCwcLQZhA4CaOahuiWDC+C0m1lPXb8APkdl4ecD6SQm+dd/DUWi0zSsm7vMeQZl2dDa61N/xCly/wSRRc19KQ==} + /@umijs/valtio/1.0.3_react@18.2.0: + resolution: {integrity: sha512-fjr1UMZLFOO+uy5YtLVcmvr+m2ZlU9rp04yXlCaPrKkdBg/UNPBVo6YS9TBx2v0a62gYaztLL3Put3dcNGH5tQ==} dependencies: - valtio: 1.7.0_react@18.2.0 + valtio: 1.9.0_react@18.2.0 transitivePeerDependencies: - - '@babel/helper-module-imports' - - '@babel/types' - - aslemammad-vite-plugin-macro - - babel-plugin-macros - react - - vite dev: true /@vitejs/plugin-react/2.2.0_vite@3.2.5: @@ -5093,7 +5409,7 @@ packages: vite: ^3.0.0 dependencies: '@babel/core': 7.20.12 - '@babel/plugin-transform-react-jsx': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-react-jsx': 7.20.13_@babel+core@7.20.12 '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.20.12 '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.20.12 '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 @@ -5123,7 +5439,7 @@ packages: /acorn-globals/7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} dependencies: - acorn: 8.8.1 + acorn: 8.8.2 acorn-walk: 8.2.0 dev: true @@ -5135,12 +5451,12 @@ packages: acorn: 7.4.1 dev: true - /acorn-jsx/5.3.2_acorn@8.8.1: + /acorn-jsx/5.3.2_acorn@8.8.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.8.1 + acorn: 8.8.2 /acorn-walk/8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} @@ -5153,8 +5469,8 @@ packages: hasBin: true dev: true - /acorn/8.8.1: - resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==} + /acorn/8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} engines: {node: '>=0.4.0'} hasBin: true @@ -5211,7 +5527,7 @@ packages: react: 18.2.0 resize-observer-polyfill: 1.5.1 screenfull: 5.2.0 - tslib: 2.4.1 + tslib: 2.5.0 dev: true /ajv-keywords/3.5.2_ajv@6.12.6: @@ -5320,8 +5636,8 @@ packages: resolution: {integrity: sha512-iquIc7EsQTndk5nMv9pQQv+/OY5YnjVIPhtCFo7W7JL+Gjqzq/YJ/HO2WxUxyCgYha2NsTTNAb2vPa/M4zAi2g==} dev: true - /antd/4.24.7_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-Qr3AYkeqpd3i/c6M7pjca7Y6XlaIv/p6gD3aqe7/0o8Ueg50G7Aeh+TOaiUfXLGDhnVoNEdaVdDiv8aIaoWB5A==} + /antd/4.24.8_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-wrNy2Hi27uM3948okG3n2GwzQKBFUn1Qn5mn2I/ALcR28rC6cTjHYOuA248Zl9ECzz3jo4TY2R0SIa+5GZ/zGA==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -5329,8 +5645,8 @@ packages: '@ant-design/colors': 6.0.0 '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y '@ant-design/react-slick': 0.29.2_react@18.2.0 - '@babel/runtime': 7.20.7 - '@ctrl/tinycolor': 3.5.0 + '@babel/runtime': 7.20.13 + '@ctrl/tinycolor': 3.6.0 classnames: 2.3.2 copy-to-clipboard: 3.3.3 lodash: 4.17.21 @@ -5341,20 +5657,20 @@ packages: rc-dialog: 9.0.2_biqbaboplfbrettd7655fr4n2y rc-drawer: 6.1.2_biqbaboplfbrettd7655fr4n2y rc-dropdown: 4.0.1_biqbaboplfbrettd7655fr4n2y - rc-field-form: 1.27.3_biqbaboplfbrettd7655fr4n2y + rc-field-form: 1.27.4_biqbaboplfbrettd7655fr4n2y rc-image: 5.13.0_biqbaboplfbrettd7655fr4n2y rc-input: 0.1.4_biqbaboplfbrettd7655fr4n2y rc-input-number: 7.3.11_biqbaboplfbrettd7655fr4n2y rc-mentions: 1.13.1_biqbaboplfbrettd7655fr4n2y - rc-menu: 9.8.1_biqbaboplfbrettd7655fr4n2y + rc-menu: 9.8.2_biqbaboplfbrettd7655fr4n2y rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y rc-notification: 4.6.1_biqbaboplfbrettd7655fr4n2y rc-pagination: 3.2.0_biqbaboplfbrettd7655fr4n2y rc-picker: 2.7.0_biqbaboplfbrettd7655fr4n2y rc-progress: 3.4.1_biqbaboplfbrettd7655fr4n2y rc-rate: 2.9.2_biqbaboplfbrettd7655fr4n2y - rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y - rc-segmented: 2.1.0_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y + rc-segmented: 2.1.2_biqbaboplfbrettd7655fr4n2y rc-select: 14.1.16_biqbaboplfbrettd7655fr4n2y rc-slider: 10.0.1_biqbaboplfbrettd7655fr4n2y rc-steps: 5.0.0_biqbaboplfbrettd7655fr4n2y @@ -5367,65 +5683,66 @@ packages: rc-tree-select: 5.5.5_biqbaboplfbrettd7655fr4n2y rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y rc-upload: 4.3.4_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 scroll-into-view-if-needed: 2.2.31 dev: true - /antd/5.1.4_jb42yyeu5qxbfieyxjks6malva: - resolution: {integrity: sha512-74j1+8jRYDglCSvNgx7DGvBH6gerHvtV6k6DylIVQLuViza5YPYH0MVUQwrw6a65iTfuRUY59Oo3EfqerGk8Uw==} + /antd/5.2.1_jb42yyeu5qxbfieyxjks6malva: + resolution: {integrity: sha512-yuTeYEhfvsEjHdPwhb47GXBk9EHZ/pHDaUgJMXHhOUbaWPWnTliHtQwgHYMJT9rEZobi3O0YRP2wnYWVtbDGsw==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@ant-design/colors': 6.0.0 - '@ant-design/cssinjs': 1.4.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y + '@ant-design/colors': 7.0.0 + '@ant-design/cssinjs': 1.5.6_biqbaboplfbrettd7655fr4n2y + '@ant-design/icons': 5.0.1_biqbaboplfbrettd7655fr4n2y '@ant-design/react-slick': 1.0.0_react@18.2.0 - '@babel/runtime': 7.20.7 - '@ctrl/tinycolor': 3.5.0 - '@rc-component/tour': 1.1.0_biqbaboplfbrettd7655fr4n2y + '@babel/runtime': 7.20.13 + '@ctrl/tinycolor': 3.6.0 + '@rc-component/mutate-observer': 1.0.0_biqbaboplfbrettd7655fr4n2y + '@rc-component/tour': 1.6.0_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 copy-to-clipboard: 3.3.3 dayjs: 1.11.7 qrcode.react: 3.1.0_react@18.2.0 rc-cascader: 3.8.0_biqbaboplfbrettd7655fr4n2y rc-checkbox: 2.3.2_biqbaboplfbrettd7655fr4n2y - rc-collapse: 3.4.2_biqbaboplfbrettd7655fr4n2y + rc-collapse: 3.5.2_biqbaboplfbrettd7655fr4n2y rc-dialog: 9.0.2_biqbaboplfbrettd7655fr4n2y rc-drawer: 6.1.2_biqbaboplfbrettd7655fr4n2y rc-dropdown: 4.0.1_biqbaboplfbrettd7655fr4n2y - rc-field-form: 1.27.3_biqbaboplfbrettd7655fr4n2y + rc-field-form: 1.27.4_biqbaboplfbrettd7655fr4n2y rc-image: 5.13.0_biqbaboplfbrettd7655fr4n2y - rc-input: 0.1.4_biqbaboplfbrettd7655fr4n2y + rc-input: 0.2.2_biqbaboplfbrettd7655fr4n2y rc-input-number: 7.4.0_biqbaboplfbrettd7655fr4n2y - rc-mentions: 1.13.1_biqbaboplfbrettd7655fr4n2y - rc-menu: 9.8.1_biqbaboplfbrettd7655fr4n2y + rc-mentions: 2.0.0_biqbaboplfbrettd7655fr4n2y + rc-menu: 9.8.2_biqbaboplfbrettd7655fr4n2y rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y rc-notification: 5.0.2_biqbaboplfbrettd7655fr4n2y rc-pagination: 3.2.0_biqbaboplfbrettd7655fr4n2y - rc-picker: 3.1.4_lejchghvacj3hhjkogy3eaalky + rc-picker: 3.1.5_lejchghvacj3hhjkogy3eaalky rc-progress: 3.4.1_biqbaboplfbrettd7655fr4n2y rc-rate: 2.9.2_biqbaboplfbrettd7655fr4n2y - rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y - rc-segmented: 2.1.0_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y + rc-segmented: 2.1.2_biqbaboplfbrettd7655fr4n2y rc-select: 14.2.0_biqbaboplfbrettd7655fr4n2y - rc-slider: 10.0.1_biqbaboplfbrettd7655fr4n2y + rc-slider: 10.1.1_biqbaboplfbrettd7655fr4n2y rc-steps: 6.0.0_biqbaboplfbrettd7655fr4n2y rc-switch: 4.0.0_biqbaboplfbrettd7655fr4n2y - rc-table: 7.30.3_biqbaboplfbrettd7655fr4n2y + rc-table: 7.30.4_biqbaboplfbrettd7655fr4n2y rc-tabs: 12.5.6_biqbaboplfbrettd7655fr4n2y - rc-textarea: 0.4.7_biqbaboplfbrettd7655fr4n2y - rc-tooltip: 5.2.2_biqbaboplfbrettd7655fr4n2y + rc-textarea: 1.0.1_biqbaboplfbrettd7655fr4n2y + rc-tooltip: 5.3.1_biqbaboplfbrettd7655fr4n2y rc-tree: 5.7.2_biqbaboplfbrettd7655fr4n2y rc-tree-select: 5.6.0_biqbaboplfbrettd7655fr4n2y rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y rc-upload: 4.3.4_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - scroll-into-view-if-needed: 3.0.4 + scroll-into-view-if-needed: 3.0.6 throttle-debounce: 5.0.0 transitivePeerDependencies: - date-fns @@ -5451,7 +5768,7 @@ packages: /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - /aria-hidden/1.2.2_3d3cqnhbk5jgdxsmxlr7d24np4: + /aria-hidden/1.2.2_obbe7ycx7dfgllab6ij5426xhu: resolution: {integrity: sha512-6y/ogyDTk/7YAe91T3E2PR1ALVKyM2QbTio5HwM+N1Q6CMlCKhvClyIjkckBswa0f2xJhjsfzIGa1yVSe1UMVA==} engines: {node: '>=10'} peerDependencies: @@ -5461,9 +5778,9 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.26 + '@types/react': 18.0.28 react: 18.1.0 - tslib: 2.4.1 + tslib: 2.5.0 dev: true /aria-query/5.1.3: @@ -5481,9 +5798,9 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 es-abstract: 1.21.1 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 is-string: 1.0.7 dev: true @@ -5511,7 +5828,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 es-abstract: 1.21.1 es-shim-unscopables: 1.0.0 dev: true @@ -5520,10 +5837,10 @@ packages: resolution: {integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 es-abstract: 1.21.1 es-shim-unscopables: 1.0.0 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 dev: true /arrify/1.0.1: @@ -5605,8 +5922,8 @@ packages: peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.21.4 - caniuse-lite: 1.0.30001444 + browserslist: 4.21.5 + caniuse-lite: 1.0.30001453 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -5620,8 +5937,8 @@ packages: peerDependencies: postcss: ^8.1.0 dependencies: - browserslist: 4.21.4 - caniuse-lite: 1.0.30001444 + browserslist: 4.21.5 + caniuse-lite: 1.0.30001453 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -5633,8 +5950,8 @@ packages: resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==} hasBin: true dependencies: - browserslist: 4.21.4 - caniuse-lite: 1.0.30001444 + browserslist: 4.21.5 + caniuse-lite: 1.0.30001453 normalize-range: 0.1.2 num2fraction: 1.2.2 picocolors: 0.2.1 @@ -5664,16 +5981,16 @@ packages: - debug dev: true - /babel-jest/29.3.1: - resolution: {integrity: sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==} + /babel-jest/29.4.3: + resolution: {integrity: sha512-o45Wyn32svZE+LnMVWv/Z4x0SwtLbh4FyGcYtR20kIWd+rdrDZ9Fzq8Ml3MYLD+mZvEdzCjZsCnYZ2jpJyQ+Nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@jest/transform': 29.3.1 - '@types/babel__core': 7.1.20 + '@jest/transform': 29.4.3 + '@types/babel__core': 7.20.0 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.2.0 + babel-preset-jest: 29.4.3 chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -5681,17 +5998,17 @@ packages: - supports-color dev: true - /babel-jest/29.3.1_@babel+core@7.20.12: - resolution: {integrity: sha512-aard+xnMoxgjwV70t0L6wkW/3HQQtV+O0PEimxKgzNqCJnbYmroPojdP2tqKSOAt8QAKV/uSZU8851M7B5+fcA==} + /babel-jest/29.4.3_@babel+core@7.20.12: + resolution: {integrity: sha512-o45Wyn32svZE+LnMVWv/Z4x0SwtLbh4FyGcYtR20kIWd+rdrDZ9Fzq8Ml3MYLD+mZvEdzCjZsCnYZ2jpJyQ+Nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: '@babel/core': 7.20.12 - '@jest/transform': 29.3.1 - '@types/babel__core': 7.1.20 + '@jest/transform': 29.4.3 + '@types/babel__core': 7.20.0 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.2.0_@babel+core@7.20.12 + babel-preset-jest: 29.4.3_@babel+core@7.20.12 chalk: 4.1.2 graceful-fs: 4.2.10 slash: 3.0.0 @@ -5724,13 +6041,13 @@ packages: - supports-color dev: true - /babel-plugin-jest-hoist/29.2.0: - resolution: {integrity: sha512-TnspP2WNiR3GLfCsUNHqeXw0RoQ2f9U5hQ5L3XFpwuO8htQmSrhh8qsB6vi5Yi8+kuynN1yjDjQsPfkebmB6ZA==} + /babel-plugin-jest-hoist/29.4.3: + resolution: {integrity: sha512-mB6q2q3oahKphy5V7CpnNqZOCkxxZ9aokf1eh82Dy3jQmg4xvM1tGrh5y6BQUJh4a3Pj9+eLfwvAZ7VNKg7H8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.20.7 '@babel/types': 7.20.7 - '@types/babel__core': 7.1.20 + '@types/babel__core': 7.20.0 '@types/babel__traverse': 7.18.3 dev: true @@ -5738,7 +6055,7 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 cosmiconfig: 7.1.0 resolve: 1.22.1 dev: false @@ -5748,7 +6065,7 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.20.10 + '@babel/compat-data': 7.20.14 '@babel/core': 7.20.12 '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 semver: 6.3.0 @@ -5763,7 +6080,7 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.20.12 - core-js-compat: 3.27.1 + core-js-compat: 3.28.0 transitivePeerDependencies: - supports-color dev: true @@ -5834,24 +6151,24 @@ packages: '@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.20.12 dev: true - /babel-preset-jest/29.2.0: - resolution: {integrity: sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==} + /babel-preset-jest/29.4.3: + resolution: {integrity: sha512-gWx6COtSuma6n9bw+8/F+2PCXrIgxV/D1TJFnp6OyBK2cxPWg0K9p/sriNYeifKjpUkMViWQ09DSWtzJQRETsw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - babel-plugin-jest-hoist: 29.2.0 + babel-plugin-jest-hoist: 29.4.3 babel-preset-current-node-syntax: 1.0.1 dev: true - /babel-preset-jest/29.2.0_@babel+core@7.20.12: - resolution: {integrity: sha512-z9JmMJppMxNv8N7fNRHvhMg9cvIkMxQBXgFkane3yKVEvEOP+kB50lk8DFRvF9PGqbyXxlmebKWhuDORO8RgdA==} + /babel-preset-jest/29.4.3_@babel+core@7.20.12: + resolution: {integrity: sha512-gWx6COtSuma6n9bw+8/F+2PCXrIgxV/D1TJFnp6OyBK2cxPWg0K9p/sriNYeifKjpUkMViWQ09DSWtzJQRETsw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: '@babel/core': 7.20.12 - babel-plugin-jest-hoist: 29.2.0 + babel-plugin-jest-hoist: 29.4.3 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 dev: true @@ -5935,7 +6252,7 @@ packages: engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} dependencies: bytes: 3.1.2 - content-type: 1.0.4 + content-type: 1.0.5 debug: 2.6.9 depd: 2.0.0 destroy: 1.2.0 @@ -6025,15 +6342,15 @@ packages: pako: 1.0.11 dev: true - /browserslist/4.21.4: - resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} + /browserslist/4.21.5: + resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001444 - electron-to-chromium: 1.4.284 - node-releases: 2.0.8 - update-browserslist-db: 1.0.10_browserslist@4.21.4 + caniuse-lite: 1.0.30001453 + electron-to-chromium: 1.4.299 + node-releases: 2.0.10 + update-browserslist-db: 1.0.10_browserslist@4.21.5 /bser/2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -6081,7 +6398,7 @@ packages: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: function-bind: 1.1.1 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 dev: true /call-me-maybe/1.0.2: @@ -6096,7 +6413,7 @@ packages: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 - tslib: 2.4.1 + tslib: 2.5.0 dev: true /camelcase-keys/6.2.2: @@ -6122,8 +6439,8 @@ packages: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: true - /caniuse-lite/1.0.30001444: - resolution: {integrity: sha512-ecER9xgJQVMqcrxThKptsW0pPxSae8R2RB87LNa+ivW9ppNWRHEplXcDzkCOP4LYWGj8hunXLqaiC41iBATNyg==} + /caniuse-lite/1.0.30001453: + resolution: {integrity: sha512-R9o/uySW38VViaTrOtwfbFEiBFUh7ST3uIG4OEymIG3/uKdHDO4xk/FaqfUw0d+irSUyFPy3dZszf9VvSTPnsA==} /carlo/0.9.46: resolution: {integrity: sha512-FwZ/wxjqe+5RgzF2SRsPSWsVB9+McAVRWW0tRkmbh7fBjrf3HFZZbcr8vr61p1K+NBaAPv57DRjxgIyfbHmd7g==} @@ -6191,8 +6508,8 @@ packages: resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} dev: true - /ci-info/3.7.1: - resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} + /ci-info/3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} engines: {node: '>=8'} dev: true @@ -6210,8 +6527,8 @@ packages: /classnames/2.3.2: resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} - /clean-css/5.3.1: - resolution: {integrity: sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==} + /clean-css/5.3.2: + resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==} engines: {node: '>= 10.0'} dependencies: source-map: 0.6.1 @@ -6249,12 +6566,12 @@ packages: string-width: 4.2.3 dev: true - /click-to-react-component/1.0.8_2wivdsbsvmk3pblmocpmpqwn2e: + /click-to-react-component/1.0.8_geqtkvvluj2en6xdskblg4z7uq: resolution: {integrity: sha512-YBNYOp00udy+NBEnUmM/3Df0Yco1iHNQ8k0ltlJVcDYK9AuYt14xPoJicBh/BokLqbzkci1p+pbdY5r4JXZC4g==} peerDependencies: react: '>=16.8.0' dependencies: - '@floating-ui/react-dom-interactions': 0.3.1_2wivdsbsvmk3pblmocpmpqwn2e + '@floating-ui/react-dom-interactions': 0.3.1_geqtkvvluj2en6xdskblg4z7uq htm: 3.1.1 react: 18.1.0 react-merge-refs: 1.1.0 @@ -6325,6 +6642,11 @@ packages: delayed-stream: 1.0.0 dev: true + /commander/10.0.0: + resolution: {integrity: sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==} + engines: {node: '>=14'} + dev: true + /commander/2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} dev: true @@ -6354,11 +6676,6 @@ packages: engines: {node: '>= 12'} dev: true - /commander/9.5.0: - resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} - engines: {node: ^12.20.0 || >=14} - dev: true - /common-path-prefix/3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} dev: true @@ -6381,8 +6698,8 @@ packages: resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} dev: true - /compute-scroll-into-view/2.0.4: - resolution: {integrity: sha512-y/ZA3BGnxoM/QHHQ2Uy49CLtnWPbt4tTPpEEZiEmmiWBFKjej7nEyH8Ryz54jH0MLXflUYA3Er2zUxPSJu5R+g==} + /compute-scroll-into-view/3.0.0: + resolution: {integrity: sha512-Yk1An4qzo5++Cu6peT9PsmRKIU8tALpmdoE09n//AfGQFcPfx21/tMGMsmKYmLJWaBJrGOJ5Jz5hoU+7cZZUWQ==} /concat-map/0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -6412,8 +6729,8 @@ packages: safe-buffer: 5.2.1 dev: true - /content-type/1.0.4: - resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} + /content-type/1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} dev: true @@ -6451,14 +6768,14 @@ packages: dependencies: toggle-selection: 1.0.6 - /core-js-compat/3.27.1: - resolution: {integrity: sha512-Dg91JFeCDA17FKnneN7oCMz4BkQ4TcffkgHP4OWwp9yx3pi7ubqMDXXSacfNak1PQqjc95skyt+YBLHQJnkJwA==} + /core-js-compat/3.28.0: + resolution: {integrity: sha512-myzPgE7QodMg4nnd3K1TDoES/nADRStM8Gpz0D6nhkwbmwEnE0ZGJgoWsvQ722FR8D7xS0n0LV556RcEicjTyg==} dependencies: - browserslist: 4.21.4 + browserslist: 4.21.5 dev: true - /core-js-pure/3.27.1: - resolution: {integrity: sha512-BS2NHgwwUppfeoqOXqi08mUqS5FiZpuRuJJpKsaME7kJz0xxuk0xkhDdfMIlP/zLa80krBqss1LtD7f889heAw==} + /core-js-pure/3.28.0: + resolution: {integrity: sha512-DSOVleA9/v3LNj/vFxAPfUHttKTzrB2RXhAPvR5TPXn4vrra3Z2ssytvRyt8eruJwAfwAiFADEbrjcRdcvPLQQ==} requiresBuild: true dev: true @@ -6694,8 +7011,8 @@ packages: nth-check: 2.1.1 dev: true - /css-to-react-native/3.1.0: - resolution: {integrity: sha512-AryfkFA29b4I3vG7N4kxFboq15DxwSXzhXM37XNEjwJMgjYIc8BcqfiprpAqX0zadI5PMByEIwAMzXxk5Vcc4g==} + /css-to-react-native/3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} dependencies: camelize: 1.0.1 css-color-keywords: 1.0.0 @@ -6867,7 +7184,7 @@ packages: dependencies: call-bind: 1.0.2 es-get-iterator: 1.1.3 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 is-arguments: 1.1.1 is-array-buffer: 3.0.1 is-date-object: 1.0.5 @@ -6887,8 +7204,8 @@ packages: /deep-is/0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - /deepmerge/4.2.2: - resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + /deepmerge/4.3.0: + resolution: {integrity: sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==} engines: {node: '>=0.10.0'} /defaults/1.0.4: @@ -6901,8 +7218,8 @@ packages: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} - /define-properties/1.1.4: - resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} + /define-properties/1.2.0: + resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} dependencies: has-property-descriptors: 1.0.0 @@ -6962,8 +7279,8 @@ packages: - supports-color dev: false - /diff-sequences/29.3.1: - resolution: {integrity: sha512-hlM3QR272NXCi4pq+N4Kok4kOp6EsgOM3ZSpJI7Da3UAs+Ttsi8MRmB6trM/lhyzUxGfOgnpkHtgqm5Q/CTcfQ==} + /diff-sequences/29.4.3: + resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true @@ -6999,8 +7316,8 @@ packages: dependencies: esutils: 2.0.3 - /dom-accessibility-api/0.5.15: - resolution: {integrity: sha512-8o+oVqLQZoruQPYy3uAAQtc6YbtSiRq5aPJBhJ82YTJRHvI6ofhYAkC81WmjFTnfUbqg6T3aCglIpU9p/5e7Cw==} + /dom-accessibility-api/0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} dev: true /dom-align/1.12.4: @@ -7083,7 +7400,7 @@ packages: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 - tslib: 2.4.1 + tslib: 2.5.0 dev: true /dotenv/8.6.0: @@ -7104,17 +7421,17 @@ packages: stream-shift: 1.0.1 dev: true - /dva-core/2.0.4_redux@4.2.0: + /dva-core/2.0.4_redux@4.2.1: resolution: {integrity: sha512-Zh39llFyItu9HKXKfCZVf9UFtDTcypdAjGBew1S+wK8BGVzFpm1GPTdd6uIMeg7O6STtCvt2Qv+RwUut1GFynA==} peerDependencies: redux: 4.x dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 flatten: 1.0.3 global: 4.4.0 invariant: 2.2.4 is-plain-object: 2.0.4 - redux: 4.2.0 + redux: 4.2.1 redux-saga: 0.16.2 warning: 3.0.0 dev: true @@ -7124,7 +7441,7 @@ packages: peerDependencies: dva: ^2.5.0-0 dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 immer: 8.0.4 dev: true @@ -7133,8 +7450,8 @@ packages: peerDependencies: dva-core: ^1.1.0 | ^1.5.0-0 | ^1.6.0-0 dependencies: - '@babel/runtime': 7.20.7 - dva-core: 2.0.4_redux@4.2.0 + '@babel/runtime': 7.20.13 + dva-core: 2.0.4_redux@4.2.1 dev: true /ecc-jsbn/0.1.2: @@ -7148,8 +7465,8 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true - /electron-to-chromium/1.4.284: - resolution: {integrity: sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==} + /electron-to-chromium/1.4.299: + resolution: {integrity: sha512-lQ7ijJghH6pCGbfWXr6EY+KYCMaRSjgsY925r1p/TlpSfVM1VjHTcn1gAc15VM4uwti283X6QtjPTXdpoSGiZQ==} /elliptic/6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -7255,7 +7572,7 @@ packages: es-to-primitive: 1.2.1 function-bind: 1.1.1 function.prototype.name: 1.1.5 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 get-symbol-description: 1.0.0 globalthis: 1.0.3 gopd: 1.0.1 @@ -7263,7 +7580,7 @@ packages: has-property-descriptors: 1.0.0 has-proto: 1.0.1 has-symbols: 1.0.3 - internal-slot: 1.0.4 + internal-slot: 1.0.5 is-array-buffer: 3.0.1 is-callable: 1.2.7 is-negative-zero: 2.0.2 @@ -7288,7 +7605,7 @@ packages: resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 has-symbols: 1.0.3 is-arguments: 1.1.1 is-map: 2.0.2 @@ -7302,7 +7619,7 @@ packages: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 has: 1.0.3 has-tostringtag: 1.0.0 dev: true @@ -7614,6 +7931,36 @@ packages: '@esbuild/win32-x64': 0.16.17 dev: true + /esbuild/0.17.8: + resolution: {integrity: sha512-g24ybC3fWhZddZK6R3uD2iF/RIPnRpwJAqLov6ouX3hMbY4+tKolP0VMF3zuIYCaXun+yHwS5IPQ91N2BT191g==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.8 + '@esbuild/android-arm64': 0.17.8 + '@esbuild/android-x64': 0.17.8 + '@esbuild/darwin-arm64': 0.17.8 + '@esbuild/darwin-x64': 0.17.8 + '@esbuild/freebsd-arm64': 0.17.8 + '@esbuild/freebsd-x64': 0.17.8 + '@esbuild/linux-arm': 0.17.8 + '@esbuild/linux-arm64': 0.17.8 + '@esbuild/linux-ia32': 0.17.8 + '@esbuild/linux-loong64': 0.17.8 + '@esbuild/linux-mips64el': 0.17.8 + '@esbuild/linux-ppc64': 0.17.8 + '@esbuild/linux-riscv64': 0.17.8 + '@esbuild/linux-s390x': 0.17.8 + '@esbuild/linux-x64': 0.17.8 + '@esbuild/netbsd-x64': 0.17.8 + '@esbuild/openbsd-x64': 0.17.8 + '@esbuild/sunos-x64': 0.17.8 + '@esbuild/win32-arm64': 0.17.8 + '@esbuild/win32-ia32': 0.17.8 + '@esbuild/win32-x64': 0.17.8 + dev: true + /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -7689,7 +8036,7 @@ packages: eslint-rule-composer: 0.3.0 dev: true - /eslint-plugin-jest/24.7.0_7o4xqfjf6pwo3mvvonizibb5lq: + /eslint-plugin-jest/24.7.0_giwqt5bttcxhbw6aus5n7ehcnu: resolution: {integrity: sha512-wUxdF2bAZiYSKBclsUMrYHH6WxiBreNjyDxbRv345TIvPeoCEgPNEn3Sa+ZrSqsf1Dl9SqqSREXMHExlMMu1DA==} engines: {node: '>=10'} peerDependencies: @@ -7699,15 +8046,15 @@ packages: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.48.1_s66zx5d3yhyn34ft2zz26bcwti - '@typescript-eslint/experimental-utils': 4.33.0_yfqovispp7u7jaktymfaqwl2py + '@typescript-eslint/eslint-plugin': 5.52.0_j2xzuhj7jlo6utt4db5kd4zyxy + '@typescript-eslint/experimental-utils': 4.33.0_jofidmxrjzhj7l6vknpw5ecvfe eslint: 7.32.0 transitivePeerDependencies: - supports-color - typescript dev: true - /eslint-plugin-jest/26.1.5_gwbh725yvx2gda2van5hxf7p64: + /eslint-plugin-jest/26.1.5_miw4sfjr4mddcelagl22ykbtrm: resolution: {integrity: sha512-su89aDuljL9bTjEufTXmKUMSFe2kZUL9bi7+woq+C2ukHZordhtfPm4Vg+tdioHBaKf8v3/FXW9uV0ksqhYGFw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -7720,10 +8067,32 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 5.48.1_3jon24igvnqaqexgwtxk6nkpse - '@typescript-eslint/utils': 5.48.1_iukboom6ndih5an6iafl45j2fe + '@typescript-eslint/eslint-plugin': 5.48.1_bpcieom4krd4yjmz5o6lu67pxm + '@typescript-eslint/utils': 5.52.0_ifw3q4r6iq3gw7cspzs2siycvu eslint: 8.31.0 - jest: 29.3.1_ts-node@10.9.1 + jest: 29.4.3_ts-node@10.9.1 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-jest/26.1.5_slhnd4adxg6hncizzqnqt5iyja: + resolution: {integrity: sha512-su89aDuljL9bTjEufTXmKUMSFe2kZUL9bi7+woq+C2ukHZordhtfPm4Vg+tdioHBaKf8v3/FXW9uV0ksqhYGFw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 5.48.1_bzepuo66bcyj4mepwnxofjvdli + '@typescript-eslint/utils': 5.52.0_7kw3g6rralp5ps6mg3uyzz6azm + eslint: 8.34.0 + jest: 29.4.3_ts-node@10.9.1 transitivePeerDependencies: - supports-color - typescript @@ -7747,6 +8116,15 @@ packages: eslint: 8.31.0 dev: true + /eslint-plugin-react-hooks/4.5.0_eslint@8.34.0: + resolution: {integrity: sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.34.0 + dev: true + /eslint-plugin-react-hooks/4.6.0_eslint@7.32.0: resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} @@ -7756,7 +8134,30 @@ packages: eslint: 7.32.0 dev: true - /eslint-plugin-react/7.29.4_eslint@8.31.0: + /eslint-plugin-react/7.29.4_eslint@8.31.0: + resolution: {integrity: sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + doctrine: 2.1.0 + eslint: 8.31.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.3 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + object.hasown: 1.1.2 + object.values: 1.1.6 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.0 + string.prototype.matchall: 4.0.8 + dev: true + + /eslint-plugin-react/7.29.4_eslint@8.34.0: resolution: {integrity: sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==} engines: {node: '>=4'} peerDependencies: @@ -7765,7 +8166,7 @@ packages: array-includes: 3.1.6 array.prototype.flatmap: 1.3.1 doctrine: 2.1.0 - eslint: 8.31.0 + eslint: 8.34.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.3 minimatch: 3.1.2 @@ -7779,8 +8180,8 @@ packages: string.prototype.matchall: 4.0.8 dev: true - /eslint-plugin-react/7.32.0_eslint@7.32.0: - resolution: {integrity: sha512-vSBi1+SrPiLZCGvxpiZIa28fMEUaMjXtCplrvxcIxGzmFiYdsXQDwInEjuv5/i/2CTTxbkS87tE8lsQ0Qxinbw==} + /eslint-plugin-react/7.32.2_eslint@7.32.0: + resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 @@ -7860,7 +8261,7 @@ packages: '@babel/eslint-parser': 7.19.1_go3kp2l7mdrkdyt3xfyeu7ppfa eslint: 7.32.0 eslint-visitor-keys: 2.1.0 - esquery: 1.4.0 + esquery: 1.4.1 multimap: 1.1.0 transitivePeerDependencies: - supports-color @@ -7891,6 +8292,16 @@ packages: dependencies: eslint: 8.31.0 eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-utils/3.0.0_eslint@8.34.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.34.0 + eslint-visitor-keys: 2.1.0 /eslint-visitor-keys/1.3.0: resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} @@ -7924,13 +8335,13 @@ packages: eslint-utils: 2.1.0 eslint-visitor-keys: 2.1.0 espree: 7.3.1 - esquery: 1.4.0 + esquery: 1.4.1 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 functional-red-black-tree: 1.0.1 glob-parent: 5.1.2 - globals: 13.19.0 + globals: 13.20.0 ignore: 4.0.6 import-fresh: 3.3.0 imurmurhash: 0.1.4 @@ -7973,20 +8384,68 @@ packages: eslint-utils: 3.0.0_eslint@8.31.0 eslint-visitor-keys: 3.3.0 espree: 9.4.1 - esquery: 1.4.0 + esquery: 1.4.1 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.20.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-sdsl: 4.3.0 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint/8.34.0: + resolution: {integrity: sha512-1Z8iFsucw+7kSqXNZVslXS8Ioa4u2KM7GPwuKtkTFAqZ/cHMcEaR+1+Br0wLlot49cNxIiZk5wp8EAbPcYZxTg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': 1.4.1 + '@humanwhocodes/config-array': 0.11.8 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0_eslint@8.34.0 + eslint-visitor-keys: 3.3.0 + espree: 9.4.1 + esquery: 1.4.1 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.19.0 + globals: 13.20.0 grapheme-splitter: 1.0.4 ignore: 5.2.4 import-fresh: 3.3.0 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-sdsl: 4.2.0 + js-sdsl: 4.3.0 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 @@ -8014,8 +8473,8 @@ packages: resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.8.1 - acorn-jsx: 5.3.2_acorn@8.8.1 + acorn: 8.8.2 + acorn-jsx: 5.3.2_acorn@8.8.2 eslint-visitor-keys: 3.3.0 /esprima/4.0.1: @@ -8024,8 +8483,8 @@ packages: hasBin: true dev: true - /esquery/1.4.0: - resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} + /esquery/1.4.1: + resolution: {integrity: sha512-3ZggxvMv5EEY1ssUVyHSVt0oPreyBfbUi1XikJVfjFiBeBDLdrb0IWoDiEwqT/2sUQi0TGaWtFhOGDD8RTpXgQ==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 @@ -8119,15 +8578,15 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /expect/29.3.1: - resolution: {integrity: sha512-gGb1yTgU30Q0O/tQq+z30KBWv24ApkMgFUpvKBkyLUBL68Wv8dHdJxTBZFl/iT8K/bqDHvUYRH6IIN3rToopPA==} + /expect/29.4.3: + resolution: {integrity: sha512-uC05+Q7eXECFpgDrHdXA4k2rpMyStAYPItEDLyQDo5Ta7fVkJnNA/4zh/OIVkVVNZ1oOK1PipQoyNjuZ6sz6Dg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/expect-utils': 29.3.1 - jest-get-type: 29.2.0 - jest-matcher-utils: 29.3.1 - jest-message-util: 29.3.1 - jest-util: 29.3.1 + '@jest/expect-utils': 29.4.3 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.4.3 + jest-message-util: 29.4.3 + jest-util: 29.4.3 dev: true /express/4.18.2: @@ -8138,7 +8597,7 @@ packages: array-flatten: 1.1.1 body-parser: 1.20.1 content-disposition: 0.5.4 - content-type: 1.0.4 + content-type: 1.0.5 cookie: 0.5.0 cookie-signature: 1.0.6 debug: 2.6.9 @@ -8249,7 +8708,7 @@ packages: object-assign: 4.1.1 promise: 7.3.1 setimmediate: 1.0.5 - ua-parser-js: 0.7.32 + ua-parser-js: 0.7.33 dev: true /fd-slicer/1.1.0: @@ -8387,7 +8846,7 @@ packages: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} dev: true - /fork-ts-checker-webpack-plugin/6.5.2_iukboom6ndih5an6iafl45j2fe: + /fork-ts-checker-webpack-plugin/6.5.2_7kw3g6rralp5ps6mg3uyzz6azm: resolution: {integrity: sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==} engines: {node: '>=10', yarn: '>=1.0.0'} peerDependencies: @@ -8406,8 +8865,8 @@ packages: chalk: 4.1.2 chokidar: 3.5.3 cosmiconfig: 6.0.0 - deepmerge: 4.2.2 - eslint: 8.31.0 + deepmerge: 4.3.0 + eslint: 8.34.0 fs-extra: 9.1.0 glob: 7.2.3 memfs: 3.4.13 @@ -8415,10 +8874,10 @@ packages: schema-utils: 2.7.0 semver: 7.3.8 tapable: 1.1.3 - typescript: 4.9.4 + typescript: 4.9.5 dev: false - /fork-ts-checker-webpack-plugin/7.3.0_typescript@4.9.4: + /fork-ts-checker-webpack-plugin/7.3.0_typescript@4.9.5: resolution: {integrity: sha512-IN+XTzusCjR5VgntYFgxbxVx3WraPRnKehBFrf00cMSrtUuW9MsG9dhL6MWpY6MkjC3wVwoujfCDgZZCQwbswA==} engines: {node: '>=12.13.0', yarn: '>=1.0.0'} peerDependencies: @@ -8433,15 +8892,15 @@ packages: chalk: 4.1.2 chokidar: 3.5.3 cosmiconfig: 7.1.0 - deepmerge: 4.2.2 + deepmerge: 4.3.0 fs-extra: 10.1.0 memfs: 3.4.13 minimatch: 3.1.2 - node-abort-controller: 3.0.1 + node-abort-controller: 3.1.1 schema-utils: 3.1.1 semver: 7.3.8 tapable: 2.2.1 - typescript: 4.9.4 + typescript: 4.9.5 dev: true /form-data/2.3.3: @@ -8536,7 +8995,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 es-abstract: 1.21.1 functions-have-names: 1.2.3 dev: true @@ -8558,8 +9017,8 @@ packages: engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-intrinsic/1.1.3: - resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==} + /get-intrinsic/1.2.0: + resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} dependencies: function-bind: 1.1.1 has: 1.0.3 @@ -8597,17 +9056,17 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 dev: true - /get-tsconfig/4.3.0: - resolution: {integrity: sha512-YCcF28IqSay3fqpIu5y3Krg/utCBHBeoflkZyHj/QcqI2nrLPC3ZegS9CmIo+hJb8K7aiGsuUl7PwWVjNG2HQQ==} + /get-tsconfig/4.4.0: + resolution: {integrity: sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==} dev: true /getnpmregistry/1.0.1: resolution: {integrity: sha512-OZRQ1RmRC0JduSLlQrHAaBLLrB23D3gaREsMBtM7aV8pxKB3duPs+a7iH7662b8zu1G9H6wiOvZc814g/bcHVg==} dependencies: - node-fetch: 2.6.8 + node-fetch: 2.6.9 transitivePeerDependencies: - encoding dev: true @@ -8683,8 +9142,8 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - /globals/13.19.0: - resolution: {integrity: sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==} + /globals/13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -8693,7 +9152,7 @@ packages: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} dependencies: - define-properties: 1.1.4 + define-properties: 1.2.0 dev: true /globby/10.0.0: @@ -8741,13 +9200,13 @@ packages: engines: {node: '>=0.6.0'} hasBin: true dependencies: - minimist: 1.2.7 + minimist: 1.2.8 dev: true /gopd/1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 dev: true /graceful-fs/4.2.10: @@ -8805,7 +9264,7 @@ packages: /has-property-descriptors/1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} dependencies: - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 dev: true /has-proto/1.0.1: @@ -8855,7 +9314,7 @@ packages: /history/5.3.0: resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 dev: true /hmac-drbg/1.0.1: @@ -8921,12 +9380,12 @@ packages: hasBin: true dependencies: camel-case: 4.1.2 - clean-css: 5.3.1 + clean-css: 5.3.2 commander: 8.3.0 he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.16.1 + terser: 5.16.3 dev: true /html-tags/3.2.0: @@ -9101,8 +9560,8 @@ packages: resolution: {integrity: sha512-jMfL18P+/6P6epANRvRk6q8t+3gGhqsJ9EuJ25AXE+9bNTYtssvzeYbEd0mXRYWCmmXSIbnlpz6vd6iJlmGGGQ==} dev: true - /immer/9.0.17: - resolution: {integrity: sha512-+hBruaLSQvkPfxRiTLK/mi4vLH+/VQS6z2KJahdoxlleFOI8ARqzOF17uy12eFDlqWmPoygwc5evgwcp+dlHhg==} + /immer/9.0.19: + resolution: {integrity: sha512-eY+Y0qcsB4TZKwgQzLaE/lqYMlKhv5J9dyd2RhhtGhNo2njPXDqU9XPfcNfa3MIDsdtZt5KlkIsirlo4dHsWdQ==} dev: false /import-fresh/3.3.0: @@ -9112,10 +9571,10 @@ packages: parent-module: 1.0.1 resolve-from: 4.0.0 - /import-html-entry/1.14.0: - resolution: {integrity: sha512-CQQMV+2rxHCLMSXsajV1cjT1g6xi3ujMAPnGwR96xHaN5/JEVIOUGkM7LDRn73dk8E8NaHmOf3rvPPExPPe1xw==} + /import-html-entry/1.14.2: + resolution: {integrity: sha512-w7BXfpoVNCiSdjUNxrYHrByCVTNfWILoX0vpBzdZ/UfJ/qhozJn+IEoMGVBHzJK5ith9s2KcpM+oPrJl4oLFMg==} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 dev: true /import-lazy/4.0.0: @@ -9166,11 +9625,11 @@ packages: /ini/1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - /internal-slot/1.0.4: - resolution: {integrity: sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==} + /internal-slot/1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 has: 1.0.3 side-channel: 1.0.4 dev: true @@ -9203,7 +9662,7 @@ packages: '@formatjs/ecma402-abstract': 1.11.4 '@formatjs/fast-memoize': 1.2.1 '@formatjs/icu-messageformat-parser': 2.1.0 - tslib: 2.4.1 + tslib: 2.5.0 dev: true /intl/1.2.5: @@ -9225,8 +9684,8 @@ packages: engines: {node: '>= 0.10'} dev: true - /irregular-plurals/3.3.0: - resolution: {integrity: sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g==} + /irregular-plurals/3.4.0: + resolution: {integrity: sha512-YXxECO/W6N9aMBVKMKKZ8TXESgq7EFrp3emCGGUcrYY1cgJIeZjoB75MTu8qi+NAKntS9NwPU8VdcQ3r6E6aWQ==} engines: {node: '>=8'} dev: true @@ -9253,7 +9712,7 @@ packages: resolution: {integrity: sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 is-typed-array: 1.1.10 dev: true @@ -9548,7 +10007,7 @@ packages: resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 dev: true /is-what/3.14.1: @@ -9614,7 +10073,7 @@ packages: engines: {node: '>=8'} dependencies: '@babel/core': 7.20.12 - '@babel/parser': 7.20.7 + '@babel/parser': 7.20.15 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.0 semver: 6.3.0 @@ -9650,43 +10109,43 @@ packages: istanbul-lib-report: 3.0.0 dev: true - /jest-changed-files/29.2.0: - resolution: {integrity: sha512-qPVmLLyBmvF5HJrY7krDisx6Voi8DmlV3GZYX0aFNbaQsZeoz1hfxcCMbqDGuQCxU1dJy9eYc2xscE8QrCCYaA==} + /jest-changed-files/29.4.3: + resolution: {integrity: sha512-Vn5cLuWuwmi2GNNbokPOEcvrXGSGrqVnPEZV7rC6P7ck07Dyw9RFnvWglnupSh+hGys0ajGtw/bc2ZgweljQoQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: execa: 5.1.1 p-limit: 3.1.0 dev: true - /jest-circus/29.3.1: - resolution: {integrity: sha512-wpr26sEvwb3qQQbdlmei+gzp6yoSSoSL6GsLPxnuayZSMrSd5Ka7IjAvatpIernBvT2+Ic6RLTg+jSebScmasg==} + /jest-circus/29.4.3: + resolution: {integrity: sha512-Vw/bVvcexmdJ7MLmgdT3ZjkJ3LKu8IlpefYokxiqoZy6OCQ2VAm6Vk3t/qHiAGUXbdbJKJWnc8gH3ypTbB/OBw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/expect': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.18 + '@jest/environment': 29.4.3 + '@jest/expect': 29.4.3 + '@jest/test-result': 29.4.3 + '@jest/types': 29.4.3 + '@types/node': 18.13.0 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 is-generator-fn: 2.1.0 - jest-each: 29.3.1 - jest-matcher-utils: 29.3.1 - jest-message-util: 29.3.1 - jest-runtime: 29.3.1 - jest-snapshot: 29.3.1 - jest-util: 29.3.1 + jest-each: 29.4.3 + jest-matcher-utils: 29.4.3 + jest-message-util: 29.4.3 + jest-runtime: 29.4.3 + jest-snapshot: 29.4.3 + jest-util: 29.4.3 p-limit: 3.1.0 - pretty-format: 29.3.1 + pretty-format: 29.4.3 slash: 3.0.0 stack-utils: 2.0.6 transitivePeerDependencies: - supports-color dev: true - /jest-cli/29.3.1_ts-node@10.9.1: - resolution: {integrity: sha512-TO/ewvwyvPOiBBuWZ0gm04z3WWP8TIK8acgPzE4IxgsLKQgb377NYGrQLc3Wl/7ndWzIH2CDNNsUjGxwLL43VQ==} + /jest-cli/29.4.3_ts-node@10.9.1: + resolution: {integrity: sha512-PiiAPuFNfWWolCE6t3ZrDXQc6OsAuM3/tVW0u27UWc1KE+n/HSn5dSE6B2juqN7WP+PP0jAcnKtGmI4u8GMYCg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -9695,16 +10154,16 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.3.1_ts-node@10.9.1 - '@jest/test-result': 29.3.1 - '@jest/types': 29.3.1 + '@jest/core': 29.4.3_ts-node@10.9.1 + '@jest/test-result': 29.4.3 + '@jest/types': 29.4.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.10 import-local: 3.1.0 - jest-config: 29.3.1_ts-node@10.9.1 - jest-util: 29.3.1 - jest-validate: 29.3.1 + jest-config: 29.4.3_ts-node@10.9.1 + jest-util: 29.4.3 + jest-validate: 29.4.3 prompts: 2.4.2 yargs: 17.6.2 transitivePeerDependencies: @@ -9713,8 +10172,8 @@ packages: - ts-node dev: true - /jest-config/29.3.1_ts-node@10.9.1: - resolution: {integrity: sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==} + /jest-config/29.4.3_ts-node@10.9.1: + resolution: {integrity: sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' @@ -9726,34 +10185,34 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@jest/test-sequencer': 29.3.1 - '@jest/types': 29.3.1 - babel-jest: 29.3.1_@babel+core@7.20.12 + '@jest/test-sequencer': 29.4.3 + '@jest/types': 29.4.3 + babel-jest: 29.4.3_@babel+core@7.20.12 chalk: 4.1.2 - ci-info: 3.7.1 - deepmerge: 4.2.2 + ci-info: 3.8.0 + deepmerge: 4.3.0 glob: 7.2.3 graceful-fs: 4.2.10 - jest-circus: 29.3.1 - jest-environment-node: 29.3.1 - jest-get-type: 29.2.0 - jest-regex-util: 29.2.0 - jest-resolve: 29.3.1 - jest-runner: 29.3.1 - jest-util: 29.3.1 - jest-validate: 29.3.1 + jest-circus: 29.4.3 + jest-environment-node: 29.4.3 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.4.3 + jest-runner: 29.4.3 + jest-util: 29.4.3 + jest-validate: 29.4.3 micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 29.3.1 + pretty-format: 29.4.3 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1_typescript@4.9.4 + ts-node: 10.9.1_typescript@4.9.5 transitivePeerDependencies: - supports-color dev: true - /jest-config/29.3.1_zfha7dvnw4nti6zkbsmhmn6xo4: - resolution: {integrity: sha512-y0tFHdj2WnTEhxmGUK1T7fgLen7YK4RtfvpLFBXfQkh2eMJAQq24Vx9472lvn5wg0MAO6B+iPfJfzdR9hJYalg==} + /jest-config/29.4.3_ucpl6toqp57nqodtp3vxxi6g5a: + resolution: {integrity: sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@types/node': '*' @@ -9765,63 +10224,63 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@jest/test-sequencer': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.18 - babel-jest: 29.3.1_@babel+core@7.20.12 + '@jest/test-sequencer': 29.4.3 + '@jest/types': 29.4.3 + '@types/node': 18.13.0 + babel-jest: 29.4.3_@babel+core@7.20.12 chalk: 4.1.2 - ci-info: 3.7.1 - deepmerge: 4.2.2 + ci-info: 3.8.0 + deepmerge: 4.3.0 glob: 7.2.3 graceful-fs: 4.2.10 - jest-circus: 29.3.1 - jest-environment-node: 29.3.1 - jest-get-type: 29.2.0 - jest-regex-util: 29.2.0 - jest-resolve: 29.3.1 - jest-runner: 29.3.1 - jest-util: 29.3.1 - jest-validate: 29.3.1 + jest-circus: 29.4.3 + jest-environment-node: 29.4.3 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.4.3 + jest-runner: 29.4.3 + jest-util: 29.4.3 + jest-validate: 29.4.3 micromatch: 4.0.5 parse-json: 5.2.0 - pretty-format: 29.3.1 + pretty-format: 29.4.3 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1_typescript@4.9.4 + ts-node: 10.9.1_typescript@4.9.5 transitivePeerDependencies: - supports-color dev: true - /jest-diff/29.3.1: - resolution: {integrity: sha512-vU8vyiO7568tmin2lA3r2DP8oRvzhvRcD4DjpXc6uGveQodyk7CKLhQlCSiwgx3g0pFaE88/KLZ0yaTWMc4Uiw==} + /jest-diff/29.4.3: + resolution: {integrity: sha512-YB+ocenx7FZ3T5O9lMVMeLYV4265socJKtkwgk/6YUz/VsEzYDkiMuMhWzZmxm3wDRQvayJu/PjkjjSkjoHsCA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - diff-sequences: 29.3.1 - jest-get-type: 29.2.0 - pretty-format: 29.3.1 + diff-sequences: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.4.3 dev: true - /jest-docblock/29.2.0: - resolution: {integrity: sha512-bkxUsxTgWQGbXV5IENmfiIuqZhJcyvF7tU4zJ/7ioTutdz4ToB5Yx6JOFBpgI+TphRY4lhOyCWGNH/QFQh5T6A==} + /jest-docblock/29.4.3: + resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: detect-newline: 3.1.0 dev: true - /jest-each/29.3.1: - resolution: {integrity: sha512-qrZH7PmFB9rEzCSl00BWjZYuS1BSOH8lLuC0azQE9lQrAx3PWGKHTDudQiOSwIy5dGAJh7KA0ScYlCP7JxvFYA==} + /jest-each/29.4.3: + resolution: {integrity: sha512-1ElHNAnKcbJb/b+L+7j0/w7bDvljw4gTv1wL9fYOczeJrbTbkMGQ5iQPFJ3eFQH19VPTx1IyfePdqSpePKss7Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 + '@jest/types': 29.4.3 chalk: 4.1.2 - jest-get-type: 29.2.0 - jest-util: 29.3.1 - pretty-format: 29.3.1 + jest-get-type: 29.4.3 + jest-util: 29.4.3 + pretty-format: 29.4.3 dev: true - /jest-environment-jsdom/29.3.1: - resolution: {integrity: sha512-G46nKgiez2Gy4zvYNhayfMEAFlVHhWfncqvqS6yCd0i+a4NsSUD2WtrKSaYQrYiLQaupHXxCRi8xxVL2M9PbhA==} + /jest-environment-jsdom/29.4.3: + resolution: {integrity: sha512-rFjf8JXrw3OjUzzmSE5l0XjMj0/MSVEUMCSXBGPDkfwb1T03HZI7iJSL0cGctZApPSyJxbjyKDVxkZuyhHkuTw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: canvas: ^2.5.0 @@ -9829,13 +10288,13 @@ packages: canvas: optional: true dependencies: - '@jest/environment': 29.3.1 - '@jest/fake-timers': 29.3.1 - '@jest/types': 29.3.1 + '@jest/environment': 29.4.3 + '@jest/fake-timers': 29.4.3 + '@jest/types': 29.4.3 '@types/jsdom': 20.0.1 - '@types/node': 18.11.18 - jest-mock: 29.3.1 - jest-util: 29.3.1 + '@types/node': 18.13.0 + jest-mock: 29.4.3 + jest-util: 29.4.3 jsdom: 20.0.3 transitivePeerDependencies: - bufferutil @@ -9843,85 +10302,85 @@ packages: - utf-8-validate dev: true - /jest-environment-node/29.3.1: - resolution: {integrity: sha512-xm2THL18Xf5sIHoU7OThBPtuH6Lerd+Y1NLYiZJlkE3hbE+7N7r8uvHIl/FkZ5ymKXJe/11SQuf3fv4v6rUMag==} + /jest-environment-node/29.4.3: + resolution: {integrity: sha512-gAiEnSKF104fsGDXNkwk49jD/0N0Bqu2K9+aMQXA6avzsA9H3Fiv1PW2D+gzbOSR705bWd2wJZRFEFpV0tXISg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/fake-timers': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.18 - jest-mock: 29.3.1 - jest-util: 29.3.1 + '@jest/environment': 29.4.3 + '@jest/fake-timers': 29.4.3 + '@jest/types': 29.4.3 + '@types/node': 18.13.0 + jest-mock: 29.4.3 + jest-util: 29.4.3 dev: true - /jest-get-type/29.2.0: - resolution: {integrity: sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==} + /jest-get-type/29.4.3: + resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-haste-map/29.3.1: - resolution: {integrity: sha512-/FFtvoG1xjbbPXQLFef+WSU4yrc0fc0Dds6aRPBojUid7qlPqZvxdUBA03HW0fnVHXVCnCdkuoghYItKNzc/0A==} + /jest-haste-map/29.4.3: + resolution: {integrity: sha512-eZIgAS8tvm5IZMtKlR8Y+feEOMfo2pSQkmNbufdbMzMSn9nitgGxF1waM/+LbryO3OkMcKS98SUb+j/cQxp/vQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 + '@jest/types': 29.4.3 '@types/graceful-fs': 4.1.6 - '@types/node': 18.11.18 + '@types/node': 18.13.0 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.10 - jest-regex-util: 29.2.0 - jest-util: 29.3.1 - jest-worker: 29.3.1 + jest-regex-util: 29.4.3 + jest-util: 29.4.3 + jest-worker: 29.4.3 micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 dev: true - /jest-leak-detector/29.3.1: - resolution: {integrity: sha512-3DA/VVXj4zFOPagGkuqHnSQf1GZBmmlagpguxEERO6Pla2g84Q1MaVIB3YMxgUaFIaYag8ZnTyQgiZ35YEqAQA==} + /jest-leak-detector/29.4.3: + resolution: {integrity: sha512-9yw4VC1v2NspMMeV3daQ1yXPNxMgCzwq9BocCwYrRgXe4uaEJPAN0ZK37nFBhcy3cUwEVstFecFLaTHpF7NiGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-get-type: 29.2.0 - pretty-format: 29.3.1 + jest-get-type: 29.4.3 + pretty-format: 29.4.3 dev: true - /jest-matcher-utils/29.3.1: - resolution: {integrity: sha512-fkRMZUAScup3txIKfMe3AIZZmPEjWEdsPJFK3AIy5qRohWqQFg1qrmKfYXR9qEkNc7OdAu2N4KPHibEmy4HPeQ==} + /jest-matcher-utils/29.4.3: + resolution: {integrity: sha512-TTciiXEONycZ03h6R6pYiZlSkvYgT0l8aa49z/DLSGYjex4orMUcafuLXYyyEDWB1RKglq00jzwY00Ei7yFNVg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 - jest-diff: 29.3.1 - jest-get-type: 29.2.0 - pretty-format: 29.3.1 + jest-diff: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.4.3 dev: true - /jest-message-util/29.3.1: - resolution: {integrity: sha512-lMJTbgNcDm5z+6KDxWtqOFWlGQxD6XaYwBqHR8kmpkP+WWWG90I35kdtQHY67Ay5CSuydkTBbJG+tH9JShFCyA==} + /jest-message-util/29.4.3: + resolution: {integrity: sha512-1Y8Zd4ZCN7o/QnWdMmT76If8LuDv23Z1DRovBj/vcSFNlGCJGoO8D1nJDw1AdyAGUk0myDLFGN5RbNeJyCRGCw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/code-frame': 7.18.6 - '@jest/types': 29.3.1 + '@jest/types': 29.4.3 '@types/stack-utils': 2.0.1 chalk: 4.1.2 graceful-fs: 4.2.10 micromatch: 4.0.5 - pretty-format: 29.3.1 + pretty-format: 29.4.3 slash: 3.0.0 stack-utils: 2.0.6 dev: true - /jest-mock/29.3.1: - resolution: {integrity: sha512-H8/qFDtDVMFvFP4X8NuOT3XRDzOUTz+FeACjufHzsOIBAxivLqkB1PoLCaJx9iPPQ8dZThHPp/G3WRWyMgA3JA==} + /jest-mock/29.4.3: + resolution: {integrity: sha512-LjFgMg+xed9BdkPMyIJh+r3KeHt1klXPJYBULXVVAkbTaaKjPX1o1uVCAZADMEp/kOxGTwy/Ot8XbvgItOrHEg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 - '@types/node': 18.11.18 - jest-util: 29.3.1 + '@jest/types': 29.4.3 + '@types/node': 18.13.0 + jest-util: 29.4.3 dev: true - /jest-pnp-resolver/1.2.3_jest-resolve@29.3.1: + /jest-pnp-resolver/1.2.3_jest-resolve@29.4.3: resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} engines: {node: '>=6'} peerDependencies: @@ -9930,165 +10389,165 @@ packages: jest-resolve: optional: true dependencies: - jest-resolve: 29.3.1 + jest-resolve: 29.4.3 dev: true - /jest-regex-util/29.2.0: - resolution: {integrity: sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA==} + /jest-regex-util/29.4.3: + resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dev: true - /jest-resolve-dependencies/29.3.1: - resolution: {integrity: sha512-Vk0cYq0byRw2WluNmNWGqPeRnZ3p3hHmjJMp2dyyZeYIfiBskwq4rpiuGFR6QGAdbj58WC7HN4hQHjf2mpvrLA==} + /jest-resolve-dependencies/29.4.3: + resolution: {integrity: sha512-uvKMZAQ3nmXLH7O8WAOhS5l0iWyT3WmnJBdmIHiV5tBbdaDZ1wqtNX04FONGoaFvSOSHBJxnwAVnSn1WHdGVaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - jest-regex-util: 29.2.0 - jest-snapshot: 29.3.1 + jest-regex-util: 29.4.3 + jest-snapshot: 29.4.3 transitivePeerDependencies: - supports-color dev: true - /jest-resolve/29.3.1: - resolution: {integrity: sha512-amXJgH/Ng712w3Uz5gqzFBBjxV8WFLSmNjoreBGMqxgCz5cH7swmBZzgBaCIOsvb0NbpJ0vgaSFdJqMdT+rADw==} + /jest-resolve/29.4.3: + resolution: {integrity: sha512-GPokE1tzguRyT7dkxBim4wSx6E45S3bOQ7ZdKEG+Qj0Oac9+6AwJPCk0TZh5Vu0xzeX4afpb+eDmgbmZFFwpOw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: chalk: 4.1.2 graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 - jest-pnp-resolver: 1.2.3_jest-resolve@29.3.1 - jest-util: 29.3.1 - jest-validate: 29.3.1 + jest-haste-map: 29.4.3 + jest-pnp-resolver: 1.2.3_jest-resolve@29.4.3 + jest-util: 29.4.3 + jest-validate: 29.4.3 resolve: 1.22.1 - resolve.exports: 1.1.1 + resolve.exports: 2.0.0 slash: 3.0.0 dev: true - /jest-runner/29.3.1: - resolution: {integrity: sha512-oFvcwRNrKMtE6u9+AQPMATxFcTySyKfLhvso7Sdk/rNpbhg4g2GAGCopiInk1OP4q6gz3n6MajW4+fnHWlU3bA==} + /jest-runner/29.4.3: + resolution: {integrity: sha512-GWPTEiGmtHZv1KKeWlTX9SIFuK19uLXlRQU43ceOQ2hIfA5yPEJC7AMkvFKpdCHx6pNEdOD+2+8zbniEi3v3gA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/console': 29.3.1 - '@jest/environment': 29.3.1 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.18 + '@jest/console': 29.4.3 + '@jest/environment': 29.4.3 + '@jest/test-result': 29.4.3 + '@jest/transform': 29.4.3 + '@jest/types': 29.4.3 + '@types/node': 18.13.0 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 - jest-docblock: 29.2.0 - jest-environment-node: 29.3.1 - jest-haste-map: 29.3.1 - jest-leak-detector: 29.3.1 - jest-message-util: 29.3.1 - jest-resolve: 29.3.1 - jest-runtime: 29.3.1 - jest-util: 29.3.1 - jest-watcher: 29.3.1 - jest-worker: 29.3.1 + jest-docblock: 29.4.3 + jest-environment-node: 29.4.3 + jest-haste-map: 29.4.3 + jest-leak-detector: 29.4.3 + jest-message-util: 29.4.3 + jest-resolve: 29.4.3 + jest-runtime: 29.4.3 + jest-util: 29.4.3 + jest-watcher: 29.4.3 + jest-worker: 29.4.3 p-limit: 3.1.0 source-map-support: 0.5.13 transitivePeerDependencies: - supports-color dev: true - /jest-runtime/29.3.1: - resolution: {integrity: sha512-jLzkIxIqXwBEOZx7wx9OO9sxoZmgT2NhmQKzHQm1xwR1kNW/dn0OjxR424VwHHf1SPN6Qwlb5pp1oGCeFTQ62A==} + /jest-runtime/29.4.3: + resolution: {integrity: sha512-F5bHvxSH+LvLV24vVB3L8K467dt3y3dio6V3W89dUz9nzvTpqd/HcT9zfYKL2aZPvD63vQFgLvaUX/UpUhrP6Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/environment': 29.3.1 - '@jest/fake-timers': 29.3.1 - '@jest/globals': 29.3.1 - '@jest/source-map': 29.2.0 - '@jest/test-result': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.18 + '@jest/environment': 29.4.3 + '@jest/fake-timers': 29.4.3 + '@jest/globals': 29.4.3 + '@jest/source-map': 29.4.3 + '@jest/test-result': 29.4.3 + '@jest/transform': 29.4.3 + '@jest/types': 29.4.3 + '@types/node': 18.13.0 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 glob: 7.2.3 graceful-fs: 4.2.10 - jest-haste-map: 29.3.1 - jest-message-util: 29.3.1 - jest-mock: 29.3.1 - jest-regex-util: 29.2.0 - jest-resolve: 29.3.1 - jest-snapshot: 29.3.1 - jest-util: 29.3.1 + jest-haste-map: 29.4.3 + jest-message-util: 29.4.3 + jest-mock: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.4.3 + jest-snapshot: 29.4.3 + jest-util: 29.4.3 slash: 3.0.0 strip-bom: 4.0.0 transitivePeerDependencies: - supports-color dev: true - /jest-snapshot/29.3.1: - resolution: {integrity: sha512-+3JOc+s28upYLI2OJM4PWRGK9AgpsMs/ekNryUV0yMBClT9B1DF2u2qay8YxcQd338PPYSFNb0lsar1B49sLDA==} + /jest-snapshot/29.4.3: + resolution: {integrity: sha512-NGlsqL0jLPDW91dz304QTM/SNO99lpcSYYAjNiX0Ou+sSGgkanKBcSjCfp/pqmiiO1nQaOyLp6XQddAzRcx3Xw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/core': 7.20.12 - '@babel/generator': 7.20.7 + '@babel/generator': 7.20.14 '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 - '@babel/traverse': 7.20.12 + '@babel/traverse': 7.20.13 '@babel/types': 7.20.7 - '@jest/expect-utils': 29.3.1 - '@jest/transform': 29.3.1 - '@jest/types': 29.3.1 + '@jest/expect-utils': 29.4.3 + '@jest/transform': 29.4.3 + '@jest/types': 29.4.3 '@types/babel__traverse': 7.18.3 '@types/prettier': 2.7.2 babel-preset-current-node-syntax: 1.0.1_@babel+core@7.20.12 chalk: 4.1.2 - expect: 29.3.1 + expect: 29.4.3 graceful-fs: 4.2.10 - jest-diff: 29.3.1 - jest-get-type: 29.2.0 - jest-haste-map: 29.3.1 - jest-matcher-utils: 29.3.1 - jest-message-util: 29.3.1 - jest-util: 29.3.1 + jest-diff: 29.4.3 + jest-get-type: 29.4.3 + jest-haste-map: 29.4.3 + jest-matcher-utils: 29.4.3 + jest-message-util: 29.4.3 + jest-util: 29.4.3 natural-compare: 1.4.0 - pretty-format: 29.3.1 + pretty-format: 29.4.3 semver: 7.3.8 transitivePeerDependencies: - supports-color dev: true - /jest-util/29.3.1: - resolution: {integrity: sha512-7YOVZaiX7RJLv76ZfHt4nbNEzzTRiMW/IiOG7ZOKmTXmoGBxUDefgMAxQubu6WPVqP5zSzAdZG0FfLcC7HOIFQ==} + /jest-util/29.4.3: + resolution: {integrity: sha512-ToSGORAz4SSSoqxDSylWX8JzkOQR7zoBtNRsA7e+1WUX5F8jrOwaNpuh1YfJHJKDHXLHmObv5eOjejUd+/Ws+Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 - '@types/node': 18.11.18 + '@jest/types': 29.4.3 + '@types/node': 18.13.0 chalk: 4.1.2 - ci-info: 3.7.1 + ci-info: 3.8.0 graceful-fs: 4.2.10 picomatch: 2.3.1 dev: true - /jest-validate/29.3.1: - resolution: {integrity: sha512-N9Lr3oYR2Mpzuelp1F8negJR3YE+L1ebk1rYA5qYo9TTY3f9OWdptLoNSPP9itOCBIRBqjt/S5XHlzYglLN67g==} + /jest-validate/29.4.3: + resolution: {integrity: sha512-J3u5v7aPQoXPzaar6GndAVhdQcZr/3osWSgTeKg5v574I9ybX/dTyH0AJFb5XgXIB7faVhf+rS7t4p3lL9qFaw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 + '@jest/types': 29.4.3 camelcase: 6.3.0 chalk: 4.1.2 - jest-get-type: 29.2.0 + jest-get-type: 29.4.3 leven: 3.1.0 - pretty-format: 29.3.1 + pretty-format: 29.4.3 dev: true - /jest-watcher/29.3.1: - resolution: {integrity: sha512-RspXG2BQFDsZSRKGCT/NiNa8RkQ1iKAjrO0//soTMWx/QUt+OcxMqMSBxz23PYGqUuWm2+m2mNNsmj0eIoOaFg==} + /jest-watcher/29.4.3: + resolution: {integrity: sha512-zwlXH3DN3iksoIZNk73etl1HzKyi5FuQdYLnkQKm5BW4n8HpoG59xSwpVdFrnh60iRRaRBGw0gcymIxjJENPcA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/test-result': 29.3.1 - '@jest/types': 29.3.1 - '@types/node': 18.11.18 + '@jest/test-result': 29.4.3 + '@jest/types': 29.4.3 + '@types/node': 18.13.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 - jest-util: 29.3.1 + jest-util: 29.4.3 string-length: 4.0.2 dev: true @@ -10096,14 +10555,24 @@ packages: resolution: {integrity: sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.11.18 - jest-util: 29.3.1 + '@types/node': 18.13.0 + jest-util: 29.4.3 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest/29.3.1_ts-node@10.9.1: - resolution: {integrity: sha512-6iWfL5DTT0Np6UYs/y5Niu7WIfNv/wRTtN5RSXt2DIEft3dx3zPuw/3WJQBCJfmEzvDiEKwoqMbGD9n49+qLSA==} + /jest-worker/29.4.3: + resolution: {integrity: sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 18.13.0 + jest-util: 29.4.3 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest/29.4.3_ts-node@10.9.1: + resolution: {integrity: sha512-XvK65feuEFGZT8OO0fB/QAQS+LGHvQpaadkH5p47/j3Ocqq3xf2pK9R+G0GzgfuhXVxEv76qCOOcMb5efLk6PA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true peerDependencies: @@ -10112,10 +10581,10 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.3.1_ts-node@10.9.1 - '@jest/types': 29.3.1 + '@jest/core': 29.4.3_ts-node@10.9.1 + '@jest/types': 29.4.3 import-local: 3.1.0 - jest-cli: 29.3.1_ts-node@10.9.1 + jest-cli: 29.4.3_ts-node@10.9.1 transitivePeerDependencies: - '@types/node' - supports-color @@ -10126,8 +10595,8 @@ packages: resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} dev: true - /js-sdsl/4.2.0: - resolution: {integrity: sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==} + /js-sdsl/4.3.0: + resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==} /js-tokens/4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -10160,7 +10629,7 @@ packages: optional: true dependencies: abab: 2.0.6 - acorn: 8.8.1 + acorn: 8.8.2 acorn-globals: 7.0.1 cssom: 0.5.0 cssstyle: 2.3.0 @@ -10183,7 +10652,7 @@ packages: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 - ws: 8.12.0 + ws: 8.12.1 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -10279,8 +10748,8 @@ packages: resolution: {integrity: sha512-b0/9J1O9Jcyik1GC6KC42hJ41jKwdO/Mq8Mdo5sYN+IuRTXs2YFHZC3kZSx6ueusqa95x3wLYe/ytKjbAfGixA==} dev: true - /kolorist/1.6.0: - resolution: {integrity: sha512-dLkz37Ab97HWMx9KTes3Tbi3D1ln9fCAy2zr2YVExJasDRPGRaKcoE4fycWNtnCAJfjFqe0cnY+f8KT2JePEXQ==} + /kolorist/1.7.0: + resolution: {integrity: sha512-ymToLHqL02udwVdbkowNpzjFd6UzozMtshPQKVi5k1EjKRqKqBrOnE9QbLEb0/pV76SAiIT13hdL8R6suc+f3g==} dev: true /lcid/3.1.1: @@ -10297,7 +10766,7 @@ packages: dependencies: copy-anything: 2.0.6 parse-node-version: 1.0.1 - tslib: 2.4.1 + tslib: 2.5.0 optionalDependencies: errno: 0.1.8 graceful-fs: 4.2.10 @@ -10330,6 +10799,94 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 + /lightningcss-darwin-arm64/1.18.0: + resolution: {integrity: sha512-OqjydwtiNPgdH1ByIjA1YzqvDG/OMR6L3LPN6wRl1729LB0y4Mik7L06kmZaTb+pvUHr+NmDd2KCwnlrQ4zO3w==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /lightningcss-darwin-x64/1.18.0: + resolution: {integrity: sha512-mNiuPHj89/JHZmJMp+5H8EZSt6EL5DZRWJ31O6k3DrLLnRIQjXuXdDdN8kP7LoIkeWI5xvyD60CsReJm+YWYAw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /lightningcss-linux-arm-gnueabihf/1.18.0: + resolution: {integrity: sha512-S+25JjI6601HiAVoTDXW6SqH+E94a+FHA7WQqseyNHunOgVWKcAkNEc2LJvVxgwTq6z41sDIb9/M3Z9wa9lk4A==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /lightningcss-linux-arm64-gnu/1.18.0: + resolution: {integrity: sha512-JSqh4+21dCgBecIQUet35dtE4PhhSEMyqe3y0ZNQrAJQ5kyUPSQHiw81WXnPJcOSTTpG0TyMLiC8K//+BsFGQA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /lightningcss-linux-arm64-musl/1.18.0: + resolution: {integrity: sha512-2FWHa8iUhShnZnqhn2wfIcK5adJat9hAAaX7etNsoXJymlliDIOFuBQEsba2KBAZSM4QqfQtvRdR7m8i0I7ybQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /lightningcss-linux-x64-gnu/1.18.0: + resolution: {integrity: sha512-plCPGQJtDZHcLVKVRLnQVF2XRsIC32WvuJhQ7fJ7F6BV98b/VZX0OlX05qUaOESD9dCDHjYSfxsgcvOKgCWh7A==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /lightningcss-linux-x64-musl/1.18.0: + resolution: {integrity: sha512-na+BGtVU6fpZvOHKhnlA0XHeibkT3/46nj6vLluG3kzdJYoBKU6dIl7DSOk++8jv4ybZyFJ0aOFMMSc8g2h58A==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /lightningcss-win32-x64-msvc/1.18.0: + resolution: {integrity: sha512-5qeAH4RMNy2yMNEl7e5TI6upt/7xD2ZpHWH4RkT8iJ7/6POS5mjHbXWUO9Q1hhDhqkdzGa76uAdMzEouIeCyNw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /lightningcss/1.18.0: + resolution: {integrity: sha512-uk10tNxi5fhZqU93vtYiQgx/8a9f0Kvtj5AXIm+VlOXY+t/DWDmCZWJEkZJmmALgvbS6aAW8or+Kq85eJ6TDTw==} + engines: {node: '>= 12.0.0'} + dependencies: + detect-libc: 1.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.18.0 + lightningcss-darwin-x64: 1.18.0 + lightningcss-linux-arm-gnueabihf: 1.18.0 + lightningcss-linux-arm64-gnu: 1.18.0 + lightningcss-linux-arm64-musl: 1.18.0 + lightningcss-linux-x64-gnu: 1.18.0 + lightningcss-linux-x64-musl: 1.18.0 + lightningcss-win32-x64-msvc: 1.18.0 + dev: true + /lines-and-columns/1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -10389,8 +10946,8 @@ packages: engines: {node: '>= 12.13.0'} dev: false - /local-pkg/0.4.2: - resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} + /local-pkg/0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} engines: {node: '>=14'} dev: true @@ -10495,7 +11052,7 @@ packages: /lower-case/2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.4.1 + tslib: 2.5.0 dev: true /lru-cache/5.1.1: @@ -10777,15 +11334,15 @@ packages: kind-of: 6.0.3 dev: true - /minimist/1.2.7: - resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + /minimist/1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true /mkdirp/0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true dependencies: - minimist: 1.2.7 + minimist: 1.2.8 dev: true /mock.js/0.2.0: @@ -10796,7 +11353,7 @@ packages: resolution: {integrity: sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ==} hasBin: true dependencies: - commander: 9.5.0 + commander: 10.0.0 dev: true /moment/2.29.4: @@ -10856,11 +11413,11 @@ packages: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.4.1 + tslib: 2.5.0 dev: true - /node-abort-controller/3.0.1: - resolution: {integrity: sha512-/ujIVxthRs+7q6hsdjHMaj8hRG9NuWmwrz+JdRwZ14jdFoKSkm+vDsCbF9PLpnSqjaWQJuTmVtcWHNLr+vrOFw==} + /node-abort-controller/3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} dev: true /node-domexception/1.0.0: @@ -10887,8 +11444,8 @@ packages: engines: {node: 4.x || >=6.0.0} dev: true - /node-fetch/2.6.8: - resolution: {integrity: sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg==} + /node-fetch/2.6.9: + resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} engines: {node: 4.x || >=6.0.0} peerDependencies: encoding: ^0.1.0 @@ -10954,8 +11511,8 @@ packages: es6-promise: 3.3.1 dev: true - /node-releases/2.0.8: - resolution: {integrity: sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==} + /node-releases/2.0.10: + resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -11088,7 +11645,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 dev: true /object-keys/1.1.1: @@ -11101,7 +11658,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 has-symbols: 1.0.3 object-keys: 1.1.1 dev: true @@ -11111,7 +11668,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 es-abstract: 1.21.1 dev: true @@ -11120,7 +11677,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 es-abstract: 1.21.1 dev: true @@ -11129,7 +11686,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 es-abstract: 1.21.1 reflect.getprototypeof: 1.0.3 dev: true @@ -11137,7 +11694,7 @@ packages: /object.hasown/1.1.2: resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} dependencies: - define-properties: 1.1.4 + define-properties: 1.2.0 es-abstract: 1.21.1 dev: true @@ -11146,7 +11703,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 es-abstract: 1.21.1 dev: true @@ -11180,8 +11737,8 @@ packages: mimic-fn: 2.1.0 dev: true - /open/8.4.0: - resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} + /open/8.4.1: + resolution: {integrity: sha512-/4b7qZNhv6Uhd7jjnREh1NjnPxlTq+XNWPG88Ydkj5AILcA5m3ajvcg57pB24EQjKv0dK62XnDqk9c/hkIG5Kg==} engines: {node: '>=12'} dependencies: define-lazy-prop: 2.0.0 @@ -11310,7 +11867,7 @@ packages: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 - tslib: 2.4.1 + tslib: 2.5.0 dev: true /parent-module/1.0.1: @@ -11369,7 +11926,7 @@ packages: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.4.1 + tslib: 2.5.0 dev: true /path-browserify/0.0.1: @@ -11522,7 +12079,7 @@ packages: resolution: {integrity: sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==} engines: {node: '>=10'} dependencies: - irregular-plurals: 3.3.0 + irregular-plurals: 3.4.0 dev: true /pluralize/8.0.0: @@ -11999,7 +12556,7 @@ packages: peerDependencies: postcss: ^8.2 dependencies: - '@csstools/selector-specificity': 2.0.2_laljekdltgzr3kfi7r4exvsr5a + '@csstools/selector-specificity': 2.1.1_laljekdltgzr3kfi7r4exvsr5a postcss-selector-parser: 6.0.11 dev: true @@ -12009,7 +12566,7 @@ packages: peerDependencies: postcss: ^8.2 dependencies: - '@csstools/selector-specificity': 2.0.2_wajs5nedgkikc5pcuwett7legi + '@csstools/selector-specificity': 2.1.1_wajs5nedgkikc5pcuwett7legi postcss: 8.4.21 postcss-selector-parser: 6.0.11 dev: true @@ -12105,7 +12662,7 @@ packages: '@csstools/postcss-stepped-value-functions': 1.0.1 '@csstools/postcss-unset-value': 1.0.2 autoprefixer: 10.4.13 - browserslist: 4.21.4 + browserslist: 4.21.5 css-blank-pseudo: 3.0.3 css-has-pseudo: 3.0.4 css-prefers-color-scheme: 6.0.3 @@ -12158,7 +12715,7 @@ packages: '@csstools/postcss-stepped-value-functions': 1.0.1_postcss@8.4.21 '@csstools/postcss-unset-value': 1.0.2_postcss@8.4.21 autoprefixer: 10.4.13_postcss@8.4.21 - browserslist: 4.21.4 + browserslist: 4.21.5 css-blank-pseudo: 3.0.3_postcss@8.4.21 css-has-pseudo: 3.0.4_postcss@8.4.21 css-prefers-color-scheme: 6.0.3_postcss@8.4.21 @@ -12386,8 +12943,8 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - /prettier-plugin-organize-imports/3.2.1_7zh76q2qrt7th5cvcxurl33jgy: - resolution: {integrity: sha512-bty7C2Ecard5EOXirtzeCAqj4FU4epeuWrQt/Z+sh8UVEpBlBZ3m3KNPz2kFu7KgRTQx/C9o4/TdquPD1jOqjQ==} + /prettier-plugin-organize-imports/3.2.2_silln3pw57har7jydmecgzoypa: + resolution: {integrity: sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA==} peerDependencies: '@volar/vue-language-plugin-pug': ^1.0.4 '@volar/vue-typescript': ^1.0.4 @@ -12399,11 +12956,11 @@ packages: '@volar/vue-typescript': optional: true dependencies: - prettier: 2.8.2 - typescript: 4.9.4 + prettier: 2.8.4 + typescript: 4.9.5 dev: true - /prettier-plugin-packagejson/2.3.0_prettier@2.8.2: + /prettier-plugin-packagejson/2.3.0_prettier@2.8.4: resolution: {integrity: sha512-2SAPMMk1UDkqsB7DifWKcwCm6VC52JXMrzLHfbcQHJRWhRCj9zziOy+s+2XOyPBeyqFqS+A/1IKzOrxKFTo6pw==} peerDependencies: prettier: '>= 1.16.0' @@ -12411,11 +12968,11 @@ packages: prettier: optional: true dependencies: - prettier: 2.8.2 + prettier: 2.8.4 sort-package-json: 1.57.0 dev: true - /prettier-plugin-two-style-order/1.0.1_prettier@2.8.2: + /prettier-plugin-two-style-order/1.0.1_prettier@2.8.4: resolution: {integrity: sha512-ETltO2FRR/Pxc7bsgz2XwuzWSPwafl7/v5+5Rria4S579CTas7dya+xsmbkix0q1tYQiuRjVVdfGnCKlH/aOuQ==} peerDependencies: prettier: '>= 2.0.0' @@ -12423,7 +12980,7 @@ packages: postcss: 8.4.21 postcss-less: 4.0.1 postcss-sorting: 6.0.0_postcss@8.4.21 - prettier: 2.8.2 + prettier: 2.8.4 dev: true /prettier/1.15.3: @@ -12432,8 +12989,8 @@ packages: hasBin: true dev: true - /prettier/2.8.2: - resolution: {integrity: sha512-BtRV9BcncDyI2tsuS19zzhzoxD8Dh8LiCx7j7tHzrkz8GFXAexeWFdi22mjE1d16dftH2qNaytVxqiRTGlMfpw==} + /prettier/2.8.4: + resolution: {integrity: sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==} engines: {node: '>=10.13.0'} hasBin: true dev: true @@ -12454,11 +13011,11 @@ packages: react-is: 17.0.2 dev: true - /pretty-format/29.3.1: - resolution: {integrity: sha512-FyLnmb1cYJV8biEIiRyzRFvs2lry7PPIvOqKVe1GCUEYg4YGmlx1qG9EJNMxArYm7piII4qb8UV1Pncq5dxmcg==} + /pretty-format/29.4.3: + resolution: {integrity: sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.0.0 + '@jest/schemas': 29.4.3 ansi-styles: 5.2.0 react-is: 18.2.0 dev: true @@ -12515,8 +13072,8 @@ packages: ipaddr.js: 1.9.1 dev: true - /proxy-compare/2.3.0: - resolution: {integrity: sha512-c3L2CcAi7f7pvlD0D7xsF+2CQIW8C3HaYx2Pfgq8eA4HAl3GAH6/dVYsyBbYF/0XJs2ziGLrzmz5fmzPm6A0pQ==} + /proxy-compare/2.4.0: + resolution: {integrity: sha512-FD8KmQUQD6Mfpd0hywCOzcon/dbkFP8XBd9F1ycbKtvVsfv6TsFUKJ2eC0Iz2y+KzlkdT1Z8SY6ZSgm07zOyqg==} dev: true /proxy-from-env/1.1.0: @@ -12558,8 +13115,8 @@ packages: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: true - /punycode/2.2.0: - resolution: {integrity: sha512-LN6QV1IJ9ZhxWTNdktaPClrNfp8xdSAYS0Zk2ddX7XsXZAxckMHPCBcHRo0cTcEIgYPRiGEkmji3Idkh2yFtYw==} + /punycode/2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} /puppeteer-core/1.12.2: @@ -12581,11 +13138,11 @@ packages: - utf-8-validate dev: true - /qiankun/2.8.4: - resolution: {integrity: sha512-9MCKTJZpb0L7CcWC80jNr4TZz9m2Pvh9QWHNKJ7vZAEUMRZBbMl3+wCV1VBcUJJIgfRMU5G+ksoW142rMFA0Ew==} + /qiankun/2.9.2: + resolution: {integrity: sha512-SzVHPdczlXt29IQRUNf8ndy7iJ7BlduHWArO5iKIJ18tnOWOUC//93O5NS8uVV+Mu0e+kvZcG9mxL1DVvcra1g==} dependencies: - '@babel/runtime': 7.20.7 - import-html-entry: 1.14.0 + '@babel/runtime': 7.20.13 + import-html-entry: 1.14.2 lodash: 4.17.21 single-spa: 5.9.4 dev: true @@ -12701,10 +13258,10 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 dom-align: 1.12.4 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 resize-observer-polyfill: 1.5.1 @@ -12732,12 +13289,12 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 array-tree-filter: 2.1.0 classnames: 2.3.2 rc-select: 14.1.16_biqbaboplfbrettd7655fr4n2y rc-tree: 5.7.2_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: true @@ -12748,12 +13305,12 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 array-tree-filter: 2.1.0 classnames: 2.3.2 rc-select: 14.2.0_biqbaboplfbrettd7655fr4n2y rc-tree: 5.7.2_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -12772,7 +13329,7 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -12795,13 +13352,27 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 + dev: true + + /rc-collapse/3.5.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-/TNiT3DW1t3sUCiVD/DPUYooJZ3BLA93/2rZsB3eM2bGJCCla2X9D2E4tgm7LGMQGy5Atb2lMUn2FQuvQNvavQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.13 + classnames: 2.3.2 + rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 /rc-dialog/9.0.2_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-s3U+24xWUuB6Bn2Lk/Qt6rufy+uT+QvWkiFhNBcO9APLxcFFczWamaq7x9h8SCuhfc1nHcW4y8NbMsnAjNnWyg==} @@ -12809,11 +13380,11 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 '@rc-component/portal': 1.1.0_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -12823,11 +13394,11 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 '@rc-component/portal': 1.1.0_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -12837,23 +13408,23 @@ packages: react: '>=16.11.0' react-dom: '>=16.11.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - /rc-field-form/1.27.3_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-HGqxHnmGQgkPApEcikV4qTg3BLPC82uB/cwBDftDt1pYaqitJfSl5TFTTUMKVEJVT5RqJ2Zi68ME1HmIMX2HAw==} + /rc-field-form/1.27.4_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-PQColQnZimGKArnOh8V2907+VzDCXcqtFvHgevDLtqWc/P7YASb/FqntSmdS8q3VND5SHX3Y1vgMIzY22/f/0Q==} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 async-validator: 4.2.5 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -12869,12 +13440,12 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 '@rc-component/portal': 1.1.0_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 rc-dialog: 9.0.2_biqbaboplfbrettd7655fr4n2y rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -12884,9 +13455,9 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: true @@ -12897,10 +13468,10 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 '@rc-component/mini-decimal': 1.0.1 classnames: 2.3.2 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -12910,9 +13481,22 @@ packages: react: '>=16.0.0' react-dom: '>=16.0.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 + classnames: 2.3.2 + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: true + + /rc-input/0.2.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-xgkVcFgtRO0Hl9hmvslZhObNyxbSpTmy3nR1Tk4XrjjZ9lFJ7GcJBy6ss30Pdb0oX36cHzLN8I7VCjBGeRNB9A==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.20.13 classnames: 2.3.2 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -12922,30 +13506,46 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 - rc-menu: 9.8.1_biqbaboplfbrettd7655fr4n2y + rc-menu: 9.8.2_biqbaboplfbrettd7655fr4n2y rc-textarea: 0.4.7_biqbaboplfbrettd7655fr4n2y rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 + dev: true - /rc-menu/9.8.1_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-179weouypfjWJSRvvoo/vPy+StojsMzK2XC5jRNhL1ryt/N/8wAFESte8K6jZJkNp9DHDLFTe+dCGmikKpiFuA==} + /rc-mentions/2.0.0_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-58NSeM6R5MrgYAhR2TH27JgAN7ivp3iBTmty3q6gvrrGHelPMdGxpJ5aH7AIlodCrPWLAm1lT4XoiuI4s9snXA==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 + classnames: 2.3.2 + rc-input: 0.2.2_biqbaboplfbrettd7655fr4n2y + rc-menu: 9.8.2_biqbaboplfbrettd7655fr4n2y + rc-textarea: 1.0.1_biqbaboplfbrettd7655fr4n2y + rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + + /rc-menu/9.8.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-EahOJVjLuEnJsThoPN+mGnVm431RzVzDLZWHRS/YnXTQULa7OsgdJa/Y7qXxc3Z5sz8mgT6xYtgpmBXLxrZFaQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.13 classnames: 2.3.2 rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y rc-overflow: 1.2.8_biqbaboplfbrettd7655fr4n2y rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - shallowequal: 1.1.0 /rc-motion/2.6.3_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-xFLkes3/7VL/J+ah9jJruEW/Akbx5F6jVa2wG5o/ApGKQKSOd5FR3rseHLL9+xtJg4PmCwo6/1tqhDO/T+jFHA==} @@ -12953,9 +13553,9 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -12966,10 +13566,10 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: true @@ -12981,10 +13581,10 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -12994,10 +13594,10 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 - rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13007,7 +13607,7 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13019,20 +13619,20 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 date-fns: 2.29.3 dayjs: 1.11.7 moment: 2.29.4 rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 dev: true - /rc-picker/3.1.4_lejchghvacj3hhjkogy3eaalky: - resolution: {integrity: sha512-4qANXNc3C02YENNQvun329zf9VLvSQ2W8RkKQRu8k1P+EtSGqe3klcAKCfz/1TuCiDvgRjJlzRmyZAkwvsbI8w==} + /rc-picker/3.1.5_lejchghvacj3hhjkogy3eaalky: + resolution: {integrity: sha512-Hh3ml+u+5mxLfl4ahVWlRGiX5+0EJrALR6tSW9yP0eea+6j+YjvjfetbvuVidViMDMweZa38dr8HTfAFLG6GFw==} engines: {node: '>=8.x'} peerDependencies: date-fns: '>= 2.x' @@ -13048,15 +13648,14 @@ packages: moment: optional: true dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 dayjs: 1.11.7 moment: 2.29.4 rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - shallowequal: 1.1.0 /rc-progress/3.4.1_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-eAFDHXlk8aWpoXl0llrenPMt9qKHQXphxcVsnKs0FHC6eCSk1ebJtyaVjJUzKe0233ogiLDeEFK1Uihz3s67hw==} @@ -13064,9 +13663,9 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13077,35 +13676,35 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - /rc-resize-observer/1.2.1_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-g53PnWLeVOmt4XWkt2x+QlIdf/PhJSd7JqHhtMrUY370e7wJ+kxbgXicYqvENUcgFiiOiMCd07YsC2GNsoSbnA==} + /rc-resize-observer/1.3.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-iFUdt3NNhflbY3mwySv5CA1TC06zdJ+pfo0oc27xpf4PIOvfZwZGtD9Kz41wGYqC4SLio93RVAirSSpYlV/uYg==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 resize-observer-polyfill: 1.5.1 - /rc-segmented/2.1.0_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-hUlonro+pYoZcwrH6Vm56B2ftLfQh046hrwif/VwLIw1j3zGt52p5mREBwmeVzXnSwgnagpOpfafspzs1asjGw==} + /rc-segmented/2.1.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-qGo1bCr83ESXpXVOCXjFe1QJlCAQXyi9KCiy8eX3rIMYlTeJr/ftySIaTnYsitL18SvWf5ZEHsfqIWoX0EMfFQ==} peerDependencies: react: '>=16.0.0' react-dom: '>=16.0.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13116,12 +13715,12 @@ packages: react: '*' react-dom: '*' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y rc-overflow: 1.2.8_biqbaboplfbrettd7655fr4n2y rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y rc-virtual-list: 3.4.13_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13134,12 +13733,12 @@ packages: react: '*' react-dom: '*' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y rc-overflow: 1.2.8_biqbaboplfbrettd7655fr4n2y rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y rc-virtual-list: 3.4.13_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13151,12 +13750,26 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 + dev: true + + /rc-slider/10.1.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-gn8oXazZISEhnmRinI89Z/JD/joAaM35jp+gDtIVSTD/JJMCCBqThqLk1SVJmvtfeiEF/kKaFY0+qt4SDHFUDw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.13 + classnames: 2.3.2 + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 /rc-slider/8.2.0_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-rnO36M3VhMoPWh1kRuCeJoluT4duAW7+5aLaAn9oLu2pKEKsuOFUh5DmA2kEo88UmvPV6nr7HHDeZuC8SNM/lA==} @@ -13180,9 +13793,9 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: true @@ -13194,9 +13807,9 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13215,9 +13828,9 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: true @@ -13228,9 +13841,9 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13241,27 +13854,27 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 - rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 dev: true - /rc-table/7.30.3_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-PHe+lZKwPo3qui5j79m54vKu8b4hebk04x+4Hy65NvwUU3+NNFGS5FZpylXQMkueMnE8hgh22ZuScQDkCtzQFQ==} + /rc-table/7.30.4_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-NXfitP7CEXAnnuxdEYZNwEMyWmWOSsv9WgiP2yI10pyy0BwomFn4aa8nX/9x832edLwuIlrYuL6ojfOK60An2w==} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 '@rc-component/context': 1.3.0_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 - rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13272,13 +13885,13 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 rc-dropdown: 4.0.1_biqbaboplfbrettd7655fr4n2y - rc-menu: 9.8.1_biqbaboplfbrettd7655fr4n2y + rc-menu: 9.8.2_biqbaboplfbrettd7655fr4n2y rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y - rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13288,13 +13901,28 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 - rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 + dev: true + + /rc-textarea/1.0.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-dtIm96apjJpCUcCeTtbnLGJaVlqbOqVgN0P9z+bqMSi7rcV5QVeUtBnG+jQTGk/uD183Z7jbhc8Dx7G3luDCwg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.13 + classnames: 2.3.2 + rc-input: 0.2.2_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 /rc-tooltip/3.7.3_biqbaboplfbrettd7655fr4n2y: resolution: {integrity: sha512-dE2ibukxxkrde7wH9W8ozHKUO4aQnPZ6qBHtrTH9LoO836PjDdiaWO73fgPB05VfJs9FbZdmGPVEbXCeOP99Ww==} @@ -13313,7 +13941,20 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 + classnames: 2.3.2 + rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + dev: true + + /rc-tooltip/5.3.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-e6H0dMD38EPaSPD2XC8dRfct27VvT2TkPdoBSuNl3RRZ5tspiY/c5xYEmGC0IrABvMBgque4Mr2SMZuliCvoiQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.20.13 classnames: 2.3.2 rc-trigger: 5.3.4_biqbaboplfbrettd7655fr4n2y react: 18.2.0 @@ -13325,11 +13966,11 @@ packages: react: '*' react-dom: '*' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 rc-select: 14.1.16_biqbaboplfbrettd7655fr4n2y rc-tree: 5.7.2_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 dev: true @@ -13340,11 +13981,11 @@ packages: react: '*' react-dom: '*' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 rc-select: 14.2.0_biqbaboplfbrettd7655fr4n2y rc-tree: 5.7.2_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13355,10 +13996,10 @@ packages: react: '*' react-dom: '*' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y rc-virtual-list: 3.4.13_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13385,11 +14026,11 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 rc-align: 4.0.15_biqbaboplfbrettd7655fr4n2y rc-motion: 2.6.3_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13399,9 +14040,9 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -13414,13 +14055,13 @@ packages: react-lifecycles-compat: 3.0.4 shallowequal: 1.1.0 - /rc-util/5.27.1_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-PsjHA+f+KBCz+YTZxrl3ukJU5RoNKoe3KSNMh0xGiISbR67NaM9E9BiMjCwxa3AcCUOg/rZ+V0ZKLSimAA+e3w==} + /rc-util/5.27.2_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-8XHRbeJOWlTR2Hk1K2xLaPOf7lZu+3taskAGuqOPccA676vB3ygrz3ZgdrA3wml40CzR9RlIEHDWwI7FZT3wBQ==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-is: 16.13.1 @@ -13432,29 +14073,29 @@ packages: react: '*' react-dom: '*' dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 classnames: 2.3.2 - rc-resize-observer: 1.2.1_biqbaboplfbrettd7655fr4n2y - rc-util: 5.27.1_biqbaboplfbrettd7655fr4n2y + rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y + rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - /react-dev-inspector/1.8.4_ol4nhuzbuflsbzk2mijpqykzba: + /react-dev-inspector/1.8.4_km5ddj7uwb23cqeymeyvzjsfb4: resolution: {integrity: sha512-+MpF43RHTKjkilQ4TgUfSgpVlJFKpL4uPc/0FBJAMNPICYxw27q81++AcBIThfxFmBgsFbMj3EKZwkaPZ43V7w==} engines: {node: '>=12.0.0'} peerDependencies: react: '>=16.8.0' dependencies: '@babel/core': 7.20.12 - '@babel/generator': 7.20.7 - '@babel/parser': 7.20.7 - '@babel/traverse': 7.20.12 + '@babel/generator': 7.20.14 + '@babel/parser': 7.20.15 + '@babel/traverse': 7.20.13 '@babel/types': 7.20.7 hotkeys-js: 3.10.1 loader-utils: 2.0.4 querystring: 0.2.1 react: 18.2.0 - react-dev-utils: 12.0.1_iukboom6ndih5an6iafl45j2fe + react-dev-utils: 12.0.1_7kw3g6rralp5ps6mg3uyzz6azm transitivePeerDependencies: - eslint - supports-color @@ -13463,7 +14104,7 @@ packages: - webpack dev: false - /react-dev-utils/12.0.1_iukboom6ndih5an6iafl45j2fe: + /react-dev-utils/12.0.1_7kw3g6rralp5ps6mg3uyzz6azm: resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} engines: {node: '>=14'} peerDependencies: @@ -13475,29 +14116,29 @@ packages: dependencies: '@babel/code-frame': 7.18.6 address: 1.2.2 - browserslist: 4.21.4 + browserslist: 4.21.5 chalk: 4.1.2 cross-spawn: 7.0.3 detect-port-alt: 1.1.6 escape-string-regexp: 4.0.0 filesize: 8.0.7 find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.2_iukboom6ndih5an6iafl45j2fe + fork-ts-checker-webpack-plugin: 6.5.2_7kw3g6rralp5ps6mg3uyzz6azm global-modules: 2.0.0 globby: 11.1.0 gzip-size: 6.0.0 - immer: 9.0.17 + immer: 9.0.19 is-root: 2.1.0 loader-utils: 3.2.1 - open: 8.4.0 + open: 8.4.1 pkg-up: 3.1.0 prompts: 2.4.2 react-error-overlay: 6.0.11 recursive-readdir: 2.2.3 - shell-quote: 1.7.4 + shell-quote: 1.8.0 strip-ansi: 6.0.1 text-table: 0.2.0 - typescript: 4.9.4 + typescript: 4.9.5 transitivePeerDependencies: - eslint - supports-color @@ -13525,6 +14166,11 @@ packages: /react-error-overlay/6.0.11: resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} + dev: false + + /react-error-overlay/6.0.9: + resolution: {integrity: sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==} + dev: true /react-fast-compare/3.2.0: resolution: {integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==} @@ -13535,7 +14181,7 @@ packages: react: ^16.6.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 invariant: 2.2.4 prop-types: 15.8.1 react: 18.2.0 @@ -13549,7 +14195,7 @@ packages: react: ^16.6.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 invariant: 2.2.4 prop-types: 15.8.1 react: 18.1.0 @@ -13617,7 +14263,7 @@ packages: react-native: optional: true dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 '@types/react-redux': 7.1.25 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -13627,7 +14273,7 @@ packages: react-is: 17.0.2 dev: true - /react-redux/8.0.5_gm3gubmwja4o7q6fr6adx3fpz4: + /react-redux/8.0.5_ctrls2ti7t7iutxbwkm5ipogyy: resolution: {integrity: sha512-Q2f6fCKxPFpkXt1qNRZdEDLlScsDWyrgSj0mliK59qU6W5gvBiKkdMEG2lJzhd1rCctf0hb6EtePPLZ2e0m1uw==} peerDependencies: '@types/react': ^16.8 || ^17.0 || ^18.0 @@ -13648,16 +14294,16 @@ packages: redux: optional: true dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 '@types/hoist-non-react-statics': 3.3.1 - '@types/react': 18.0.26 - '@types/react-dom': 18.0.10 + '@types/react': 18.0.28 + '@types/react-dom': 18.0.11 '@types/use-sync-external-store': 0.0.3 hoist-non-react-statics: 3.3.2 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-is: 18.2.0 - redux: 4.2.0 + redux: 4.2.1 use-sync-external-store: 1.2.0_react@18.2.0 dev: true @@ -13690,17 +14336,17 @@ packages: react-router: 6.3.0_react@18.1.0 dev: true - /react-router-dom/6.6.2_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-6SCDXxRQqW5af8ImOqKza7icmQ47/EMbz572uFjzvcArg3lZ+04PxSPp8qGs+p2Y+q+b+S/AjXv8m8dyLndIIA==} + /react-router-dom/6.8.1_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-67EXNfkQgf34P7+PSb6VlBuaacGhkKn3kpE51+P6zYSG2kiRoumXEL6e27zTa9+PGF2MNXbgIUHTVlleLbIcHQ==} engines: {node: '>=14'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@remix-run/router': 1.2.1 + '@remix-run/router': 1.3.2 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - react-router: 6.6.2_react@18.2.0 + react-router: 6.8.1_react@18.2.0 dev: true /react-router/6.3.0_react@18.1.0: @@ -13721,13 +14367,13 @@ packages: react: 18.2.0 dev: true - /react-router/6.6.2_react@18.2.0: - resolution: {integrity: sha512-uJPG55Pek3orClbURDvfljhqFvMgJRo59Pktywkk8hUUkTY2aRfza8Yhl/vZQXs+TNQyr6tu+uqz/fLxPICOGQ==} + /react-router/6.8.1_react@18.2.0: + resolution: {integrity: sha512-Jgi8BzAJQ8MkPt8ipXnR73rnD7EmZ0HFFb7jdQU24TynGW1Ooqin2KVDN9voSC+7xhqbbCd2cjGUepb6RObnyg==} engines: {node: '>=14'} peerDependencies: react: '>=16.8' dependencies: - '@remix-run/router': 1.2.1 + '@remix-run/router': 1.3.2 react: 18.2.0 dev: true @@ -13737,7 +14383,7 @@ packages: react: ^16.3.0 || ^17.0.0 react-dom: ^16.3.0 || ^17.0.0 dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 invariant: 2.2.4 prop-types: 15.8.1 react: 18.2.0 @@ -13850,10 +14496,10 @@ packages: resolution: {integrity: sha512-iIjKnRThI5sKPEASpUvySemjzwqwI13e3qP7oLub+FycCRDysLSAOwt958niZW6LhxfmS6Qm1BzbU70w/Koc4w==} dev: true - /redux/4.2.0: - resolution: {integrity: sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==} + /redux/4.2.1: + resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 dev: true /reflect.getprototypeof/1.0.3: @@ -13861,9 +14507,9 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 es-abstract: 1.21.1 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 globalthis: 1.0.3 which-builtin-type: 1.1.3 dev: true @@ -13900,7 +14546,7 @@ packages: /regenerator-transform/0.15.1: resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.20.13 dev: true /regexp-tree/0.1.24: @@ -13913,7 +14559,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 functions-have-names: 1.2.3 dev: true @@ -13921,22 +14567,18 @@ packages: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} - /regexpu-core/5.2.2: - resolution: {integrity: sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==} + /regexpu-core/5.3.0: + resolution: {integrity: sha512-ZdhUQlng0RoscyW7jADnUZ25F5eVtHdMyXSb2PiwafvteRAOJUjFoUPEYZSIfP99fBIs3maLIRfpEddT78wAAQ==} engines: {node: '>=4'} dependencies: + '@babel/regjsgen': 0.8.0 regenerate: 1.4.2 regenerate-unicode-properties: 10.1.0 - regjsgen: 0.7.1 regjsparser: 0.9.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 dev: true - /regjsgen/0.7.1: - resolution: {integrity: sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==} - dev: true - /regjsparser/0.9.1: resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} hasBin: true @@ -14056,8 +14698,8 @@ packages: engines: {node: '>=8'} dev: true - /resolve.exports/1.1.1: - resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==} + /resolve.exports/2.0.0: + resolution: {integrity: sha512-6K/gDlqgQscOlg9fSRpWstA8sYe8rbELsSTNpx+3kTrsVCzvSl0zIvRErM7fdl9ERWDsKnrLnwB+Ne89918XOg==} engines: {node: '>=10'} dev: true @@ -14284,7 +14926,7 @@ packages: rollup: optional: true dependencies: - open: 8.4.0 + open: 8.4.1 picomatch: 2.3.1 source-map: 0.7.4 yargs: 17.6.2 @@ -14306,7 +14948,7 @@ packages: /rxjs/7.8.0: resolution: {integrity: sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==} dependencies: - tslib: 2.4.1 + tslib: 2.5.0 dev: true /safe-buffer/5.1.2: @@ -14321,7 +14963,7 @@ packages: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 is-regex: 1.1.4 dev: true @@ -14392,10 +15034,10 @@ packages: compute-scroll-into-view: 1.0.20 dev: true - /scroll-into-view-if-needed/3.0.4: - resolution: {integrity: sha512-s+/F50jwTOUt+u5oEIAzum9MN2lUQNvWBe/zfEsVQcbaERjGkKLq1s+2wCHkahMLC8nMLbzMVKivx9JhunXaZg==} + /scroll-into-view-if-needed/3.0.6: + resolution: {integrity: sha512-x+CW0kOzlFNOnseF0DBr0AJ5m+TgGmSOdEZwyiZW0gV87XBvxQKw5A8DvFFgabznA68XqLgVX+PwPX8OzsFvRA==} dependencies: - compute-scroll-into-view: 2.0.4 + compute-scroll-into-view: 3.0.0 /select-hose/2.0.0: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} @@ -14495,8 +15137,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shell-quote/1.7.4: - resolution: {integrity: sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==} + /shell-quote/1.8.0: + resolution: {integrity: sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==} dev: false /should-equal/2.0.0: @@ -14541,7 +15183,7 @@ packages: resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} dependencies: call-bind: 1.0.2 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 object-inspect: 1.12.3 dev: true @@ -14757,7 +15399,7 @@ packages: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} dependencies: - internal-slot: 1.0.4 + internal-slot: 1.0.5 dev: true /stream-browserify/2.0.2: @@ -14833,11 +15475,11 @@ packages: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 es-abstract: 1.21.1 - get-intrinsic: 1.1.3 + get-intrinsic: 1.2.0 has-symbols: 1.0.3 - internal-slot: 1.0.4 + internal-slot: 1.0.5 regexp.prototype.flags: 1.4.3 side-channel: 1.0.4 dev: true @@ -14846,7 +15488,7 @@ packages: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 es-abstract: 1.21.1 dev: true @@ -14854,7 +15496,7 @@ packages: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} dependencies: call-bind: 1.0.2 - define-properties: 1.1.4 + define-properties: 1.2.0 es-abstract: 1.21.1 dev: true @@ -14941,9 +15583,9 @@ packages: '@babel/preset-env': 7.20.2_@babel+core@7.20.12 '@babel/preset-react': 7.18.6_@babel+core@7.20.12 '@babel/preset-typescript': 7.18.6_@babel+core@7.20.12 - '@babel/traverse': 7.20.12 + '@babel/traverse': 7.20.13 '@emotion/unitless': 0.7.5 - css-to-react-native: 3.1.0 + css-to-react-native: 3.2.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 @@ -14978,14 +15620,14 @@ packages: '@babel/preset-env': 7.20.2_@babel+core@7.20.12 '@babel/preset-react': 7.18.6_@babel+core@7.20.12 '@babel/preset-typescript': 7.18.6_@babel+core@7.20.12 - '@babel/traverse': 7.20.12 + '@babel/traverse': 7.20.13 '@emotion/unitless': 0.8.0 - css-to-react-native: 3.1.0 + css-to-react-native: 3.2.0 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 shallowequal: 1.1.0 stylis: 4.1.3 - tslib: 2.4.1 + tslib: 2.5.0 transitivePeerDependencies: - supports-color dev: true @@ -15056,11 +15698,11 @@ packages: stylelint-config-recommended: 7.0.0_stylelint@14.8.2 dev: true - /stylelint-declaration-block-no-ignored-properties/2.6.0_stylelint@13.13.1: - resolution: {integrity: sha512-S9EC/tVJL19ppMRC4A4ecxtkENHZ7WNrEAukJVDtFt+iZgNP3SmokOLlYUhe6qZuB2XUvETqUx6r2p3Xfo7Rxw==} + /stylelint-declaration-block-no-ignored-properties/2.7.0_stylelint@13.13.1: + resolution: {integrity: sha512-44SpI9+9Oc1ICuwwRfwS/3npQ2jPobDSTnwWdNgZGryGqQCp17CgEIWjCv1BgUOSzND3RqywNCNLKvO1AOxbfg==} engines: {node: '>=6'} peerDependencies: - stylelint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 + stylelint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 dependencies: stylelint: 13.13.1 dev: true @@ -15183,8 +15825,8 @@ packages: postcss: 7.0.39 dev: true - /superjson/1.12.1: - resolution: {integrity: sha512-HMTj43zvwW5bD+JCZCvFf4DkZQCmiLTen4C+W1Xogj0SPOpnhxsriogM04QmBVGH5b3kcIIOr6FqQ/aoIDx7TQ==} + /superjson/1.12.2: + resolution: {integrity: sha512-ugvUo9/WmvWOjstornQhsN/sR9mnGtWGYeTxFuqLb4AiT4QdUavjGFRALCPKWWnAiUJ4HTpytj5e0t5HoMRkXg==} engines: {node: '>=10'} dependencies: copy-anything: 3.0.3 @@ -15252,7 +15894,7 @@ packages: hasBin: true dependencies: call-me-maybe: 1.0.2 - node-fetch: 2.6.8 + node-fetch: 2.6.9 node-fetch-h2: 2.3.0 node-readfiles: 0.2.0 oas-kit-common: 1.0.8 @@ -15266,8 +15908,8 @@ packages: - encoding dev: true - /swr/2.0.0_react@18.2.0: - resolution: {integrity: sha512-IhUx5yPkX+Fut3h0SqZycnaNLXLXsb2ECFq0Y29cxnK7d8r7auY2JWNbCW3IX+EqXUg3rwNJFlhrw5Ye/b6k7w==} + /swr/2.0.3_react@18.2.0: + resolution: {integrity: sha512-sGvQDok/AHEWTPfhUWXEHBVEXmgGnuahyhmRQbjl9XBYxT/MSlAzvXEKQpyM++bMPaI52vcWS2HiKNaW7+9OFw==} engines: {pnpm: '7'} peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 @@ -15300,13 +15942,13 @@ packages: engines: {node: '>=6'} dev: true - /terser/5.16.1: - resolution: {integrity: sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==} + /terser/5.16.3: + resolution: {integrity: sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q==} engines: {node: '>=10'} hasBin: true dependencies: '@jridgewell/source-map': 0.3.2 - acorn: 8.8.1 + acorn: 8.8.2 commander: 2.20.3 source-map-support: 0.5.21 dev: true @@ -15355,8 +15997,8 @@ packages: resolution: {integrity: sha512-uHNGu4evFt/8eNLldazeAM1M8JrMc1jshhJJfVRARTN3yT8HEEibofeQ7QETWQ5ISBjd6fKtTVBCC/+mGS6FpA==} dev: true - /tinycolor2/1.5.2: - resolution: {integrity: sha512-h80m9GPFGbcLzZByXlNSEhp1gf8Dy+VX/2JCGUZsWLo7lV1mnE/XlxGYgRBoMLJh1lIDXP0EMC4RPTjlRaV+Bg==} + /tinycolor2/1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} /tmpl/1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -15394,7 +16036,7 @@ packages: engines: {node: '>=0.8'} dependencies: psl: 1.9.0 - punycode: 2.2.0 + punycode: 2.3.0 dev: true /tough-cookie/4.1.2: @@ -15402,7 +16044,7 @@ packages: engines: {node: '>=6'} dependencies: psl: 1.9.0 - punycode: 2.2.0 + punycode: 2.3.0 universalify: 0.2.0 url-parse: 1.5.10 dev: true @@ -15415,7 +16057,7 @@ packages: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} dependencies: - punycode: 2.2.0 + punycode: 2.3.0 dev: true /trim-newlines/3.0.1: @@ -15434,7 +16076,7 @@ packages: resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==} dev: true - /ts-node/10.9.1_typescript@4.9.4: + /ts-node/10.9.1_typescript@4.9.5: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true peerDependencies: @@ -15453,13 +16095,13 @@ packages: '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.3 - acorn: 8.8.1 + acorn: 8.8.2 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.9.4 + typescript: 4.9.5 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true @@ -15468,27 +16110,27 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib/2.4.1: - resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + /tslib/2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} dev: true - /tsutils/3.21.0_typescript@4.9.4: + /tsutils/3.21.0_typescript@4.9.5: 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.9.4 + typescript: 4.9.5 dev: true - /tsx/3.12.2: - resolution: {integrity: sha512-ykAEkoBg30RXxeOMVeZwar+JH632dZn9EUJVyJwhfag62k6UO/dIyJEV58YuLF6e5BTdV/qmbQrpkWqjq9cUnQ==} + /tsx/3.12.3: + resolution: {integrity: sha512-Wc5BFH1xccYTXaQob+lEcimkcb/Pq+0en2s+ruiX0VEIC80nV7/0s7XRahx8NnsoCnpCVUPz8wrqVSPi760LkA==} hasBin: true dependencies: - '@esbuild-kit/cjs-loader': 2.4.1 - '@esbuild-kit/core-utils': 3.0.0 - '@esbuild-kit/esm-loader': 2.5.4 + '@esbuild-kit/cjs-loader': 2.4.2 + '@esbuild-kit/core-utils': 3.1.0 + '@esbuild-kit/esm-loader': 2.5.5 optionalDependencies: fsevents: 2.3.2 dev: true @@ -15593,32 +16235,28 @@ packages: hasBin: true dev: true - /typescript/4.9.4: - resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} + /typescript/4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true - /ua-parser-js/0.7.32: - resolution: {integrity: sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==} + /ua-parser-js/0.7.33: + resolution: {integrity: sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==} dev: true - /umi-presets-pro/2.0.2_aegj6e4bshbj2ek6a2qagy3lt4: + /umi-presets-pro/2.0.2_j6z4hab2i3bwnwb4dzmobxs5ea: resolution: {integrity: sha512-qP4mM0DdQHGLDFQuO/ek95jHDQ7hnCqWwAMaYjCGroxVQWUV+GHt5cyU39bLkHQ3dPS8OWVen1Bjz2/JBF0nHw==} dependencies: - '@alita/plugins': 3.2.7_aegj6e4bshbj2ek6a2qagy3lt4 + '@alita/plugins': 3.2.10_j6z4hab2i3bwnwb4dzmobxs5ea '@umijs/max-plugin-openapi': 2.0.2 - '@umijs/plugins': 4.0.44_aegj6e4bshbj2ek6a2qagy3lt4 + '@umijs/plugins': 4.0.51_j6z4hab2i3bwnwb4dzmobxs5ea '@umijs/request-record': 1.1.3 swagger-ui-dist: 4.15.5 transitivePeerDependencies: - - '@babel/helper-module-imports' - - '@babel/types' - '@types/lodash.merge' - '@types/react' - '@types/react-dom' - antd - - aslemammad-vite-plugin-macro - - babel-plugin-macros - babel-plugin-styled-components - chokidar - debug @@ -15632,7 +16270,6 @@ packages: - react-native - supports-color - umi - - vite dev: true /umi-request/1.4.0: @@ -15653,23 +16290,23 @@ packages: slash2: 2.0.0 dev: true - /umi/4.0.44_jmsqo4zypbbjozzwpr4bmyrgiu: - resolution: {integrity: sha512-I1vdihqCQZXC4z6tAYa8jJKHCgBCyTtwdSZGx3NsdQDsNPELy/nXw0hdhBM/cHaISJxsluVs1xlUXevAJfBItA==} + /umi/4.0.51_5sxtzqf4pm6epycwyxpxfttr6q: + resolution: {integrity: sha512-6wAX/DGOKlGJBDdHlQEEfnITgrZlR060/R6Q6Q7gzPVEClDpW2BONoilePr2SmL83ISwzZ7vooFORfG45gvNnA==} engines: {node: '>=14'} hasBin: true dependencies: '@babel/runtime': 7.20.7 - '@umijs/bundler-utils': 4.0.44 - '@umijs/bundler-webpack': 4.0.44_typescript@4.9.4 - '@umijs/core': 4.0.44 - '@umijs/lint': 4.0.44_wgtjig7p4wmwivl42uyznyoani - '@umijs/preset-umi': 4.0.44_gxci7zjypbzwkagmgqo6pdnhwa - '@umijs/renderer-react': 4.0.44_biqbaboplfbrettd7655fr4n2y - '@umijs/server': 4.0.44 - '@umijs/test': 4.0.44 - '@umijs/utils': 4.0.44 - prettier-plugin-organize-imports: 3.2.1_7zh76q2qrt7th5cvcxurl33jgy - prettier-plugin-packagejson: 2.3.0_prettier@2.8.2 + '@umijs/bundler-utils': 4.0.51 + '@umijs/bundler-webpack': 4.0.51_typescript@4.9.5 + '@umijs/core': 4.0.51 + '@umijs/lint': 4.0.51_uqnovjyowm2y6c3zpb3q5ibfoy + '@umijs/preset-umi': 4.0.51_c6mc5dj2lvpczaqlkcypbolpey + '@umijs/renderer-react': 4.0.51_biqbaboplfbrettd7655fr4n2y + '@umijs/server': 4.0.51 + '@umijs/test': 4.0.51 + '@umijs/utils': 4.0.51 + prettier-plugin-organize-imports: 3.2.2_silln3pw57har7jydmecgzoypa + prettier-plugin-packagejson: 2.3.0_prettier@2.8.4 transitivePeerDependencies: - '@babel/core' - '@types/node' @@ -15796,20 +16433,20 @@ packages: /unstated-next/1.1.0: resolution: {integrity: sha512-AAn47ZncPvgBGOvMcn8tSRxsrqwf2VdAPxLASTuLJvZt4rhKfDvUkmYZLGfclImSfTVMv7tF4ynaVxin0JjDCA==} - /update-browserslist-db/1.0.10_browserslist@4.21.4: + /update-browserslist-db/1.0.10_browserslist@4.21.5: resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.21.4 + browserslist: 4.21.5 escalade: 3.1.1 picocolors: 1.0.0 /uri-js/4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - punycode: 2.2.0 + punycode: 2.3.0 /url-parse/1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} @@ -15825,7 +16462,7 @@ packages: querystring: 0.2.0 dev: true - /use-isomorphic-layout-effect/1.1.2_3d3cqnhbk5jgdxsmxlr7d24np4: + /use-isomorphic-layout-effect/1.1.2_obbe7ycx7dfgllab6ij5426xhu: resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} peerDependencies: '@types/react': '*' @@ -15834,7 +16471,7 @@ packages: '@types/react': optional: true dependencies: - '@types/react': 18.0.26 + '@types/react': 18.0.28 react: 18.1.0 dev: true @@ -15898,8 +16535,8 @@ packages: resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} dev: true - /v8-to-istanbul/9.0.1: - resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} + /v8-to-istanbul/9.1.0: + resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} engines: {node: '>=10.12.0'} dependencies: '@jridgewell/trace-mapping': 0.3.17 @@ -15914,31 +16551,16 @@ packages: spdx-expression-parse: 3.0.1 dev: true - /valtio/1.7.0_react@18.2.0: - resolution: {integrity: sha512-3Tnix66EERwMcrl1rfB3ylcewOcL5L/GiPmC3FlVNreQzqf2jufEeqlNmgnLgSGchkEmH3WYVtS+x6Qw4r+yzQ==} - engines: {node: '>=12.7.0'} + /valtio/1.9.0_react@18.2.0: + resolution: {integrity: sha512-mQLFsAlKbYascZygFQh6lXuDjU5WHLoeZ8He4HqMnWfasM96V6rDbeFkw1XeG54xycmDonr/Jb4xgviHtuySrA==} + engines: {node: '>=12.20.0'} peerDependencies: - '@babel/helper-module-imports': '>=7.12' - '@babel/types': '>=7.13' - aslemammad-vite-plugin-macro: '>=1.0.0-alpha.1' - babel-plugin-macros: '>=3.0' react: '>=16.8' - vite: '>=2.8.6' peerDependenciesMeta: - '@babel/helper-module-imports': - optional: true - '@babel/types': - optional: true - aslemammad-vite-plugin-macro: - optional: true - babel-plugin-macros: - optional: true react: optional: true - vite: - optional: true dependencies: - proxy-compare: 2.3.0 + proxy-compare: 2.4.0 react: 18.2.0 use-sync-external-store: 1.2.0_react@18.2.0 dev: true @@ -16210,8 +16832,8 @@ packages: async-limiter: 1.0.1 dev: true - /ws/8.12.0: - resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} + /ws/8.12.1: + resolution: {integrity: sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 From 90ced93493c49e83a2a97831db40a6087cf92a5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=9F=E8=B4=A4?= Date: Mon, 20 Feb 2023 14:41:01 +0800 Subject: [PATCH 89/89] fix: use pro-layout new api --- package.json | 54 +- pnpm-lock.yaml | 897 +++++++++--------- src/app.tsx | 12 +- src/components/HeaderDropdown/index.tsx | 8 +- .../RightContent/AvatarDropdown.tsx | 51 +- src/components/RightContent/index.tsx | 68 +- 6 files changed, 493 insertions(+), 597 deletions(-) diff --git a/package.json b/package.json index c21e5856..e0888b31 100644 --- a/package.json +++ b/package.json @@ -46,50 +46,50 @@ "not ie <= 10" ], "dependencies": { - "@ant-design/icons": "^4.7.0", - "@ant-design/pro-components": "^2.3.37", + "@ant-design/icons": "^4.8.0", + "@ant-design/pro-components": "^2.3.57", "@ant-design/use-emotion-css": "1.0.4", - "@umijs/route-utils": "^2.1.3", - "antd": "^5.0.0", + "@umijs/route-utils": "^2.2.2", + "antd": "^5.2.2", "classnames": "^2.3.2", "lodash": "^4.17.21", "moment": "^2.29.4", "omit.js": "^2.0.2", - "rc-menu": "^9.6.4", - "rc-util": "^5.24.4", - "react": "^18.0.0", - "react-dev-inspector": "^1.8.1", - "react-dom": "^18.0.0", + "rc-menu": "^9.8.2", + "rc-util": "^5.27.2", + "react": "^18.2.0", + "react-dev-inspector": "^1.8.4", + "react-dom": "^18.2.0", "react-helmet-async": "^1.3.0" }, "devDependencies": { - "@ant-design/pro-cli": "^2.1.0", + "@ant-design/pro-cli": "^2.1.5", "@testing-library/react": "^13.4.0", "@types/classnames": "^2.3.1", - "@types/express": "^4.17.14", + "@types/express": "^4.17.17", "@types/history": "^4.7.11", - "@types/jest": "^29.2.1", - "@types/lodash": "^4.14.186", - "@types/react": "^18.0.0", - "@types/react-dom": "^18.0.0", - "@types/react-helmet": "^6.1.5", + "@types/jest": "^29.4.0", + "@types/lodash": "^4.14.191", + "@types/react": "^18.0.28", + "@types/react-dom": "^18.0.11", + "@types/react-helmet": "^6.1.6", "@umijs/fabric": "^2.14.1", - "@umijs/lint": "^4.0.34", - "@umijs/max": "^4.0.33", + "@umijs/lint": "^4.0.52", + "@umijs/max": "^4.0.52", "cross-env": "^7.0.3", - "eslint": "^8.0.0", + "eslint": "^8.34.0", "express": "^4.18.2", - "gh-pages": "^3.2.0", + "gh-pages": "^3.2.3", "husky": "^7.0.4", - "jest": "^29.2.2", - "jest-environment-jsdom": "^29.2.2", - "lint-staged": "^10.0.0", + "jest": "^29.4.3", + "jest-environment-jsdom": "^29.4.3", + "lint-staged": "^10.5.4", "mockjs": "^1.1.0", - "prettier": "^2.7.1", - "swagger-ui-dist": "^4.14.2", + "prettier": "^2.8.4", + "swagger-ui-dist": "^4.15.5", "ts-node": "^10.9.1", - "typescript": "^4.8.4", - "umi-presets-pro": "^2.0.0" + "typescript": "^4.9.5", + "umi-presets-pro": "^2.0.2" }, "engines": { "node": ">=12.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cc0b3d1a..b4bbb9d9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,55 +1,55 @@ lockfileVersion: 5.4 specifiers: - '@ant-design/icons': ^4.7.0 - '@ant-design/pro-cli': ^2.1.0 - '@ant-design/pro-components': ^2.3.37 + '@ant-design/icons': ^4.8.0 + '@ant-design/pro-cli': ^2.1.5 + '@ant-design/pro-components': ^2.3.57 '@ant-design/use-emotion-css': 1.0.4 '@testing-library/react': ^13.4.0 '@types/classnames': ^2.3.1 - '@types/express': ^4.17.14 + '@types/express': ^4.17.17 '@types/history': ^4.7.11 - '@types/jest': ^29.2.1 - '@types/lodash': ^4.14.186 - '@types/react': ^18.0.0 - '@types/react-dom': ^18.0.0 - '@types/react-helmet': ^6.1.5 + '@types/jest': ^29.4.0 + '@types/lodash': ^4.14.191 + '@types/react': ^18.0.28 + '@types/react-dom': ^18.0.11 + '@types/react-helmet': ^6.1.6 '@umijs/fabric': ^2.14.1 - '@umijs/lint': ^4.0.34 - '@umijs/max': ^4.0.33 - '@umijs/route-utils': ^2.1.3 - antd: ^5.0.0 + '@umijs/lint': ^4.0.52 + '@umijs/max': ^4.0.52 + '@umijs/route-utils': ^2.2.2 + antd: ^5.2.2 classnames: ^2.3.2 cross-env: ^7.0.3 - eslint: ^8.0.0 + eslint: ^8.34.0 express: ^4.18.2 - gh-pages: ^3.2.0 + gh-pages: ^3.2.3 husky: ^7.0.4 - jest: ^29.2.2 - jest-environment-jsdom: ^29.2.2 - lint-staged: ^10.0.0 + jest: ^29.4.3 + jest-environment-jsdom: ^29.4.3 + lint-staged: ^10.5.4 lodash: ^4.17.21 mockjs: ^1.1.0 moment: ^2.29.4 omit.js: ^2.0.2 - prettier: ^2.7.1 - rc-menu: ^9.6.4 - rc-util: ^5.24.4 - react: ^18.0.0 - react-dev-inspector: ^1.8.1 - react-dom: ^18.0.0 + prettier: ^2.8.4 + rc-menu: ^9.8.2 + rc-util: ^5.27.2 + react: ^18.2.0 + react-dev-inspector: ^1.8.4 + react-dom: ^18.2.0 react-helmet-async: ^1.3.0 - swagger-ui-dist: ^4.14.2 + swagger-ui-dist: ^4.15.5 ts-node: ^10.9.1 - typescript: ^4.8.4 - umi-presets-pro: ^2.0.0 + typescript: ^4.9.5 + umi-presets-pro: ^2.0.2 dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-components': 2.3.54_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/use-emotion-css': 1.0.4_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-components': 2.3.57_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/use-emotion-css': 1.0.4_xan5c2tkf4stwpqcwacropitz4 '@umijs/route-utils': 2.2.2 - antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva + antd: 5.2.2_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 lodash: 4.17.21 moment: 2.29.4 @@ -73,8 +73,8 @@ devDependencies: '@types/react-dom': 18.0.11 '@types/react-helmet': 6.1.6 '@umijs/fabric': 2.14.1 - '@umijs/lint': 4.0.51_jrzwjw3eqcxkrr4jwa5zddmkz4 - '@umijs/max': 4.0.51_sk62eavrhdxpjt2gdk56aqurvy + '@umijs/lint': 4.0.52_jrzwjw3eqcxkrr4jwa5zddmkz4 + '@umijs/max': 4.0.52_sk62eavrhdxpjt2gdk56aqurvy cross-env: 7.0.3 eslint: 8.34.0 express: 4.18.2 @@ -88,7 +88,7 @@ devDependencies: swagger-ui-dist: 4.15.5 ts-node: 10.9.1_typescript@4.9.5 typescript: 4.9.5 - umi-presets-pro: 2.0.2_j6z4hab2i3bwnwb4dzmobxs5ea + umi-presets-pro: 2.0.2_d27qsjlvwifosjanw3qieypnj4 packages: @@ -116,7 +116,7 @@ packages: react: 18.2.0 dev: true - /@alita/plugins/3.2.10_j6z4hab2i3bwnwb4dzmobxs5ea: + /@alita/plugins/3.2.10_d27qsjlvwifosjanw3qieypnj4: resolution: {integrity: sha512-tpXRvnXWVGRHB0lTkkADg6hwJXPOv+qlxaDxnxIW/WHkypMXRQON0CKKnPLP5l7jsKaJWZDyYEWKBF2p1Srzdw==} dependencies: '@alita/babel-transform-jsx-class': 0.0.2 @@ -124,7 +124,7 @@ packages: '@alita/request': 3.1.0 '@alita/types': 3.1.0 '@umijs/bundler-utils': 4.0.42 - '@umijs/plugins': 4.0.42_j6z4hab2i3bwnwb4dzmobxs5ea + '@umijs/plugins': 4.0.42_d27qsjlvwifosjanw3qieypnj4 '@umijs/utils': 4.0.42 ahooks: 3.7.4_react@18.2.0 antd-mobile-alita: 2.3.4_biqbaboplfbrettd7655fr4n2y @@ -235,15 +235,15 @@ packages: react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - /@ant-design/pro-card/2.1.12_eyanc6viuzknyw5lsn6lba32mq: - resolution: {integrity: sha512-8H7Qi0l7TWCOPmSlCP/X8lz8Q53QLxpNqqckgi3lye/HyXsCG1p7R8udMXEwwgFMBJZASwfcqr1Iy3yibOmMqw==} + /@ant-design/pro-card/2.1.14_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-zIIxaP3tR8j2I6LyvslJBOUBMqQNar9a1KX/jXkYJVle72wz0l67BCW2NaGg9UwJMsCIkIuf24Dfcpy/YKpc+w==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.4.2_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-utils': 2.5.6_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-provider': 2.4.3_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-utils': 2.5.8_eyanc6viuzknyw5lsn6lba32mq '@babel/runtime': 7.20.13 antd: 4.24.8_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 @@ -255,17 +255,17 @@ packages: - react-dom dev: true - /@ant-design/pro-card/2.1.12_zziuzmw57eovk2ycxuppotpvc4: - resolution: {integrity: sha512-8H7Qi0l7TWCOPmSlCP/X8lz8Q53QLxpNqqckgi3lye/HyXsCG1p7R8udMXEwwgFMBJZASwfcqr1Iy3yibOmMqw==} + /@ant-design/pro-card/2.1.14_xan5c2tkf4stwpqcwacropitz4: + resolution: {integrity: sha512-zIIxaP3tR8j2I6LyvslJBOUBMqQNar9a1KX/jXkYJVle72wz0l67BCW2NaGg9UwJMsCIkIuf24Dfcpy/YKpc+w==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.4.2_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-utils': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-provider': 2.4.3_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-utils': 2.5.8_xan5c2tkf4stwpqcwacropitz4 '@babel/runtime': 7.20.13 - antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva + antd: 5.2.2_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 omit.js: 2.0.2 rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y @@ -315,23 +315,23 @@ packages: - utf-8-validate dev: true - /@ant-design/pro-components/2.3.54_eyanc6viuzknyw5lsn6lba32mq: - resolution: {integrity: sha512-kKXxs1U50BHGEe4dTVttqw/lvZHdbzlrBAuugP39eY/tNUlZyl0C1f0u+W7VsNYed6q6KV9aYm0zTWv0vBZ9TQ==} + /@ant-design/pro-components/2.3.57_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-zXHAToBHjHQLrORO4reqknDcMeM+7Vgtqwb40AS+ZUD8uo3s+l8+YiV+BoxZDMbmxsQ0VzANU3610ZmSqUMkqg==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@ant-design/pro-card': 2.1.12_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-descriptions': 2.0.46_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-field': 2.2.7_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-form': 2.5.6_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-layout': 7.7.1_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-list': 2.0.47_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-provider': 2.4.2_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-card': 2.1.14_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-descriptions': 2.0.48_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-field': 2.2.9_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-form': 2.5.8_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-layout': 7.8.2_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-list': 2.1.1_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-provider': 2.4.3_eyanc6viuzknyw5lsn6lba32mq '@ant-design/pro-skeleton': 2.0.8_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-table': 3.2.14_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-utils': 2.5.6_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-table': 3.3.1_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-utils': 2.5.8_eyanc6viuzknyw5lsn6lba32mq '@babel/runtime': 7.20.13 antd: 4.24.8_biqbaboplfbrettd7655fr4n2y react: 18.2.0 @@ -341,41 +341,41 @@ packages: - rc-field-form dev: true - /@ant-design/pro-components/2.3.54_zziuzmw57eovk2ycxuppotpvc4: - resolution: {integrity: sha512-kKXxs1U50BHGEe4dTVttqw/lvZHdbzlrBAuugP39eY/tNUlZyl0C1f0u+W7VsNYed6q6KV9aYm0zTWv0vBZ9TQ==} + /@ant-design/pro-components/2.3.57_xan5c2tkf4stwpqcwacropitz4: + resolution: {integrity: sha512-zXHAToBHjHQLrORO4reqknDcMeM+7Vgtqwb40AS+ZUD8uo3s+l8+YiV+BoxZDMbmxsQ0VzANU3610ZmSqUMkqg==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: - '@ant-design/pro-card': 2.1.12_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-descriptions': 2.0.46_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-field': 2.2.7_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-form': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-layout': 7.7.1_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-list': 2.0.47_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-provider': 2.4.2_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-skeleton': 2.0.8_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-table': 3.2.14_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-utils': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-card': 2.1.14_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-descriptions': 2.0.48_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-field': 2.2.9_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-form': 2.5.8_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-layout': 7.8.2_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-list': 2.1.1_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-provider': 2.4.3_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-skeleton': 2.0.8_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-table': 3.3.1_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-utils': 2.5.8_xan5c2tkf4stwpqcwacropitz4 '@babel/runtime': 7.20.13 - antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva + antd: 5.2.2_jb42yyeu5qxbfieyxjks6malva react: 18.2.0 react-dom: 18.2.0_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' - rc-field-form - /@ant-design/pro-descriptions/2.0.46_eyanc6viuzknyw5lsn6lba32mq: - resolution: {integrity: sha512-VEkMUsweHHk1HYrMmcPZ8k8CYb4NBWTqPjwWK/bbOacDqHDw86nd4pmB3jdN+zl4jMasCAX8HOJe4skva/h2HQ==} + /@ant-design/pro-descriptions/2.0.48_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-Y5edlJlnvRWF/8BqIcmJP3xSCvi1UT7uMDjFLdHhcIfWJsBgYfdLq7wupY/pN3rRJ0jCvVJUpVRMotdzAuK8ig==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' dependencies: - '@ant-design/pro-field': 2.2.7_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-form': 2.5.6_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-field': 2.2.9_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-form': 2.5.8_eyanc6viuzknyw5lsn6lba32mq '@ant-design/pro-skeleton': 2.0.8_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-utils': 2.5.6_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-utils': 2.5.8_eyanc6viuzknyw5lsn6lba32mq '@babel/runtime': 7.20.13 antd: 4.24.8_biqbaboplfbrettd7655fr4n2y rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y @@ -387,18 +387,18 @@ packages: - react-dom dev: true - /@ant-design/pro-descriptions/2.0.46_zziuzmw57eovk2ycxuppotpvc4: - resolution: {integrity: sha512-VEkMUsweHHk1HYrMmcPZ8k8CYb4NBWTqPjwWK/bbOacDqHDw86nd4pmB3jdN+zl4jMasCAX8HOJe4skva/h2HQ==} + /@ant-design/pro-descriptions/2.0.48_xan5c2tkf4stwpqcwacropitz4: + resolution: {integrity: sha512-Y5edlJlnvRWF/8BqIcmJP3xSCvi1UT7uMDjFLdHhcIfWJsBgYfdLq7wupY/pN3rRJ0jCvVJUpVRMotdzAuK8ig==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' dependencies: - '@ant-design/pro-field': 2.2.7_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-form': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-skeleton': 2.0.8_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-utils': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-field': 2.2.9_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-form': 2.5.8_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-skeleton': 2.0.8_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-utils': 2.5.8_xan5c2tkf4stwpqcwacropitz4 '@babel/runtime': 7.20.13 - antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva + antd: 5.2.2_jb42yyeu5qxbfieyxjks6malva rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 use-json-comparison: 1.0.6_react@18.2.0 @@ -407,15 +407,15 @@ packages: - rc-field-form - react-dom - /@ant-design/pro-field/2.2.7_eyanc6viuzknyw5lsn6lba32mq: - resolution: {integrity: sha512-7sdIz8x3n1QIQoDWYR9hfM5/BjIAGzbQRBehMCwAZhRg2tFhu804m8UgrQDI8DjiCNketlNHdxMYQKE6v4IYGQ==} + /@ant-design/pro-field/2.2.9_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-Rl9QcdgbQUOfXmpwI1ln4HqxYI4rxIzcyglAPw9wzAfj3hMPglDDy6VzsaSk/bCWAm49rJcRiwyOIp4vuYXOZg==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.4.2_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-utils': 2.5.6_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-provider': 2.4.3_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-utils': 2.5.8_eyanc6viuzknyw5lsn6lba32mq '@babel/runtime': 7.20.13 '@chenshuai2144/sketch-color': 1.0.9_react@18.2.0 antd: 4.24.8_biqbaboplfbrettd7655fr4n2y @@ -430,18 +430,18 @@ packages: - react-dom dev: true - /@ant-design/pro-field/2.2.7_zziuzmw57eovk2ycxuppotpvc4: - resolution: {integrity: sha512-7sdIz8x3n1QIQoDWYR9hfM5/BjIAGzbQRBehMCwAZhRg2tFhu804m8UgrQDI8DjiCNketlNHdxMYQKE6v4IYGQ==} + /@ant-design/pro-field/2.2.9_xan5c2tkf4stwpqcwacropitz4: + resolution: {integrity: sha512-Rl9QcdgbQUOfXmpwI1ln4HqxYI4rxIzcyglAPw9wzAfj3hMPglDDy6VzsaSk/bCWAm49rJcRiwyOIp4vuYXOZg==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.4.2_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-utils': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-provider': 2.4.3_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-utils': 2.5.8_xan5c2tkf4stwpqcwacropitz4 '@babel/runtime': 7.20.13 '@chenshuai2144/sketch-color': 1.0.9_react@18.2.0 - antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva + antd: 5.2.2_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 dayjs: 1.11.7 lodash.tonumber: 4.0.3 @@ -452,8 +452,8 @@ packages: transitivePeerDependencies: - react-dom - /@ant-design/pro-form/2.5.6_eyanc6viuzknyw5lsn6lba32mq: - resolution: {integrity: sha512-OYHQ0tFb3vECKrKUSwC4c/xYjB5OsfY2U68Q3jKHJ7EqMXtC0MCaksfUZcl7nJ9U5FYFOK9RCcjvJvjt3HcA8A==} + /@ant-design/pro-form/2.5.8_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-iBxb7vWOPjlkpfZjZHKnVlgA1ebE7yjuqkXJSQ9AYW2HB1UfXVYcI7xgrj0nkx6EdtL1sf3Rhl2OwKYpRIB9iQ==} peerDependencies: '@types/lodash.merge': ^4.6.7 antd: '>=4.23.0' @@ -465,9 +465,9 @@ packages: optional: true dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-field': 2.2.7_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-provider': 2.4.2_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-utils': 2.5.6_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-field': 2.2.9_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-provider': 2.4.3_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-utils': 2.5.8_eyanc6viuzknyw5lsn6lba32mq '@babel/runtime': 7.20.13 '@chenshuai2144/sketch-color': 1.0.9_react@18.2.0 '@umijs/use-params': 1.0.9_react@18.2.0 @@ -483,8 +483,8 @@ packages: use-media-antd-query: 1.1.0_react@18.2.0 dev: true - /@ant-design/pro-form/2.5.6_zziuzmw57eovk2ycxuppotpvc4: - resolution: {integrity: sha512-OYHQ0tFb3vECKrKUSwC4c/xYjB5OsfY2U68Q3jKHJ7EqMXtC0MCaksfUZcl7nJ9U5FYFOK9RCcjvJvjt3HcA8A==} + /@ant-design/pro-form/2.5.8_xan5c2tkf4stwpqcwacropitz4: + resolution: {integrity: sha512-iBxb7vWOPjlkpfZjZHKnVlgA1ebE7yjuqkXJSQ9AYW2HB1UfXVYcI7xgrj0nkx6EdtL1sf3Rhl2OwKYpRIB9iQ==} peerDependencies: '@types/lodash.merge': ^4.6.7 antd: '>=4.23.0' @@ -496,13 +496,13 @@ packages: optional: true dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-field': 2.2.7_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-provider': 2.4.2_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-utils': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-field': 2.2.9_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-provider': 2.4.3_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-utils': 2.5.8_xan5c2tkf4stwpqcwacropitz4 '@babel/runtime': 7.20.13 '@chenshuai2144/sketch-color': 1.0.9_react@18.2.0 '@umijs/use-params': 1.0.9_react@18.2.0 - antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva + antd: 5.2.2_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 lodash.merge: 4.6.2 omit.js: 2.0.2 @@ -513,16 +513,16 @@ packages: use-json-comparison: 1.0.6_react@18.2.0 use-media-antd-query: 1.1.0_react@18.2.0 - /@ant-design/pro-layout/7.7.1_eyanc6viuzknyw5lsn6lba32mq: - resolution: {integrity: sha512-+Uoav0ftebcTFU63JTr3jtFQd7oLteNQyw0lG/lKqMTfJWEFcaSx+WmBif6iLbsX1KYgpNGklI+GB/iMwoTG3Q==} + /@ant-design/pro-layout/7.8.2_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-SvFNyFCu+Ar6EqVBFAdDKdgHTzJonRFTtf+/opr3zJ46jFFoiuxE5qaJqmtOM+Plrvt272yPWUs/yN6R31t6CA==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.4.2_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-utils': 2.5.6_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-provider': 2.4.3_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-utils': 2.5.8_eyanc6viuzknyw5lsn6lba32mq '@babel/runtime': 7.20.13 '@umijs/route-utils': 4.0.1 '@umijs/use-params': 1.0.9_react@18.2.0 @@ -536,26 +536,25 @@ packages: react: 18.2.0 react-dom: 18.2.0_react@18.2.0 swr: 2.0.3_react@18.2.0 - unstated-next: 1.1.0 use-json-comparison: 1.0.6_react@18.2.0 use-media-antd-query: 1.1.0_react@18.2.0 warning: 4.0.3 dev: true - /@ant-design/pro-layout/7.7.1_zziuzmw57eovk2ycxuppotpvc4: - resolution: {integrity: sha512-+Uoav0ftebcTFU63JTr3jtFQd7oLteNQyw0lG/lKqMTfJWEFcaSx+WmBif6iLbsX1KYgpNGklI+GB/iMwoTG3Q==} + /@ant-design/pro-layout/7.8.2_xan5c2tkf4stwpqcwacropitz4: + resolution: {integrity: sha512-SvFNyFCu+Ar6EqVBFAdDKdgHTzJonRFTtf+/opr3zJ46jFFoiuxE5qaJqmtOM+Plrvt272yPWUs/yN6R31t6CA==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.4.2_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-utils': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-provider': 2.4.3_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-utils': 2.5.8_xan5c2tkf4stwpqcwacropitz4 '@babel/runtime': 7.20.13 '@umijs/route-utils': 4.0.1 '@umijs/use-params': 1.0.9_react@18.2.0 - antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva + antd: 5.2.2_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 lodash.merge: 4.6.2 omit.js: 2.0.2 @@ -565,22 +564,21 @@ packages: react: 18.2.0 react-dom: 18.2.0_react@18.2.0 swr: 2.0.3_react@18.2.0 - unstated-next: 1.1.0 use-json-comparison: 1.0.6_react@18.2.0 use-media-antd-query: 1.1.0_react@18.2.0 warning: 4.0.3 - /@ant-design/pro-list/2.0.47_eyanc6viuzknyw5lsn6lba32mq: - resolution: {integrity: sha512-pMB4jHuRTcPk/pPEgvFgj9FBzMokJ9Gj79NB6RTF6ZQOr3Vj6lEkEsvVGD8zjrbWeHIL/HvRxG+p5v/U/nnsuQ==} + /@ant-design/pro-list/2.1.1_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-afOlH+Kms4eZzUvmA38lGsqobg+PXHqZtBducfgAJ+QgLxBu172TLKuG5wioTdMCm2DSxIKQ3+rQn0O9ZBdDqw==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-card': 2.1.12_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-field': 2.2.7_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-table': 3.2.14_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-card': 2.1.14_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-field': 2.2.9_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-table': 3.3.1_eyanc6viuzknyw5lsn6lba32mq '@babel/runtime': 7.20.13 antd: 4.24.8_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 @@ -589,40 +587,38 @@ packages: rc-util: 4.21.1 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - unstated-next: 1.1.0 use-media-antd-query: 1.1.0_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' - rc-field-form dev: true - /@ant-design/pro-list/2.0.47_zziuzmw57eovk2ycxuppotpvc4: - resolution: {integrity: sha512-pMB4jHuRTcPk/pPEgvFgj9FBzMokJ9Gj79NB6RTF6ZQOr3Vj6lEkEsvVGD8zjrbWeHIL/HvRxG+p5v/U/nnsuQ==} + /@ant-design/pro-list/2.1.1_xan5c2tkf4stwpqcwacropitz4: + resolution: {integrity: sha512-afOlH+Kms4eZzUvmA38lGsqobg+PXHqZtBducfgAJ+QgLxBu172TLKuG5wioTdMCm2DSxIKQ3+rQn0O9ZBdDqw==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-card': 2.1.12_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-field': 2.2.7_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-table': 3.2.14_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-card': 2.1.14_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-field': 2.2.9_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-table': 3.3.1_xan5c2tkf4stwpqcwacropitz4 '@babel/runtime': 7.20.13 - antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva + antd: 5.2.2_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 dayjs: 1.11.7 rc-resize-observer: 1.3.1_biqbaboplfbrettd7655fr4n2y rc-util: 4.21.1 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - unstated-next: 1.1.0 use-media-antd-query: 1.1.0_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' - rc-field-form - /@ant-design/pro-provider/2.4.2_eyanc6viuzknyw5lsn6lba32mq: - resolution: {integrity: sha512-x816YJbfXwKw6CeOVMnxoDWwq9Q/XwVmIXRKTNTYeoKvZy1KoKbXLnXOSoO5EwPrKrA+NyvaTndY8/gks8tXUQ==} + /@ant-design/pro-provider/2.4.3_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-BefEAY9XUE1U5SxLAzA9se4e2VOykMRDyev+cGzz4bewdon/sbX82dcw300rl1n5IB9r+K3wYCzFXX+KaneFSA==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' @@ -638,8 +634,8 @@ packages: swr: 2.0.3_react@18.2.0 dev: true - /@ant-design/pro-provider/2.4.2_zziuzmw57eovk2ycxuppotpvc4: - resolution: {integrity: sha512-x816YJbfXwKw6CeOVMnxoDWwq9Q/XwVmIXRKTNTYeoKvZy1KoKbXLnXOSoO5EwPrKrA+NyvaTndY8/gks8tXUQ==} + /@ant-design/pro-provider/2.4.3_xan5c2tkf4stwpqcwacropitz4: + resolution: {integrity: sha512-BefEAY9XUE1U5SxLAzA9se4e2VOykMRDyev+cGzz4bewdon/sbX82dcw300rl1n5IB9r+K3wYCzFXX+KaneFSA==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' @@ -648,7 +644,7 @@ packages: '@ant-design/cssinjs': 1.5.6_biqbaboplfbrettd7655fr4n2y '@babel/runtime': 7.20.13 '@ctrl/tinycolor': 3.6.0 - antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva + antd: 5.2.2_jb42yyeu5qxbfieyxjks6malva rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 @@ -668,7 +664,7 @@ packages: use-media-antd-query: 1.1.0_react@18.2.0 dev: true - /@ant-design/pro-skeleton/2.0.8_zziuzmw57eovk2ycxuppotpvc4: + /@ant-design/pro-skeleton/2.0.8_xan5c2tkf4stwpqcwacropitz4: resolution: {integrity: sha512-Rb5Fpd6s1q5EemdO43o4w/Eab7ze6Gd3mOdMPHAp2dK5qm3Wj6Qa6Dr94zcsHom2VaZfaPVTatatHxdR+7byOQ==} peerDependencies: antd: '>=4.23.0' @@ -676,13 +672,13 @@ packages: react-dom: '>=16.9.0' dependencies: '@babel/runtime': 7.20.13 - antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva + antd: 5.2.2_jb42yyeu5qxbfieyxjks6malva react: 18.2.0 react-dom: 18.2.0_react@18.2.0 use-media-antd-query: 1.1.0_react@18.2.0 - /@ant-design/pro-table/3.2.14_eyanc6viuzknyw5lsn6lba32mq: - resolution: {integrity: sha512-2IEo4wKCqeJaPpdfM3gTH8QtcNOa3z/mhDPgBMzLc+jM0g433Lqcv3yMjyH1Dkgpp+B23JBmeQEN930B9x4GZw==} + /@ant-design/pro-table/3.3.1_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-NQak8whJklHUrJlQMs6z2nQ9qPdrDXEbJWG/btxE6kFcfANydLRCdsHVmJADZ7NWv+ZvnAiXAzaR1pJeuZxu5A==} peerDependencies: antd: '>=4.23.0' rc-field-form: ^1.22.0 @@ -690,11 +686,11 @@ packages: react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-card': 2.1.12_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-field': 2.2.7_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-form': 2.5.6_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-provider': 2.4.2_eyanc6viuzknyw5lsn6lba32mq - '@ant-design/pro-utils': 2.5.6_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-card': 2.1.14_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-field': 2.2.9_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-form': 2.5.8_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-provider': 2.4.3_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-utils': 2.5.8_eyanc6viuzknyw5lsn6lba32mq '@babel/runtime': 7.20.13 antd: 4.24.8_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 @@ -705,14 +701,13 @@ packages: react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-sortable-hoc: 2.0.0_biqbaboplfbrettd7655fr4n2y - unstated-next: 1.1.0 use-json-comparison: 1.0.6_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' dev: true - /@ant-design/pro-table/3.2.14_zziuzmw57eovk2ycxuppotpvc4: - resolution: {integrity: sha512-2IEo4wKCqeJaPpdfM3gTH8QtcNOa3z/mhDPgBMzLc+jM0g433Lqcv3yMjyH1Dkgpp+B23JBmeQEN930B9x4GZw==} + /@ant-design/pro-table/3.3.1_xan5c2tkf4stwpqcwacropitz4: + resolution: {integrity: sha512-NQak8whJklHUrJlQMs6z2nQ9qPdrDXEbJWG/btxE6kFcfANydLRCdsHVmJADZ7NWv+ZvnAiXAzaR1pJeuZxu5A==} peerDependencies: antd: '>=4.23.0' rc-field-form: ^1.22.0 @@ -720,13 +715,13 @@ packages: react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-card': 2.1.12_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-field': 2.2.7_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-form': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-provider': 2.4.2_zziuzmw57eovk2ycxuppotpvc4 - '@ant-design/pro-utils': 2.5.6_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-card': 2.1.14_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-field': 2.2.9_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-form': 2.5.8_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-provider': 2.4.3_xan5c2tkf4stwpqcwacropitz4 + '@ant-design/pro-utils': 2.5.8_xan5c2tkf4stwpqcwacropitz4 '@babel/runtime': 7.20.13 - antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva + antd: 5.2.2_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 dayjs: 1.11.7 omit.js: 2.0.2 @@ -735,20 +730,19 @@ packages: react: 18.2.0 react-dom: 18.2.0_react@18.2.0 react-sortable-hoc: 2.0.0_biqbaboplfbrettd7655fr4n2y - unstated-next: 1.1.0 use-json-comparison: 1.0.6_react@18.2.0 transitivePeerDependencies: - '@types/lodash.merge' - /@ant-design/pro-utils/2.5.6_eyanc6viuzknyw5lsn6lba32mq: - resolution: {integrity: sha512-TthUmuPG2nRaeRTbmAfOSWSVPPPWB5JL9g55kllMhHNwDtSjWA5MDvZT4e6MMOlAI/zTXoQYE+542Y6hMGX+SA==} + /@ant-design/pro-utils/2.5.8_eyanc6viuzknyw5lsn6lba32mq: + resolution: {integrity: sha512-iAiNjKBj8chgDsHIn/d757RFEhRLhBPT4iSH5MI7k+hZTHbEMsjYjNgtR9Du5doIP+ACe62hcuELTr6aXt80nQ==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.4.2_eyanc6viuzknyw5lsn6lba32mq + '@ant-design/pro-provider': 2.4.3_eyanc6viuzknyw5lsn6lba32mq '@babel/runtime': 7.20.13 antd: 4.24.8_biqbaboplfbrettd7655fr4n2y classnames: 2.3.2 @@ -760,17 +754,17 @@ packages: swr: 2.0.3_react@18.2.0 dev: true - /@ant-design/pro-utils/2.5.6_zziuzmw57eovk2ycxuppotpvc4: - resolution: {integrity: sha512-TthUmuPG2nRaeRTbmAfOSWSVPPPWB5JL9g55kllMhHNwDtSjWA5MDvZT4e6MMOlAI/zTXoQYE+542Y6hMGX+SA==} + /@ant-design/pro-utils/2.5.8_xan5c2tkf4stwpqcwacropitz4: + resolution: {integrity: sha512-iAiNjKBj8chgDsHIn/d757RFEhRLhBPT4iSH5MI7k+hZTHbEMsjYjNgtR9Du5doIP+ACe62hcuELTr6aXt80nQ==} peerDependencies: antd: '>=4.23.0' react: '>=16.9.0' react-dom: '>=16.9.0' dependencies: '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-provider': 2.4.2_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-provider': 2.4.3_xan5c2tkf4stwpqcwacropitz4 '@babel/runtime': 7.20.13 - antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva + antd: 5.2.2_jb42yyeu5qxbfieyxjks6malva classnames: 2.3.2 dayjs: 1.11.7 rc-util: 5.27.2_biqbaboplfbrettd7655fr4n2y @@ -804,19 +798,17 @@ packages: resize-observer-polyfill: 1.5.1 throttle-debounce: 5.0.0 - /@ant-design/use-emotion-css/1.0.4_zziuzmw57eovk2ycxuppotpvc4: + /@ant-design/use-emotion-css/1.0.4_xan5c2tkf4stwpqcwacropitz4: resolution: {integrity: sha512-PekXeeHCpSNi6ziV62gy2Yy2MijssiVMaCJbbyOmPbeZJYQmB4FecJwlB+e2WuIbSHQdM3O9pyN4Cx3GJKxJkA==} peerDependencies: antd: '>=5.0.0' react: '>=17.0.0' react-dom: '>=17.0.0' dependencies: - '@emotion/css': 11.10.5 - antd: 5.2.1_jb42yyeu5qxbfieyxjks6malva + '@emotion/css': 11.10.6 + antd: 5.2.2_jb42yyeu5qxbfieyxjks6malva react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - transitivePeerDependencies: - - '@babel/core' dev: false /@antfu/install-pkg/0.1.1: @@ -993,7 +985,7 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-annotate-as-pure': 7.18.6 - regexpu-core: 5.3.0 + regexpu-core: 5.3.1 dev: true /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.20.12: @@ -1074,6 +1066,7 @@ packages: /@babel/helper-plugin-utils/7.20.2: resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.20.12: resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} @@ -1537,15 +1530,6 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-syntax-jsx/7.18.6: - resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/helper-plugin-utils': 7.20.2 - dev: false - /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} engines: {node: '>=6.9.0'} @@ -2572,13 +2556,10 @@ packages: resolution: {integrity: sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ==} engines: {node: '>=10'} - /@emotion/babel-plugin/11.10.5: - resolution: {integrity: sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==} - peerDependencies: - '@babel/core': ^7.0.0 + /@emotion/babel-plugin/11.10.6: + resolution: {integrity: sha512-p2dAqtVrkhSa7xz1u/m9eHYdLi+en8NowrmXeF/dKtJpU8lCWli8RUAati7NcSl0afsBott48pdnANuD0wh9QQ==} dependencies: '@babel/helper-module-imports': 7.18.6 - '@babel/plugin-syntax-jsx': 7.18.6 '@babel/runtime': 7.20.13 '@emotion/hash': 0.9.0 '@emotion/memoize': 0.8.0 @@ -2601,15 +2582,10 @@ packages: stylis: 4.1.3 dev: false - /@emotion/css/11.10.5: - resolution: {integrity: sha512-maJy0wG82hWsiwfJpc3WrYsyVwUbdu+sdIseKUB+/OLjB8zgc3tqkT6eO0Yt0AhIkJwGGnmMY/xmQwEAgQ4JHA==} - peerDependencies: - '@babel/core': ^7.0.0 - peerDependenciesMeta: - '@babel/core': - optional: true + /@emotion/css/11.10.6: + resolution: {integrity: sha512-88Sr+3heKAKpj9PCqq5A1hAmAkoSIvwEq1O2TwDij7fUtsJpdkV4jMTISSTouFeRvsGvXIpuSuDQ4C1YdfNGXw==} dependencies: - '@emotion/babel-plugin': 11.10.5 + '@emotion/babel-plugin': 11.10.6 '@emotion/cache': 11.10.5 '@emotion/serialize': 1.1.1 '@emotion/sheet': 1.2.1 @@ -2665,7 +2641,7 @@ packages: /@esbuild-kit/core-utils/3.1.0: resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} dependencies: - esbuild: 0.17.8 + esbuild: 0.17.9 source-map-support: 0.5.21 dev: true @@ -2694,8 +2670,8 @@ packages: dev: true optional: true - /@esbuild/android-arm/0.17.8: - resolution: {integrity: sha512-0/rb91GYKhrtbeglJXOhAv9RuYimgI8h623TplY2X+vA4EXnk3Zj1fXZreJ0J3OJJu1bwmb0W7g+2cT/d8/l/w==} + /@esbuild/android-arm/0.17.9: + resolution: {integrity: sha512-efHnZVJldh2e18fK40RYzYTTRDzZ0QgL9V/73PSsAH43BauvjVwkqSHPhbcn77H0EQOUM2JPuO/XCg7jcKt94A==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -2712,8 +2688,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64/0.17.8: - resolution: {integrity: sha512-oa/N5j6v1svZQs7EIRPqR8f+Bf8g6HBDjD/xHC02radE/NjKHK7oQmtmLxPs1iVwYyvE+Kolo6lbpfEQ9xnhxQ==} + /@esbuild/android-arm64/0.17.9: + resolution: {integrity: sha512-bqds/6lXsCA7JhHGKIM/R80sy3BAIBR0HWyeas0bW57QVHT3Rz5sf4oUVS4ZsmN+J+8IgNnaIT2PXZ0pnRcLKg==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -2730,8 +2706,8 @@ packages: dev: true optional: true - /@esbuild/android-x64/0.17.8: - resolution: {integrity: sha512-bTliMLqD7pTOoPg4zZkXqCDuzIUguEWLpeqkNfC41ODBHwoUgZ2w5JBeYimv4oP6TDVocoYmEhZrCLQTrH89bg==} + /@esbuild/android-x64/0.17.9: + resolution: {integrity: sha512-pP+MLR/k8BAYZuOqEkjAaQd9/pzbNS52pNFiXgdiCHb/16u6o7s0rPF8vPlVg+1s8ii+M6HrymL4534xYwCQCA==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -2748,8 +2724,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64/0.17.8: - resolution: {integrity: sha512-ghAbV3ia2zybEefXRRm7+lx8J/rnupZT0gp9CaGy/3iolEXkJ6LYRq4IpQVI9zR97ID80KJVoUlo3LSeA/sMAg==} + /@esbuild/darwin-arm64/0.17.9: + resolution: {integrity: sha512-Gdbnu/RCIGHE/zqLHZwujTXnHz0lBQxK9+llrbxm5tO46CMhqiOhUuA5Zt6q2imULNoPJtxmhspHSAQtcx2pkw==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -2766,8 +2742,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64/0.17.8: - resolution: {integrity: sha512-n5WOpyvZ9TIdv2V1K3/iIkkJeKmUpKaCTdun9buhGRWfH//osmUjlv4Z5mmWdPWind/VGcVxTHtLfLCOohsOXw==} + /@esbuild/darwin-x64/0.17.9: + resolution: {integrity: sha512-GEZsUsDjJnCTVWuaq1cJ1Y3oV9GmNj/h4j6jA29VYSip7S7nSSiAo4dQFBJg734QKZZFos8fHc4abJpoN2ebGw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -2784,8 +2760,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64/0.17.8: - resolution: {integrity: sha512-a/SATTaOhPIPFWvHZDoZYgxaZRVHn0/LX1fHLGfZ6C13JqFUZ3K6SMD6/HCtwOQ8HnsNaEeokdiDSFLuizqv5A==} + /@esbuild/freebsd-arm64/0.17.9: + resolution: {integrity: sha512-l3v6bZdpZIG4RpNKObqNqJhDvqQO5JqQlU2S+KyMCbf0xQhYCbTuhu5kKY8hndM1oKhmqq6VfPWhOSf6P3XT/g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -2802,8 +2778,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64/0.17.8: - resolution: {integrity: sha512-xpFJb08dfXr5+rZc4E+ooZmayBW6R3q59daCpKZ/cDU96/kvDM+vkYzNeTJCGd8rtO6fHWMq5Rcv/1cY6p6/0Q==} + /@esbuild/freebsd-x64/0.17.9: + resolution: {integrity: sha512-o/qhS0gbIdS0AjgiT0mbdiRIyNVRD31N81c1H7NNM4p6jVkSvScqo0v9eYJ+30mPhJsL26BwSNiuFJzD/SCyuw==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -2820,8 +2796,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm/0.17.8: - resolution: {integrity: sha512-6Ij8gfuGszcEwZpi5jQIJCVIACLS8Tz2chnEBfYjlmMzVsfqBP1iGmHQPp7JSnZg5xxK9tjCc+pJ2WtAmPRFVA==} + /@esbuild/linux-arm/0.17.9: + resolution: {integrity: sha512-AhSVW1uIbcXssQ1D+Mn0txGgcxU32ikvIxuqkmjLC7dUpcX0JuwkPgdqTOicuBjG06GV4WvXSHcKCBUjN+oBxA==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -2838,8 +2814,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64/0.17.8: - resolution: {integrity: sha512-v3iwDQuDljLTxpsqQDl3fl/yihjPAyOguxuloON9kFHYwopeJEf1BkDXODzYyXEI19gisEsQlG1bM65YqKSIww==} + /@esbuild/linux-arm64/0.17.9: + resolution: {integrity: sha512-o3bvDJn9txfMxrCVJATbL3NeksMT9MGqSN7vTeG9g+387rDzfUiWpF5CN/L0MoI3QTicTydEDOx0PVX8/q+nCA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -2856,8 +2832,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32/0.17.8: - resolution: {integrity: sha512-8svILYKhE5XetuFk/B6raFYIyIqydQi+GngEXJgdPdI7OMKUbSd7uzR02wSY4kb53xBrClLkhH4Xs8P61Q2BaA==} + /@esbuild/linux-ia32/0.17.9: + resolution: {integrity: sha512-fh3Eb+jMHDJUd08vEYL8swRT7zJo4lhrcG8NYuosHVeT49XQ0Bn9xLMtgtYXjCw5aB11aphAUwnzawvDqJCqTQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -2883,8 +2859,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.17.8: - resolution: {integrity: sha512-B6FyMeRJeV0NpyEOYlm5qtQfxbdlgmiGdD+QsipzKfFky0K5HW5Td6dyK3L3ypu1eY4kOmo7wW0o94SBqlqBSA==} + /@esbuild/linux-loong64/0.17.9: + resolution: {integrity: sha512-+DvqOzQLkXonfQTHo4PTlbiTCfz0Rx6oYn3fQrUlPX2PffGOth4HjuP4jHeFbw0YFfOErhjM6n481nB4VTmmFQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -2901,8 +2877,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el/0.17.8: - resolution: {integrity: sha512-CCb67RKahNobjm/eeEqeD/oJfJlrWyw29fgiyB6vcgyq97YAf3gCOuP6qMShYSPXgnlZe/i4a8WFHBw6N8bYAA==} + /@esbuild/linux-mips64el/0.17.9: + resolution: {integrity: sha512-9O0HhtxRzx9OOqavv7kIONncJXxhzrbDFmOD+cJ/3UUsy8dn52J6X2xCeUOxbmEOXYP2K+uha7b1AXG/URhF5Q==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -2919,8 +2895,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64/0.17.8: - resolution: {integrity: sha512-bytLJOi55y55+mGSdgwZ5qBm0K9WOCh0rx+vavVPx+gqLLhxtSFU0XbeYy/dsAAD6xECGEv4IQeFILaSS2auXw==} + /@esbuild/linux-ppc64/0.17.9: + resolution: {integrity: sha512-tOwSTDZ0X5rcYK3OyfJVf4fFlvYLv3HGCOJxdE9gZVeRkXXd6O9CJ/A4Li1Tt9JQs9kJcFWCXxCwhY70h+t9iw==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -2937,8 +2913,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64/0.17.8: - resolution: {integrity: sha512-2YpRyQJmKVBEHSBLa8kBAtbhucaclb6ex4wchfY0Tj3Kg39kpjeJ9vhRU7x4mUpq8ISLXRXH1L0dBYjAeqzZAw==} + /@esbuild/linux-riscv64/0.17.9: + resolution: {integrity: sha512-mmirCaZItLSPw7loFPHvdDXO0A2I+cYOQ96eerbWEjqi9V4u+vvYSoUR3Or7HLe1JUZS+T0YWN+jPUASc1hqzg==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -2955,8 +2931,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x/0.17.8: - resolution: {integrity: sha512-QgbNY/V3IFXvNf11SS6exkpVcX0LJcob+0RWCgV9OiDAmVElnxciHIisoSix9uzYzScPmS6dJFbZULdSAEkQVw==} + /@esbuild/linux-s390x/0.17.9: + resolution: {integrity: sha512-zuL5TDhxstsvxYVZ1McsnfNrO6vlpZmxiNShJmYuYPt8COBJ/4iRkwHZ5Rbf1OkEVazB3/WASNtopv1/Gq19IQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -2973,8 +2949,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64/0.17.8: - resolution: {integrity: sha512-mM/9S0SbAFDBc4OPoyP6SEOo5324LpUxdpeIUUSrSTOfhHU9hEfqRngmKgqILqwx/0DVJBzeNW7HmLEWp9vcOA==} + /@esbuild/linux-x64/0.17.9: + resolution: {integrity: sha512-jVa5NKqwBmq57aNDZOSnNuRTV5GrI93HdjTlyQyRrOs7OSEQq2r9NyaGd6KmzuxLz19XTanFt4WeGoLnjFT1Ug==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -2991,8 +2967,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64/0.17.8: - resolution: {integrity: sha512-eKUYcWaWTaYr9zbj8GertdVtlt1DTS1gNBWov+iQfWuWyuu59YN6gSEJvFzC5ESJ4kMcKR0uqWThKUn5o8We6Q==} + /@esbuild/netbsd-x64/0.17.9: + resolution: {integrity: sha512-BRoQyPJ7aiQ7USFCtGmmrYTbRDa9muZAwoYchfqspd+ef8n2kKcXGQ0K2OqcLEqNFOwhLpAY4y4YAl22FbP+BA==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -3009,8 +2985,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64/0.17.8: - resolution: {integrity: sha512-Vc9J4dXOboDyMXKD0eCeW0SIeEzr8K9oTHJU+Ci1mZc5njPfhKAqkRt3B/fUNU7dP+mRyralPu8QUkiaQn7iIg==} + /@esbuild/openbsd-x64/0.17.9: + resolution: {integrity: sha512-gDCVw9M2k8tyA9GokQEeh+L2gl0EZeGIIj5WB5H97Mb0ADq5Ea8vWyQs2iY1Q/tebcuP8cUoOZWxkCsmlyl1NA==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -3027,8 +3003,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64/0.17.8: - resolution: {integrity: sha512-0xvOTNuPXI7ft1LYUgiaXtpCEjp90RuBBYovdd2lqAFxje4sEucurg30M1WIm03+3jxByd3mfo+VUmPtRSVuOw==} + /@esbuild/sunos-x64/0.17.9: + resolution: {integrity: sha512-f89/xt0Hzp7POTDJYSJvotyFXatxXBGXJyFFTQGJW+NTYhFHaMcrrb41OB3L8sfzYi3PSlM3pZnwlEk1QiBX2g==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -3045,8 +3021,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64/0.17.8: - resolution: {integrity: sha512-G0JQwUI5WdEFEnYNKzklxtBheCPkuDdu1YrtRrjuQv30WsYbkkoixKxLLv8qhJmNI+ATEWquZe/N0d0rpr55Mg==} + /@esbuild/win32-arm64/0.17.9: + resolution: {integrity: sha512-jrU/SBHXc3NPS5mPgYeL8pgIrBTwdrnaoLtygkQtuPzz0oBjsTyxV46tZoOctv4Q1Jq06+4zsJWkTzVaoik8FQ==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -3063,8 +3039,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32/0.17.8: - resolution: {integrity: sha512-Fqy63515xl20OHGFykjJsMnoIWS+38fqfg88ClvPXyDbLtgXal2DTlhb1TfTX34qWi3u4I7Cq563QcHpqgLx8w==} + /@esbuild/win32-ia32/0.17.9: + resolution: {integrity: sha512-/oVEu7DurNFM0E6qA18R8xkbYU6xilaTnqG65rqm4XJo8ONuqTzLnj/93bQps7RJIxPI+yKPl0Zx2KifvWUa5A==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -3081,8 +3057,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64/0.17.8: - resolution: {integrity: sha512-1iuezdyDNngPnz8rLRDO2C/ZZ/emJLb72OsZeqQ6gL6Avko/XCXZw+NuxBSNhBAP13Hie418V7VMt9et1FMvpg==} + /@esbuild/win32-x64/0.17.9: + resolution: {integrity: sha512-PLKuXKwlPljFrzzsUO6hHNWcYeE4a8FOX/6AJ7U7PajgKqtBGw2mGYxsfJHGb+UdfgdOapIOsYPgzMTG+SGDrg==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -3261,8 +3237,8 @@ packages: resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} dev: true - /@iconify/utils/2.0.9: - resolution: {integrity: sha512-ropNqaeamoxZvXxvaTJXrI0MrqdWdDVIs/mW7/sEQbNi0aXYUGL2iuLs1da3QR163gyG63kiyTsqw2oQYamw3Q==} + /@iconify/utils/2.1.1: + resolution: {integrity: sha512-H8xz74JDzDw8f0qLxwIaxFMnFkbXTZNWEufOk3WxaLFHV4h0A2FjIDgNk5LzC0am4jssnjdeJJdRs3UFu3582Q==} dependencies: '@antfu/install-pkg': 0.1.1 '@antfu/utils': 0.7.2 @@ -3295,7 +3271,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 chalk: 4.1.2 jest-message-util: 29.4.3 jest-util: 29.4.3 @@ -3316,14 +3292,14 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.8.0 exit: 0.1.2 graceful-fs: 4.2.10 jest-changed-files: 29.4.3 - jest-config: 29.4.3_ucpl6toqp57nqodtp3vxxi6g5a + jest-config: 29.4.3_lszm27wzplody5hzcr5ax274dy jest-haste-map: 29.4.3 jest-message-util: 29.4.3 jest-regex-util: 29.4.3 @@ -3350,7 +3326,7 @@ packages: dependencies: '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 jest-mock: 29.4.3 dev: true @@ -3377,7 +3353,7 @@ packages: dependencies: '@jest/types': 29.4.3 '@sinonjs/fake-timers': 10.0.2 - '@types/node': 18.13.0 + '@types/node': 18.14.0 jest-message-util: 29.4.3 jest-mock: 29.4.3 jest-util: 29.4.3 @@ -3410,7 +3386,7 @@ packages: '@jest/transform': 29.4.3 '@jest/types': 29.4.3 '@jridgewell/trace-mapping': 0.3.17 - '@types/node': 18.13.0 + '@types/node': 18.14.0 chalk: 4.1.2 collect-v8-coverage: 1.0.1 exit: 0.1.2 @@ -3436,7 +3412,7 @@ packages: resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@sinclair/typebox': 0.25.22 + '@sinclair/typebox': 0.25.23 dev: true /@jest/source-map/29.4.3: @@ -3497,7 +3473,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.13.0 + '@types/node': 18.14.0 '@types/yargs': 16.0.5 chalk: 4.1.2 dev: true @@ -3509,7 +3485,7 @@ packages: '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.13.0 + '@types/node': 18.14.0 '@types/yargs': 17.0.22 chalk: 4.1.2 dev: true @@ -3726,8 +3702,8 @@ packages: engines: {node: '>=14'} dev: true - /@sinclair/typebox/0.25.22: - resolution: {integrity: sha512-6U6r2L7rnM7EG8G1tWzIjdB3QlsHF4slgcqXNN/SF0xJOAr0nDmT2GedlkyO3mrv8mDTJ24UuOMWR3diBrCvQQ==} + /@sinclair/typebox/0.25.23: + resolution: {integrity: sha512-VEB8ygeP42CFLWyAJhN5OklpxUliqdNEUcXb4xZ/CINqtYGTjL5ukluKdKzQ0iWdUxyQ7B0539PAUhHKrCNWSQ==} dev: true /@sinonjs/commons/2.0.0: @@ -3927,27 +3903,27 @@ packages: remove-accents: 0.4.2 dev: true - /@tanstack/query-core/4.24.6: - resolution: {integrity: sha512-Tfru6YTDTCpX7dKVwHp/sosw/dNjEdzrncduUjIkQxn7n7u+74HT2ZrGtwwrU6Orws4x7zp3FKRqBPWVVhpx9w==} + /@tanstack/query-core/4.24.9: + resolution: {integrity: sha512-pZQ2NpdaHzx8gPPkAPh06d6zRkjfonUzILSYBXrdHDapP2eaBbGsx5L4/dMF+fyAglFzQZdDDzZgAykbM20QVw==} dev: true - /@tanstack/react-query-devtools/4.24.6_r32zdxeb7iubg3qfkymfterewe: - resolution: {integrity: sha512-d8CN4ZTtLkdCNi9x4Hogma0fdhlv7ckknv/RLuV4nbUciUoZEvhg1cI0+vp/1aY4W3jq9vH0BD/eUQKecgY15Q==} + /@tanstack/react-query-devtools/4.24.9_bzphmdwvicyhtx5eo3azinrh54: + resolution: {integrity: sha512-NPsVf3pLMjH/XNTT5iP1q6isEBNE4kWF/IBSbxNUt0tDWK1nS1qgWr9ySTXwimsAHOWMjHkFuUF8VBRmz+axKg==} peerDependencies: - '@tanstack/react-query': 4.24.6 + '@tanstack/react-query': 4.24.9 react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: '@tanstack/match-sorter-utils': 8.7.6 - '@tanstack/react-query': 4.24.6_biqbaboplfbrettd7655fr4n2y + '@tanstack/react-query': 4.24.9_biqbaboplfbrettd7655fr4n2y react: 18.2.0 react-dom: 18.2.0_react@18.2.0 superjson: 1.12.2 use-sync-external-store: 1.2.0_react@18.2.0 dev: true - /@tanstack/react-query/4.24.6_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-pbJUVZCS4pcXS0kZiY+mVJ01ude0GrH5OXT2g9whcqSveRG/YVup/XdA9NdRpSMGkP2HxDRxxRNsTXkniWeIIA==} + /@tanstack/react-query/4.24.9_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-6WLwUT9mrngIinRtcZjrWOUENOuLbWvQpKmU6DZCo2iPQVA+qvv3Ji90Amme4AkUyWQ8ZSSRTnAFq8V2tj2ACg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -3958,7 +3934,7 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.24.6 + '@tanstack/query-core': 4.24.9 react: 18.2.0 react-dom: 18.2.0_react@18.2.0 use-sync-external-store: 1.2.0_react@18.2.0 @@ -4055,7 +4031,7 @@ packages: resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} dependencies: '@types/connect': 3.4.35 - '@types/node': 18.13.0 + '@types/node': 18.14.0 dev: true /@types/classnames/2.3.1: @@ -4068,7 +4044,7 @@ packages: /@types/connect/3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.14.0 dev: true /@types/eslint/7.29.0: @@ -4085,7 +4061,7 @@ packages: /@types/express-serve-static-core/4.17.33: resolution: {integrity: sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.14.0 '@types/qs': 6.9.7 '@types/range-parser': 1.2.4 dev: true @@ -4103,13 +4079,13 @@ packages: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 18.13.0 + '@types/node': 18.14.0 dev: true /@types/graceful-fs/4.1.6: resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.14.0 dev: true /@types/hapi__joi/17.1.9: @@ -4165,7 +4141,7 @@ packages: /@types/jsdom/20.0.1: resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.14.0 '@types/tough-cookie': 4.0.2 parse5: 7.1.2 dev: true @@ -4199,8 +4175,8 @@ packages: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} dev: true - /@types/node/18.13.0: - resolution: {integrity: sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==} + /@types/node/18.14.0: + resolution: {integrity: sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==} dev: true /@types/normalize-package-data/2.4.1: @@ -4267,7 +4243,7 @@ packages: resolution: {integrity: sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==} dependencies: '@types/mime': 3.0.1 - '@types/node': 18.13.0 + '@types/node': 18.14.0 dev: true /@types/stack-utils/2.0.1: @@ -4748,21 +4724,21 @@ packages: eslint-visitor-keys: 3.3.0 dev: true - /@umijs/ast/4.0.51: - resolution: {integrity: sha512-UY/d4PyxDX5RWueyHHTWzTlTS9Y5O3ao1pfrQyFux5oZ3UYG+6AT+4oNWhhkEfCnVbbMShFCfUQX7XbCMoGjBQ==} + /@umijs/ast/4.0.52: + resolution: {integrity: sha512-mncFtsKuwDRRN2NW38+0X/I/x2BLwBZj9UJY03R4WQQ4JMosvuaoc/IVyl8p05Mdhm9jGhnx5lGz23SyVGhk9g==} dependencies: - '@umijs/bundler-utils': 4.0.51 + '@umijs/bundler-utils': 4.0.52 transitivePeerDependencies: - supports-color dev: true - /@umijs/babel-preset-umi/4.0.51: - resolution: {integrity: sha512-jQpTqJln0dAidP9Adyt+8dUZGxlWs8ZfyjhchNJdoUSRAvPqPEdn2usGYvwR9BUQUSdj2L0Z4vX0bLoNF9H1CA==} + /@umijs/babel-preset-umi/4.0.52: + resolution: {integrity: sha512-CADYO9Ld42XE3+upsmO81OH+kxAkmj+Ler9S7Xi+kRc6blY2TLO0NDcipZ59Q6qZoRkZbn3O79ogoZ+cUNYIRg==} dependencies: '@babel/runtime': 7.20.7 '@bloomberg/record-tuple-polyfill': 0.0.4 - '@umijs/bundler-utils': 4.0.51 - '@umijs/utils': 4.0.51 + '@umijs/bundler-utils': 4.0.52 + '@umijs/utils': 4.0.52 babel-plugin-styled-components: 2.0.7 core-js: 3.27.1 transitivePeerDependencies: @@ -4770,12 +4746,12 @@ packages: - supports-color dev: true - /@umijs/bundler-esbuild/4.0.51: - resolution: {integrity: sha512-sDTFW/am2f2lbCDao++3l58IAeMM3sFnxl+FzLRM+HxRxgqKn9NBJf7EtOn5t73/h9CMxoeiVTy+NsyBr5i6nA==} + /@umijs/bundler-esbuild/4.0.52: + resolution: {integrity: sha512-GN7fSfvfCLwvNDEyQa657PQTWMwIQ+bCwRyTS+Ga+5Pq7Eg/DQBUdmRfzKQiuOyQTLJzRbAlckcuwJ1uglaaqg==} hasBin: true dependencies: - '@umijs/bundler-utils': 4.0.51 - '@umijs/utils': 4.0.51 + '@umijs/bundler-utils': 4.0.52 + '@umijs/utils': 4.0.52 enhanced-resolve: 5.9.3 postcss: 8.4.21 postcss-flexbugs-fixes: 5.0.2_postcss@8.4.21 @@ -4796,10 +4772,10 @@ packages: - supports-color dev: true - /@umijs/bundler-utils/4.0.51: - resolution: {integrity: sha512-XuwhCMWX1OxANN96ynabeBj+V1F/XTZ1jHGLUu16t4Pjab7eirrQA/L7RmEMm2SfBtKtzeeHY60DBv9RJVE3Xw==} + /@umijs/bundler-utils/4.0.52: + resolution: {integrity: sha512-dgs1+5t8+MDecTx0OP+uJRTMRjGQz4IPsGg/uB33M7xWqvd0y/9fMx0SYCky3FjGcaimwzey8w5chykfM2NEUw==} dependencies: - '@umijs/utils': 4.0.51 + '@umijs/utils': 4.0.52 esbuild: 0.16.17 regenerate: 1.4.2 regenerate-unicode-properties: 10.1.0 @@ -4808,18 +4784,18 @@ packages: - supports-color dev: true - /@umijs/bundler-vite/4.0.51: - resolution: {integrity: sha512-Er6gP+1S8Jnk6ZyK1mwGDQbA14LAiMGoK8jMsjknqPkCzdy1Y3/H4JdFQhHBERz/Fq0DA/jcxEnVfwbtGCFy2Q==} + /@umijs/bundler-vite/4.0.52: + resolution: {integrity: sha512-8MBptcjIeQ1AENPUkZGHFJch8n1RDnjH6LXIxisGEjT+IpV6kbmJvTjVf0SgppXAz7vC3ILoWy0BebsnysZsKQ==} hasBin: true dependencies: '@svgr/core': 6.2.1 - '@umijs/bundler-utils': 4.0.51 - '@umijs/utils': 4.0.51 - '@vitejs/plugin-react': 2.2.0_vite@3.2.5 + '@umijs/bundler-utils': 4.0.52 + '@umijs/utils': 4.0.52 + '@vitejs/plugin-react': 3.1.0_vite@4.1.1 less: 4.1.3 postcss-preset-env: 7.5.0 rollup-plugin-visualizer: 5.9.0 - vite: 3.2.5_less@4.1.3 + vite: 4.1.1_less@4.1.3 transitivePeerDependencies: - '@types/node' - postcss @@ -4831,8 +4807,8 @@ packages: - terser dev: true - /@umijs/bundler-webpack/4.0.51_typescript@4.9.5: - resolution: {integrity: sha512-NwoKhwz/Pe63UE9yss+kgsTVhHfiQZ/uIsVFYRkrZLU/6EadrO1Xjprvoh4ZAA9sNnJguw3Il3q1l8rzuscFew==} + /@umijs/bundler-webpack/4.0.52_typescript@4.9.5: + resolution: {integrity: sha512-etJH+RhMJ2HIpl/RakNScpEDi59wwsTyV6OL2YeMzGrKTus4ef1FUwepByhSWHyCmWPP2qpNMvP6IaRskS6JAg==} hasBin: true dependencies: '@pmmmwh/react-refresh-webpack-plugin': 0.5.7_react-refresh@0.14.0 @@ -4840,11 +4816,11 @@ packages: '@svgr/plugin-jsx': 6.5.1_@svgr+core@6.2.1 '@svgr/plugin-svgo': 6.5.1_@svgr+core@6.2.1 '@types/hapi__joi': 17.1.9 - '@umijs/babel-preset-umi': 4.0.51 - '@umijs/bundler-utils': 4.0.51 + '@umijs/babel-preset-umi': 4.0.52 + '@umijs/bundler-utils': 4.0.52 '@umijs/case-sensitive-paths-webpack-plugin': 1.0.1 - '@umijs/mfsu': 4.0.51 - '@umijs/utils': 4.0.51 + '@umijs/mfsu': 4.0.52 + '@umijs/utils': 4.0.52 cors: 2.8.5 css-loader: 6.7.1 es5-imcompatible-versions: 0.1.77 @@ -4874,11 +4850,11 @@ packages: resolution: {integrity: sha512-kDKJ8yTarxwxGJDInG33hOpaQRZ//XpNuuznQ/1Mscypw6kappzFmrBr2dOYave++K7JHouoANF354UpbEQw0Q==} dev: true - /@umijs/core/4.0.51: - resolution: {integrity: sha512-Y+CvHNsynbWsE/Y+E7eq6Q3pfUGRnj75J5edU9LPmk/9V4e7MLF79IxMzS1xC514zr7eZrLRRsXp2QFPJCCX7Q==} + /@umijs/core/4.0.52: + resolution: {integrity: sha512-qsVaCkyDflu3Wxy0xMt9K1xvXXPMswev+eJqvoIgNI5lx3mDoNmCK3cGS2Edm9Qp2sL3YM3aG/q3DR6qOnPtoQ==} dependencies: - '@umijs/bundler-utils': 4.0.51 - '@umijs/utils': 4.0.51 + '@umijs/bundler-utils': 4.0.52 + '@umijs/utils': 4.0.52 transitivePeerDependencies: - supports-color dev: true @@ -4934,15 +4910,15 @@ packages: query-string: 6.14.1 dev: true - /@umijs/lint/4.0.51_jrzwjw3eqcxkrr4jwa5zddmkz4: - resolution: {integrity: sha512-hWh9cvCYKJUw1RTZtLzOx2dqcCb+AIKroyoeoml6idA8e9g4NgghUT6u5qCtC8A+v82hq9BsT7xLyKs3/H/hTg==} + /@umijs/lint/4.0.52_jrzwjw3eqcxkrr4jwa5zddmkz4: + resolution: {integrity: sha512-Zk298O4gAtQ3Puz99u3G4e6e8zk0p1CPkAzRIgkuSg8U2+R3M69bTzAyq4AC5U0WqHuNtIUyQiSUoMmaBD05VQ==} dependencies: '@babel/core': 7.20.12 '@babel/eslint-parser': 7.19.1_ydmbqfus77qykiqxhcwsorsqbq '@stylelint/postcss-css-in-js': 0.38.0_64375vj2stjdn6gyt55zwvoboa '@typescript-eslint/eslint-plugin': 5.48.1_bzepuo66bcyj4mepwnxofjvdli '@typescript-eslint/parser': 5.48.1_7kw3g6rralp5ps6mg3uyzz6azm - '@umijs/babel-preset-umi': 4.0.51 + '@umijs/babel-preset-umi': 4.0.52 eslint-plugin-jest: 26.1.5_slhnd4adxg6hncizzqnqt5iyja eslint-plugin-react: 7.29.4_eslint@8.34.0 eslint-plugin-react-hooks: 4.5.0_eslint@8.34.0 @@ -4963,15 +4939,15 @@ packages: - typescript dev: true - /@umijs/lint/4.0.51_uqnovjyowm2y6c3zpb3q5ibfoy: - resolution: {integrity: sha512-hWh9cvCYKJUw1RTZtLzOx2dqcCb+AIKroyoeoml6idA8e9g4NgghUT6u5qCtC8A+v82hq9BsT7xLyKs3/H/hTg==} + /@umijs/lint/4.0.52_uqnovjyowm2y6c3zpb3q5ibfoy: + resolution: {integrity: sha512-Zk298O4gAtQ3Puz99u3G4e6e8zk0p1CPkAzRIgkuSg8U2+R3M69bTzAyq4AC5U0WqHuNtIUyQiSUoMmaBD05VQ==} dependencies: '@babel/core': 7.20.12 '@babel/eslint-parser': 7.19.1_ucmnolur3r335ullwiyt3zl3pi '@stylelint/postcss-css-in-js': 0.38.0_64375vj2stjdn6gyt55zwvoboa '@typescript-eslint/eslint-plugin': 5.48.1_bpcieom4krd4yjmz5o6lu67pxm '@typescript-eslint/parser': 5.48.1_ifw3q4r6iq3gw7cspzs2siycvu - '@umijs/babel-preset-umi': 4.0.51 + '@umijs/babel-preset-umi': 4.0.52 eslint-plugin-jest: 26.1.5_miw4sfjr4mddcelagl22ykbtrm eslint-plugin-react: 7.29.4_eslint@8.31.0 eslint-plugin-react-hooks: 4.5.0_eslint@8.31.0 @@ -5007,16 +4983,16 @@ packages: - supports-color dev: true - /@umijs/max/4.0.51_sk62eavrhdxpjt2gdk56aqurvy: - resolution: {integrity: sha512-ivDkpKsS+a/bMI2edNXoSah/dLVixV+Dp4N47mKPOjn5JpO79byqrfRawWEUnNXlt+FshoNHLyoHFIlPP5E4GQ==} + /@umijs/max/4.0.52_sk62eavrhdxpjt2gdk56aqurvy: + resolution: {integrity: sha512-uQbAjxSa4o1s0EB9kYtW0WqY8PwyuhlWj/ejK4SCk8sVomRIdFuEXMcZtZekTdR2pWp0Za62Bmn+j/MCAB0YaA==} hasBin: true dependencies: - '@umijs/lint': 4.0.51_uqnovjyowm2y6c3zpb3q5ibfoy - '@umijs/plugins': 4.0.51_g6h54c4lfmdo55asb7z5z7dyhu + '@umijs/lint': 4.0.52_uqnovjyowm2y6c3zpb3q5ibfoy + '@umijs/plugins': 4.0.52_g6h54c4lfmdo55asb7z5z7dyhu antd: 4.24.8_biqbaboplfbrettd7655fr4n2y eslint: 8.31.0 stylelint: 14.8.2 - umi: 4.0.51_5sxtzqf4pm6epycwyxpxfttr6q + umi: 4.0.52_5sxtzqf4pm6epycwyxpxfttr6q transitivePeerDependencies: - '@babel/core' - '@types/lodash.merge' @@ -5058,12 +5034,12 @@ packages: - webpack-plugin-serve dev: true - /@umijs/mfsu/4.0.51: - resolution: {integrity: sha512-ipv3X5wdq3komrcJgY1FLqs6PluoL+IMN+JCfWxRq65qvzTCqWB0Ho6F58UUnTkk+8WmQyULrCGgKvfO0IoJEA==} + /@umijs/mfsu/4.0.52: + resolution: {integrity: sha512-WQhkOkeLP5sy+7C4JiSaY4ZZZqf47seBNoD5uIXCtpePrfB7QIIPZaksjIB0XeYXi9DqmGhG1QoCbU1+q0GuCA==} dependencies: - '@umijs/bundler-esbuild': 4.0.51 - '@umijs/bundler-utils': 4.0.51 - '@umijs/utils': 4.0.51 + '@umijs/bundler-esbuild': 4.0.52 + '@umijs/bundler-utils': 4.0.52 + '@umijs/utils': 4.0.52 enhanced-resolve: 5.9.3 is-equal: 1.6.4 transitivePeerDependencies: @@ -5097,19 +5073,19 @@ packages: - supports-color dev: true - /@umijs/plugin-run/4.0.51: - resolution: {integrity: sha512-VZ5Mweo9xsXpeYvtCTvsVQQmldkkheCS5I+QW9RQmpIv3R1QF3dB8hw4ym82v89ym/USS5XvkmeuebId1SD3BA==} + /@umijs/plugin-run/4.0.52: + resolution: {integrity: sha512-buaNlykpwUz3dRGOv5fUx8hmrb2mZIU6GJqD55BNp5NDStxrcqraN7JgS5SktxRkIvkvU3VtPhY2KN2nswEC4Q==} dependencies: tsx: 3.12.3 dev: true - /@umijs/plugins/4.0.42_j6z4hab2i3bwnwb4dzmobxs5ea: + /@umijs/plugins/4.0.42_d27qsjlvwifosjanw3qieypnj4: resolution: {integrity: sha512-H9KXiGkkoAUIi4Cwx7d3g33COLdMN4+fbO/PIl52xDb18Gafi4hylHnEjPnttNUz8YhW5S+4BMS8UzisqIhjbw==} dependencies: '@ahooksjs/use-request': 2.8.15_react@18.2.0 '@ant-design/antd-theme-variable': 1.0.0 '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-components': 2.3.54_zziuzmw57eovk2ycxuppotpvc4 + '@ant-design/pro-components': 2.3.57_xan5c2tkf4stwpqcwacropitz4 '@umijs/bundler-utils': 4.0.42 '@umijs/valtio': 1.0.3_react@18.2.0 antd-dayjs-webpack-plugin: 1.0.6_dayjs@1.11.7 @@ -5124,7 +5100,7 @@ packages: intl: 1.2.5 lodash: 4.17.21 moment: 2.29.4 - qiankun: 2.9.2 + qiankun: 2.9.3 react-intl: 3.12.1_react@18.2.0 react-redux: 8.0.5_ctrls2ti7t7iutxbwkm5ipogyy redux: 4.2.1 @@ -5145,16 +5121,16 @@ packages: - supports-color dev: true - /@umijs/plugins/4.0.51_g6h54c4lfmdo55asb7z5z7dyhu: - resolution: {integrity: sha512-IIUYvSEzA89gVWIo3hB79OLDuFYswsL6M6tIOWjQIiQHRJG5fA4DXF5LEdAEgEX/1BnrzHZEkhRIF2Fmar/lnw==} + /@umijs/plugins/4.0.52_d27qsjlvwifosjanw3qieypnj4: + resolution: {integrity: sha512-I2OO406cVZ+KLv5GM5ak/wq9FQinM2j9WEh0AwqED42uLXCyyjpJpv7VFEHCqjFQ0NhMsW1IbRtkhusYXzcatg==} dependencies: '@ahooksjs/use-request': 2.8.15_react@18.2.0 '@ant-design/antd-theme-variable': 1.0.0 '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-components': 2.3.54_eyanc6viuzknyw5lsn6lba32mq - '@tanstack/react-query': 4.24.6_biqbaboplfbrettd7655fr4n2y - '@tanstack/react-query-devtools': 4.24.6_r32zdxeb7iubg3qfkymfterewe - '@umijs/bundler-utils': 4.0.51 + '@ant-design/pro-components': 2.3.57_xan5c2tkf4stwpqcwacropitz4 + '@tanstack/react-query': 4.24.9_biqbaboplfbrettd7655fr4n2y + '@tanstack/react-query-devtools': 4.24.9_bzphmdwvicyhtx5eo3azinrh54 + '@umijs/bundler-utils': 4.0.52 '@umijs/valtio': 1.0.3_react@18.2.0 antd-dayjs-webpack-plugin: 1.0.6_dayjs@1.11.7 axios: 0.27.2 @@ -5168,7 +5144,7 @@ packages: intl: 1.2.5 lodash: 4.17.21 moment: 2.29.4 - qiankun: 2.9.2 + qiankun: 2.9.3 react-intl: 3.12.1_react@18.2.0 react-redux: 8.0.5_ctrls2ti7t7iutxbwkm5ipogyy redux: 4.2.1 @@ -5190,16 +5166,16 @@ packages: - supports-color dev: true - /@umijs/plugins/4.0.51_j6z4hab2i3bwnwb4dzmobxs5ea: - resolution: {integrity: sha512-IIUYvSEzA89gVWIo3hB79OLDuFYswsL6M6tIOWjQIiQHRJG5fA4DXF5LEdAEgEX/1BnrzHZEkhRIF2Fmar/lnw==} + /@umijs/plugins/4.0.52_g6h54c4lfmdo55asb7z5z7dyhu: + resolution: {integrity: sha512-I2OO406cVZ+KLv5GM5ak/wq9FQinM2j9WEh0AwqED42uLXCyyjpJpv7VFEHCqjFQ0NhMsW1IbRtkhusYXzcatg==} dependencies: '@ahooksjs/use-request': 2.8.15_react@18.2.0 '@ant-design/antd-theme-variable': 1.0.0 '@ant-design/icons': 4.8.0_biqbaboplfbrettd7655fr4n2y - '@ant-design/pro-components': 2.3.54_zziuzmw57eovk2ycxuppotpvc4 - '@tanstack/react-query': 4.24.6_biqbaboplfbrettd7655fr4n2y - '@tanstack/react-query-devtools': 4.24.6_r32zdxeb7iubg3qfkymfterewe - '@umijs/bundler-utils': 4.0.51 + '@ant-design/pro-components': 2.3.57_eyanc6viuzknyw5lsn6lba32mq + '@tanstack/react-query': 4.24.9_biqbaboplfbrettd7655fr4n2y + '@tanstack/react-query-devtools': 4.24.9_bzphmdwvicyhtx5eo3azinrh54 + '@umijs/bundler-utils': 4.0.52 '@umijs/valtio': 1.0.3_react@18.2.0 antd-dayjs-webpack-plugin: 1.0.6_dayjs@1.11.7 axios: 0.27.2 @@ -5213,7 +5189,7 @@ packages: intl: 1.2.5 lodash: 4.17.21 moment: 2.29.4 - qiankun: 2.9.2 + qiankun: 2.9.3 react-intl: 3.12.1_react@18.2.0 react-redux: 8.0.5_ctrls2ti7t7iutxbwkm5ipogyy redux: 4.2.1 @@ -5235,24 +5211,24 @@ packages: - supports-color dev: true - /@umijs/preset-umi/4.0.51_c6mc5dj2lvpczaqlkcypbolpey: - resolution: {integrity: sha512-1ib+2k4KzpWHbn2RALMHNpODlSO/INAnLzX+6cZGI+6DCZsz2fIisnAULaKMDlrz8+j+5ANUoAJshRx1hjr48g==} + /@umijs/preset-umi/4.0.52_c6mc5dj2lvpczaqlkcypbolpey: + resolution: {integrity: sha512-0VGI9Yom8V9KcIcrt0DCLxu4gCv+d5ewTe2s+KwTzSl10a59aToDDg86FOOLn60kSU1AOb1iILmd583ojv3qpg==} dependencies: - '@iconify/utils': 2.0.9 + '@iconify/utils': 2.1.1 '@svgr/core': 6.2.1 - '@umijs/ast': 4.0.51 - '@umijs/babel-preset-umi': 4.0.51 - '@umijs/bundler-utils': 4.0.51 - '@umijs/bundler-vite': 4.0.51 - '@umijs/bundler-webpack': 4.0.51_typescript@4.9.5 - '@umijs/core': 4.0.51 + '@umijs/ast': 4.0.52 + '@umijs/babel-preset-umi': 4.0.52 + '@umijs/bundler-utils': 4.0.52 + '@umijs/bundler-vite': 4.0.52 + '@umijs/bundler-webpack': 4.0.52_typescript@4.9.5 + '@umijs/core': 4.0.52 '@umijs/did-you-know': 1.0.3 '@umijs/history': 5.3.1 - '@umijs/mfsu': 4.0.51 - '@umijs/plugin-run': 4.0.51 - '@umijs/renderer-react': 4.0.51_ef5jwxihqo6n7gxfmzogljlgcm - '@umijs/server': 4.0.51 - '@umijs/utils': 4.0.51 + '@umijs/mfsu': 4.0.52 + '@umijs/plugin-run': 4.0.52 + '@umijs/renderer-react': 4.0.52_ef5jwxihqo6n7gxfmzogljlgcm + '@umijs/server': 4.0.52 + '@umijs/utils': 4.0.52 babel-plugin-dynamic-import-node: 2.3.3 click-to-react-component: 1.0.8_geqtkvvluj2en6xdskblg4z7uq core-js: 3.27.1 @@ -5290,8 +5266,8 @@ packages: - webpack-plugin-serve dev: true - /@umijs/renderer-react/4.0.51_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-QVqr2WD+rRS903KndVVDJOfSjjs0YG2MTGpmW4YYSYd9kTEGNpzEzS8lbKZ0BXmweXT7WX2Jy6qG3u68kabiNQ==} + /@umijs/renderer-react/4.0.52_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-wFITgCXwOrROk/b4DbuFUJPb+yVr15sXPKqwjlltj5ltzpAnBiPH0sQIKtJeRffIEAYXCZ/L1ESRsfvtlbrGLw==} peerDependencies: react: '>=16.8' react-dom: '>=16.8' @@ -5305,8 +5281,8 @@ packages: react-router-dom: 6.3.0_biqbaboplfbrettd7655fr4n2y dev: true - /@umijs/renderer-react/4.0.51_ef5jwxihqo6n7gxfmzogljlgcm: - resolution: {integrity: sha512-QVqr2WD+rRS903KndVVDJOfSjjs0YG2MTGpmW4YYSYd9kTEGNpzEzS8lbKZ0BXmweXT7WX2Jy6qG3u68kabiNQ==} + /@umijs/renderer-react/4.0.52_ef5jwxihqo6n7gxfmzogljlgcm: + resolution: {integrity: sha512-wFITgCXwOrROk/b4DbuFUJPb+yVr15sXPKqwjlltj5ltzpAnBiPH0sQIKtJeRffIEAYXCZ/L1ESRsfvtlbrGLw==} peerDependencies: react: '>=16.8' react-dom: '>=16.8' @@ -5345,10 +5321,10 @@ packages: /@umijs/route-utils/4.0.1: resolution: {integrity: sha512-+1ixf1BTOLuH+ORb4x8vYMPeIt38n9q0fJDwhv9nSxrV46mxbLF0nmELIo9CKQB2gHfuC4+hww6xejJ6VYnBHQ==} - /@umijs/server/4.0.51: - resolution: {integrity: sha512-UBkp7Idfi0OxNZCfrRKc35BQocr5hQqRLX9MsEwzPEHc5Qw4lreUL3R5Za+PkwpdrNEm3rMEAqqNFYXArtZbag==} + /@umijs/server/4.0.52: + resolution: {integrity: sha512-z1Py/g5SMJq6VW+BJdCJe18R5ghlrBoKum5HqMZoEdwOh+Xlq9Wl44c22Y/3B3wus9MQOVCPGs25kEQTqSyVxw==} dependencies: - '@umijs/bundler-utils': 4.0.51 + '@umijs/bundler-utils': 4.0.52 history: 5.3.0 react: 18.1.0 react-dom: 18.1.0_react@18.1.0 @@ -5357,13 +5333,13 @@ packages: - supports-color dev: true - /@umijs/test/4.0.51: - resolution: {integrity: sha512-jwoNUg8pgQiAuRfJZYcx3oMFIqPXw0A+vJQwsE9nLIgkUnLHlS4D1BP5pc7WusYYeuwEJewLDTH3iQQgiFEHFw==} + /@umijs/test/4.0.52: + resolution: {integrity: sha512-0juG1lzyj+GqxClvKH7yrAJWieMdDa07bbxEdJtx88716S9CXEDNJV68zRcpBRx6XBbuOlibXYdVsvrQhMpJvA==} dependencies: '@babel/plugin-transform-modules-commonjs': 7.20.11 '@jest/types': 27.5.1 - '@umijs/bundler-utils': 4.0.51 - '@umijs/utils': 4.0.51 + '@umijs/bundler-utils': 4.0.52 + '@umijs/utils': 4.0.52 babel-jest: 29.4.3 esbuild: 0.16.17 identity-obj-proxy: 3.0.0 @@ -5387,8 +5363,8 @@ packages: pino: 7.11.0 dev: true - /@umijs/utils/4.0.51: - resolution: {integrity: sha512-4mWqNAH9FZMH3CnRZIxg49AEAjEyMW+ra7abccuvIPYUesuuqjF9Ng7scW1wp9euGRGsIXfe+xSlmHdz8CdwXA==} + /@umijs/utils/4.0.52: + resolution: {integrity: sha512-Dh7Xlt+N16HzCYatGMFEsGHZv0LJldkAI6R552wS38PH+5miCKop4JrFKpFznUFHccAZVrp0drkEpmn8Xp3dig==} dependencies: chokidar: 3.5.3 pino: 7.11.0 @@ -5402,20 +5378,18 @@ packages: - react dev: true - /@vitejs/plugin-react/2.2.0_vite@3.2.5: - resolution: {integrity: sha512-FFpefhvExd1toVRlokZgxgy2JtnBOdp4ZDsq7ldCWaqGSGn9UhWMAVm/1lxPL14JfNS5yGz+s9yFrQY6shoStA==} + /@vitejs/plugin-react/3.1.0_vite@4.1.1: + resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: - vite: ^3.0.0 + vite: ^4.1.0-beta.0 dependencies: '@babel/core': 7.20.12 - '@babel/plugin-transform-react-jsx': 7.20.13_@babel+core@7.20.12 - '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.20.12 '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.20.12 '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 - magic-string: 0.26.7 + magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 3.2.5_less@4.1.3 + vite: 4.1.1_less@4.1.3 transitivePeerDependencies: - supports-color dev: true @@ -5655,7 +5629,7 @@ packages: rc-checkbox: 2.3.2_biqbaboplfbrettd7655fr4n2y rc-collapse: 3.4.2_biqbaboplfbrettd7655fr4n2y rc-dialog: 9.0.2_biqbaboplfbrettd7655fr4n2y - rc-drawer: 6.1.2_biqbaboplfbrettd7655fr4n2y + rc-drawer: 6.1.3_biqbaboplfbrettd7655fr4n2y rc-dropdown: 4.0.1_biqbaboplfbrettd7655fr4n2y rc-field-form: 1.27.4_biqbaboplfbrettd7655fr4n2y rc-image: 5.13.0_biqbaboplfbrettd7655fr4n2y @@ -5689,8 +5663,8 @@ packages: scroll-into-view-if-needed: 2.2.31 dev: true - /antd/5.2.1_jb42yyeu5qxbfieyxjks6malva: - resolution: {integrity: sha512-yuTeYEhfvsEjHdPwhb47GXBk9EHZ/pHDaUgJMXHhOUbaWPWnTliHtQwgHYMJT9rEZobi3O0YRP2wnYWVtbDGsw==} + /antd/5.2.2_jb42yyeu5qxbfieyxjks6malva: + resolution: {integrity: sha512-IHuMyGvgI+pPmoZNJFfhVykb0eW6+iO/39/9qPE0ub9gKAnI4vaK+hA5li6aX+mjM/EqgckdWgLpaIP98kGrvw==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -5711,7 +5685,7 @@ packages: rc-checkbox: 2.3.2_biqbaboplfbrettd7655fr4n2y rc-collapse: 3.5.2_biqbaboplfbrettd7655fr4n2y rc-dialog: 9.0.2_biqbaboplfbrettd7655fr4n2y - rc-drawer: 6.1.2_biqbaboplfbrettd7655fr4n2y + rc-drawer: 6.1.3_biqbaboplfbrettd7655fr4n2y rc-dropdown: 4.0.1_biqbaboplfbrettd7655fr4n2y rc-field-form: 1.27.4_biqbaboplfbrettd7655fr4n2y rc-image: 5.13.0_biqbaboplfbrettd7655fr4n2y @@ -5923,7 +5897,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.5 - caniuse-lite: 1.0.30001453 + caniuse-lite: 1.0.30001457 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -5938,7 +5912,7 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.21.5 - caniuse-lite: 1.0.30001453 + caniuse-lite: 1.0.30001457 fraction.js: 4.2.0 normalize-range: 0.1.2 picocolors: 1.0.0 @@ -5951,7 +5925,7 @@ packages: hasBin: true dependencies: browserslist: 4.21.5 - caniuse-lite: 1.0.30001453 + caniuse-lite: 1.0.30001457 normalize-range: 0.1.2 num2fraction: 1.2.2 picocolors: 0.2.1 @@ -6347,8 +6321,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001453 - electron-to-chromium: 1.4.299 + caniuse-lite: 1.0.30001457 + electron-to-chromium: 1.4.302 node-releases: 2.0.10 update-browserslist-db: 1.0.10_browserslist@4.21.5 @@ -6439,8 +6413,8 @@ packages: resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} dev: true - /caniuse-lite/1.0.30001453: - resolution: {integrity: sha512-R9o/uySW38VViaTrOtwfbFEiBFUh7ST3uIG4OEymIG3/uKdHDO4xk/FaqfUw0d+irSUyFPy3dZszf9VvSTPnsA==} + /caniuse-lite/1.0.30001457: + resolution: {integrity: sha512-SDIV6bgE1aVbK6XyxdURbUE89zY7+k1BBBaOwYwkNCglXlel/E7mELiHC64HQ+W0xSKlqWhV9Wh7iHxUjMs4fA==} /carlo/0.9.46: resolution: {integrity: sha512-FwZ/wxjqe+5RgzF2SRsPSWsVB9+McAVRWW0tRkmbh7fBjrf3HFZZbcr8vr61p1K+NBaAPv57DRjxgIyfbHmd7g==} @@ -7465,8 +7439,8 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true - /electron-to-chromium/1.4.299: - resolution: {integrity: sha512-lQ7ijJghH6pCGbfWXr6EY+KYCMaRSjgsY925r1p/TlpSfVM1VjHTcn1gAc15VM4uwti283X6QtjPTXdpoSGiZQ==} + /electron-to-chromium/1.4.302: + resolution: {integrity: sha512-Uk7C+7aPBryUR1Fwvk9VmipBcN9fVsqBO57jV2ZjTm+IZ6BMNqu7EDVEg2HxCNufk6QcWlFsBkhQyQroB2VWKw==} /elliptic/6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -7931,34 +7905,34 @@ packages: '@esbuild/win32-x64': 0.16.17 dev: true - /esbuild/0.17.8: - resolution: {integrity: sha512-g24ybC3fWhZddZK6R3uD2iF/RIPnRpwJAqLov6ouX3hMbY4+tKolP0VMF3zuIYCaXun+yHwS5IPQ91N2BT191g==} + /esbuild/0.17.9: + resolution: {integrity: sha512-m3b2MR76QkwKPw/KQBlBJVaIncfQhhXsDMCFPoyqEOIziV+O7BAKqOYT1NbHsnFUX0/98CLWxUfM5stzh4yq4Q==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.17.8 - '@esbuild/android-arm64': 0.17.8 - '@esbuild/android-x64': 0.17.8 - '@esbuild/darwin-arm64': 0.17.8 - '@esbuild/darwin-x64': 0.17.8 - '@esbuild/freebsd-arm64': 0.17.8 - '@esbuild/freebsd-x64': 0.17.8 - '@esbuild/linux-arm': 0.17.8 - '@esbuild/linux-arm64': 0.17.8 - '@esbuild/linux-ia32': 0.17.8 - '@esbuild/linux-loong64': 0.17.8 - '@esbuild/linux-mips64el': 0.17.8 - '@esbuild/linux-ppc64': 0.17.8 - '@esbuild/linux-riscv64': 0.17.8 - '@esbuild/linux-s390x': 0.17.8 - '@esbuild/linux-x64': 0.17.8 - '@esbuild/netbsd-x64': 0.17.8 - '@esbuild/openbsd-x64': 0.17.8 - '@esbuild/sunos-x64': 0.17.8 - '@esbuild/win32-arm64': 0.17.8 - '@esbuild/win32-ia32': 0.17.8 - '@esbuild/win32-x64': 0.17.8 + '@esbuild/android-arm': 0.17.9 + '@esbuild/android-arm64': 0.17.9 + '@esbuild/android-x64': 0.17.9 + '@esbuild/darwin-arm64': 0.17.9 + '@esbuild/darwin-x64': 0.17.9 + '@esbuild/freebsd-arm64': 0.17.9 + '@esbuild/freebsd-x64': 0.17.9 + '@esbuild/linux-arm': 0.17.9 + '@esbuild/linux-arm64': 0.17.9 + '@esbuild/linux-ia32': 0.17.9 + '@esbuild/linux-loong64': 0.17.9 + '@esbuild/linux-mips64el': 0.17.9 + '@esbuild/linux-ppc64': 0.17.9 + '@esbuild/linux-riscv64': 0.17.9 + '@esbuild/linux-s390x': 0.17.9 + '@esbuild/linux-x64': 0.17.9 + '@esbuild/netbsd-x64': 0.17.9 + '@esbuild/openbsd-x64': 0.17.9 + '@esbuild/sunos-x64': 0.17.9 + '@esbuild/win32-arm64': 0.17.9 + '@esbuild/win32-ia32': 0.17.9 + '@esbuild/win32-x64': 0.17.9 dev: true /escalade/3.1.1: @@ -8261,7 +8235,7 @@ packages: '@babel/eslint-parser': 7.19.1_go3kp2l7mdrkdyt3xfyeu7ppfa eslint: 7.32.0 eslint-visitor-keys: 2.1.0 - esquery: 1.4.1 + esquery: 1.4.2 multimap: 1.1.0 transitivePeerDependencies: - supports-color @@ -8335,7 +8309,7 @@ packages: eslint-utils: 2.1.0 eslint-visitor-keys: 2.1.0 espree: 7.3.1 - esquery: 1.4.1 + esquery: 1.4.2 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 @@ -8384,7 +8358,7 @@ packages: eslint-utils: 3.0.0_eslint@8.31.0 eslint-visitor-keys: 3.3.0 espree: 9.4.1 - esquery: 1.4.1 + esquery: 1.4.2 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 @@ -8432,7 +8406,7 @@ packages: eslint-utils: 3.0.0_eslint@8.34.0 eslint-visitor-keys: 3.3.0 espree: 9.4.1 - esquery: 1.4.1 + esquery: 1.4.2 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 @@ -8483,8 +8457,8 @@ packages: hasBin: true dev: true - /esquery/1.4.1: - resolution: {integrity: sha512-3ZggxvMv5EEY1ssUVyHSVt0oPreyBfbUi1XikJVfjFiBeBDLdrb0IWoDiEwqT/2sUQi0TGaWtFhOGDD8RTpXgQ==} + /esquery/1.4.2: + resolution: {integrity: sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 @@ -9385,7 +9359,7 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.16.3 + terser: 5.16.4 dev: true /html-tags/3.2.0: @@ -9571,8 +9545,8 @@ packages: parent-module: 1.0.1 resolve-from: 4.0.0 - /import-html-entry/1.14.2: - resolution: {integrity: sha512-w7BXfpoVNCiSdjUNxrYHrByCVTNfWILoX0vpBzdZ/UfJ/qhozJn+IEoMGVBHzJK5ith9s2KcpM+oPrJl4oLFMg==} + /import-html-entry/1.14.3: + resolution: {integrity: sha512-bQOxi0vgebkDjYf510XiRgsRNZR3idBiBXAjJtzOzIO1ukSj+h/lIM3zx7poZiJVMMUuwjiEkYLlvmJNhKw85A==} dependencies: '@babel/runtime': 7.20.13 dev: true @@ -10125,7 +10099,7 @@ packages: '@jest/expect': 29.4.3 '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -10165,14 +10139,14 @@ packages: jest-util: 29.4.3 jest-validate: 29.4.3 prompts: 2.4.2 - yargs: 17.6.2 + yargs: 17.7.0 transitivePeerDependencies: - '@types/node' - supports-color - ts-node dev: true - /jest-config/29.4.3_ts-node@10.9.1: + /jest-config/29.4.3_lszm27wzplody5hzcr5ax274dy: resolution: {integrity: sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -10187,6 +10161,7 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.4.3 '@jest/types': 29.4.3 + '@types/node': 18.14.0 babel-jest: 29.4.3_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.8.0 @@ -10211,7 +10186,7 @@ packages: - supports-color dev: true - /jest-config/29.4.3_ucpl6toqp57nqodtp3vxxi6g5a: + /jest-config/29.4.3_ts-node@10.9.1: resolution: {integrity: sha512-eCIpqhGnIjdUCXGtLhz4gdDoxKSWXKjzNcc5r+0S1GKOp2fwOipx5mRcwa9GB/ArsxJ1jlj2lmlD9bZAsBxaWQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -10226,7 +10201,6 @@ packages: '@babel/core': 7.20.12 '@jest/test-sequencer': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.13.0 babel-jest: 29.4.3_@babel+core@7.20.12 chalk: 4.1.2 ci-info: 3.8.0 @@ -10292,7 +10266,7 @@ packages: '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 '@types/jsdom': 20.0.1 - '@types/node': 18.13.0 + '@types/node': 18.14.0 jest-mock: 29.4.3 jest-util: 29.4.3 jsdom: 20.0.3 @@ -10309,7 +10283,7 @@ packages: '@jest/environment': 29.4.3 '@jest/fake-timers': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 jest-mock: 29.4.3 jest-util: 29.4.3 dev: true @@ -10325,7 +10299,7 @@ packages: dependencies: '@jest/types': 29.4.3 '@types/graceful-fs': 4.1.6 - '@types/node': 18.13.0 + '@types/node': 18.14.0 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.10 @@ -10376,7 +10350,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 jest-util: 29.4.3 dev: true @@ -10431,7 +10405,7 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.10 @@ -10462,7 +10436,7 @@ packages: '@jest/test-result': 29.4.3 '@jest/transform': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 chalk: 4.1.2 cjs-module-lexer: 1.2.2 collect-v8-coverage: 1.0.1 @@ -10518,7 +10492,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 chalk: 4.1.2 ci-info: 3.8.0 graceful-fs: 4.2.10 @@ -10543,7 +10517,7 @@ packages: dependencies: '@jest/test-result': 29.4.3 '@jest/types': 29.4.3 - '@types/node': 18.13.0 + '@types/node': 18.14.0 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -10555,7 +10529,7 @@ packages: resolution: {integrity: sha512-lY4AnnmsEWeiXirAIA0c9SDPbuCBq8IYuDVL8PMm0MZ2PEs2yPvRA/J64QBXuZp7CYKrDM/rmNrc9/i3KJQncw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.14.0 jest-util: 29.4.3 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -10565,7 +10539,7 @@ packages: resolution: {integrity: sha512-GLHN/GTAAMEy5BFdvpUfzr9Dr80zQqBrh0fz1mtRMe05hqP45+HfQltu7oTBfduD0UeZs09d+maFtFYAXFWvAA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 18.13.0 + '@types/node': 18.14.0 jest-util: 29.4.3 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -11077,13 +11051,6 @@ packages: hasBin: true dev: true - /magic-string/0.26.7: - resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} - engines: {node: '>=12'} - dependencies: - sourcemap-codec: 1.4.8 - dev: true - /magic-string/0.27.0: resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} engines: {node: '>=12'} @@ -11608,7 +11575,7 @@ packages: oas-kit-common: 1.0.8 reftools: 1.1.9 yaml: 1.10.2 - yargs: 17.6.2 + yargs: 17.7.0 dev: true /oas-schema-walker/1.1.5: @@ -13138,11 +13105,11 @@ packages: - utf-8-validate dev: true - /qiankun/2.9.2: - resolution: {integrity: sha512-SzVHPdczlXt29IQRUNf8ndy7iJ7BlduHWArO5iKIJ18tnOWOUC//93O5NS8uVV+Mu0e+kvZcG9mxL1DVvcra1g==} + /qiankun/2.9.3: + resolution: {integrity: sha512-Vy15WWeBfshjZ+uZKyvuA2gH84fiZTz5X99yy89zr6aIHdWBKhjRFrb22iHrQswlDVl2Vxjm01UWGvrmaPoSPQ==} dependencies: '@babel/runtime': 7.20.13 - import-html-entry: 1.14.2 + import-html-entry: 1.14.3 lodash: 4.17.21 single-spa: 5.9.4 dev: true @@ -13388,8 +13355,8 @@ packages: react: 18.2.0 react-dom: 18.2.0_react@18.2.0 - /rc-drawer/6.1.2_biqbaboplfbrettd7655fr4n2y: - resolution: {integrity: sha512-mYsTVT8Amy0LRrpVEv7gI1hOjtfMSO/qHAaCDzFx9QBLnms3cAQLJkaxRWM+Eq99oyLhU/JkgoqTg13bc4ogOQ==} + /rc-drawer/6.1.3_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-AvHisO90A+xMLMKBw2zs89HxjWxusM2BUABlgK60RhweIHF8W/wk0hSOrxBlUXoA9r1F+10na3g6GZ97y1qDZA==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -14567,8 +14534,8 @@ packages: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} - /regexpu-core/5.3.0: - resolution: {integrity: sha512-ZdhUQlng0RoscyW7jADnUZ25F5eVtHdMyXSb2PiwafvteRAOJUjFoUPEYZSIfP99fBIs3maLIRfpEddT78wAAQ==} + /regexpu-core/5.3.1: + resolution: {integrity: sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==} engines: {node: '>=4'} dependencies: '@babel/regjsgen': 0.8.0 @@ -14929,12 +14896,12 @@ packages: open: 8.4.1 picomatch: 2.3.1 source-map: 0.7.4 - yargs: 17.6.2 + yargs: 17.7.0 dev: true - /rollup/2.79.1: - resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} - engines: {node: '>=10.0.0'} + /rollup/3.17.2: + resolution: {integrity: sha512-qMNZdlQPCkWodrAZ3qnJtvCAl4vpQ8q77uEujVCCbC/6CLB7Lcmvjq7HyiOSnf4fxTT9XgsE36oLHJBH49xjqA==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 @@ -15286,11 +15253,6 @@ packages: engines: {node: '>= 8'} dev: true - /sourcemap-codec/1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - deprecated: Please use @jridgewell/sourcemap-codec instead - dev: true - /spdx-correct/3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} dependencies: @@ -15903,7 +15865,7 @@ packages: oas-validator: 5.0.8 reftools: 1.1.9 yaml: 1.10.2 - yargs: 17.6.2 + yargs: 17.7.0 transitivePeerDependencies: - encoding dev: true @@ -15942,8 +15904,8 @@ packages: engines: {node: '>=6'} dev: true - /terser/5.16.3: - resolution: {integrity: sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q==} + /terser/5.16.4: + resolution: {integrity: sha512-5yEGuZ3DZradbogeYQ1NaGz7rXVBDWujWlx1PT8efXO6Txn+eWbfKqB2bTDVmFXmePFkoLU6XI8UektMIEA0ug==} engines: {node: '>=10'} hasBin: true dependencies: @@ -16244,12 +16206,12 @@ packages: resolution: {integrity: sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==} dev: true - /umi-presets-pro/2.0.2_j6z4hab2i3bwnwb4dzmobxs5ea: + /umi-presets-pro/2.0.2_d27qsjlvwifosjanw3qieypnj4: resolution: {integrity: sha512-qP4mM0DdQHGLDFQuO/ek95jHDQ7hnCqWwAMaYjCGroxVQWUV+GHt5cyU39bLkHQ3dPS8OWVen1Bjz2/JBF0nHw==} dependencies: - '@alita/plugins': 3.2.10_j6z4hab2i3bwnwb4dzmobxs5ea + '@alita/plugins': 3.2.10_d27qsjlvwifosjanw3qieypnj4 '@umijs/max-plugin-openapi': 2.0.2 - '@umijs/plugins': 4.0.51_j6z4hab2i3bwnwb4dzmobxs5ea + '@umijs/plugins': 4.0.52_d27qsjlvwifosjanw3qieypnj4 '@umijs/request-record': 1.1.3 swagger-ui-dist: 4.15.5 transitivePeerDependencies: @@ -16290,21 +16252,21 @@ packages: slash2: 2.0.0 dev: true - /umi/4.0.51_5sxtzqf4pm6epycwyxpxfttr6q: - resolution: {integrity: sha512-6wAX/DGOKlGJBDdHlQEEfnITgrZlR060/R6Q6Q7gzPVEClDpW2BONoilePr2SmL83ISwzZ7vooFORfG45gvNnA==} + /umi/4.0.52_5sxtzqf4pm6epycwyxpxfttr6q: + resolution: {integrity: sha512-3YJNO1e06MbgJNWcnNnnmHZCj00UMW/gRBaOOPe7XaWI6ju/DYf71pA83eLle3Ni7TJV/AMDVQdu/e6mAuCQSg==} engines: {node: '>=14'} hasBin: true dependencies: '@babel/runtime': 7.20.7 - '@umijs/bundler-utils': 4.0.51 - '@umijs/bundler-webpack': 4.0.51_typescript@4.9.5 - '@umijs/core': 4.0.51 - '@umijs/lint': 4.0.51_uqnovjyowm2y6c3zpb3q5ibfoy - '@umijs/preset-umi': 4.0.51_c6mc5dj2lvpczaqlkcypbolpey - '@umijs/renderer-react': 4.0.51_biqbaboplfbrettd7655fr4n2y - '@umijs/server': 4.0.51 - '@umijs/test': 4.0.51 - '@umijs/utils': 4.0.51 + '@umijs/bundler-utils': 4.0.52 + '@umijs/bundler-webpack': 4.0.52_typescript@4.9.5 + '@umijs/core': 4.0.52 + '@umijs/lint': 4.0.52_uqnovjyowm2y6c3zpb3q5ibfoy + '@umijs/preset-umi': 4.0.52_c6mc5dj2lvpczaqlkcypbolpey + '@umijs/renderer-react': 4.0.52_biqbaboplfbrettd7655fr4n2y + '@umijs/server': 4.0.52 + '@umijs/test': 4.0.52 + '@umijs/utils': 4.0.52 prettier-plugin-organize-imports: 3.2.2_silln3pw57har7jydmecgzoypa prettier-plugin-packagejson: 2.3.0_prettier@2.8.4 transitivePeerDependencies: @@ -16430,9 +16392,6 @@ packages: engines: {node: '>= 0.8'} dev: true - /unstated-next/1.1.0: - resolution: {integrity: sha512-AAn47ZncPvgBGOvMcn8tSRxsrqwf2VdAPxLASTuLJvZt4rhKfDvUkmYZLGfclImSfTVMv7tF4ynaVxin0JjDCA==} - /update-browserslist-db/1.0.10_browserslist@4.21.5: resolution: {integrity: sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==} hasBin: true @@ -16595,8 +16554,8 @@ packages: vfile-message: 2.0.4 dev: true - /vite/3.2.5_less@4.1.3: - resolution: {integrity: sha512-4mVEpXpSOgrssFZAOmGIr85wPHKvaDAcXqxVxVRZhljkJOMZi1ibLibzjLHzJvcok8BMguLc7g1W6W/GqZbLdQ==} + /vite/4.1.1_less@4.1.3: + resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -16620,11 +16579,11 @@ packages: terser: optional: true dependencies: - esbuild: 0.15.18 + esbuild: 0.16.17 less: 4.1.3 postcss: 8.4.21 resolve: 1.22.1 - rollup: 2.79.1 + rollup: 3.17.2 optionalDependencies: fsevents: 2.3.2 dev: true @@ -16884,8 +16843,8 @@ packages: engines: {node: '>=12'} dev: true - /yargs/17.6.2: - resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} + /yargs/17.7.0: + resolution: {integrity: sha512-dwqOPg5trmrre9+v8SUo2q/hAwyKoVfu8OC1xPHKJGNdxAvPl4sKxL4vBnh3bQz/ZvvGAFeA5H3ou2kcOY8sQQ==} engines: {node: '>=12'} dependencies: cliui: 8.0.1 diff --git a/src/app.tsx b/src/app.tsx index 6b151582..024f2612 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -1,5 +1,5 @@ import Footer from '@/components/Footer'; -import RightContent from '@/components/RightContent'; +import { Question, SelectLang } from '@/components/RightContent'; import { LinkOutlined } from '@ant-design/icons'; import type { Settings as LayoutSettings } from '@ant-design/pro-components'; import { SettingDrawer } from '@ant-design/pro-components'; @@ -9,6 +9,7 @@ import defaultSettings from '../config/defaultSettings'; import { errorConfig } from './requestErrorConfig'; import { currentUser as queryCurrentUser } from './services/ant-design-pro/api'; import React from 'react'; +import { AvatarDropdown, AvatarName } from './components/RightContent/AvatarDropdown'; const isDev = process.env.NODE_ENV === 'development'; const loginPath = '/user/login'; @@ -51,7 +52,14 @@ export async function getInitialState(): Promise<{ // ProLayout 支持的api https://procomponents.ant.design/components/layout export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) => { return { - rightContentRender: () => , + actionsRender: () => [, ], + avatarProps: { + src: initialState?.currentUser?.avatar, + title: , + render: (_, avatarChildren) => { + return {avatarChildren}; + }, + }, waterMarkProps: { content: initialState?.currentUser?.name, }, diff --git a/src/components/HeaderDropdown/index.tsx b/src/components/HeaderDropdown/index.tsx index 8474be51..52a20365 100644 --- a/src/components/HeaderDropdown/index.tsx +++ b/src/components/HeaderDropdown/index.tsx @@ -17,13 +17,7 @@ const HeaderDropdown: React.FC = ({ overlayClassName: cls, }, }; }); - return ( - target.parentElement || document.body} - {...restProps} - /> - ); + return ; }; export default HeaderDropdown; diff --git a/src/components/RightContent/AvatarDropdown.tsx b/src/components/RightContent/AvatarDropdown.tsx index e4dfaf03..c4c6415d 100644 --- a/src/components/RightContent/AvatarDropdown.tsx +++ b/src/components/RightContent/AvatarDropdown.tsx @@ -2,8 +2,7 @@ import { outLogin } from '@/services/ant-design-pro/api'; import { LogoutOutlined, SettingOutlined, UserOutlined } from '@ant-design/icons'; import { useEmotionCss } from '@ant-design/use-emotion-css'; import { history, useModel } from '@umijs/max'; -import { Avatar, Spin } from 'antd'; -import { setAlpha } from '@ant-design/pro-components'; +import { Spin } from 'antd'; import { stringify } from 'querystring'; import type { MenuInfo } from 'rc-menu/lib/interface'; import React, { useCallback } from 'react'; @@ -12,49 +11,16 @@ import HeaderDropdown from '../HeaderDropdown'; export type GlobalHeaderRightProps = { menu?: boolean; + children?: React.ReactNode; }; -const Name = () => { +export const AvatarName = () => { const { initialState } = useModel('@@initialState'); const { currentUser } = initialState || {}; - - const nameClassName = useEmotionCss(({ token }) => { - return { - width: '70px', - height: '48px', - overflow: 'hidden', - lineHeight: '48px', - whiteSpace: 'nowrap', - textOverflow: 'ellipsis', - [`@media only screen and (max-width: ${token.screenMD}px)`]: { - display: 'none', - }, - }; - }); - - return {currentUser?.name}; + return {currentUser?.name}; }; -const AvatarLogo = () => { - const { initialState } = useModel('@@initialState'); - const { currentUser } = initialState || {}; - - const avatarClassName = useEmotionCss(({ token }) => { - return { - marginRight: '8px', - color: token.colorPrimary, - verticalAlign: 'top', - background: setAlpha(token.colorBgContainer, 0.85), - [`@media only screen and (max-width: ${token.screenMD}px)`]: { - margin: 0, - }, - }; - }); - - return ; -}; - -const AvatarDropdown: React.FC = ({ menu }) => { +export const AvatarDropdown: React.FC = ({ menu, children }) => { /** * 退出登录,并且将当前的 url 保存 */ @@ -161,12 +127,7 @@ const AvatarDropdown: React.FC = ({ menu }) => { items: menuItems, }} > - - - - + {children} ); }; - -export default AvatarDropdown; diff --git a/src/components/RightContent/index.tsx b/src/components/RightContent/index.tsx index 2d007929..20a78311 100644 --- a/src/components/RightContent/index.tsx +++ b/src/components/RightContent/index.tsx @@ -1,57 +1,31 @@ import { QuestionCircleOutlined } from '@ant-design/icons'; -import { useEmotionCss } from '@ant-design/use-emotion-css'; -import { SelectLang, useModel } from '@umijs/max'; +import { SelectLang as UmiSelectLang } from '@umijs/max'; import React from 'react'; -import Avatar from './AvatarDropdown'; export type SiderTheme = 'light' | 'dark'; -const GlobalHeaderRight: React.FC = () => { - const className = useEmotionCss(() => { - return { - display: 'flex', - height: '48px', - marginLeft: 'auto', - overflow: 'hidden', - gap: 8, - }; - }); - - const actionClassName = useEmotionCss(({ token }) => { - return { - display: 'flex', - float: 'right', - height: '48px', - marginLeft: 'auto', - overflow: 'hidden', - cursor: 'pointer', - padding: '0 12px', - borderRadius: token.borderRadius, - '&:hover': { - backgroundColor: token.colorBgTextHover, - }, - }; - }); - - const { initialState } = useModel('@@initialState'); - - if (!initialState || !initialState.settings) { - return null; - } +export const SelectLang = () => { + return ( + + ); +}; +export const Question = () => { return ( -
    - { - window.open('https://pro.ant.design/docs/getting-started'); - }} - > - - - - +
    { + window.open('https://pro.ant.design/docs/getting-started'); + }} + > +
    ); }; -export default GlobalHeaderRight;