diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..7e3649a --- /dev/null +++ b/.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/.env b/.env new file mode 100644 index 0000000..3dc5b7a --- /dev/null +++ b/.env @@ -0,0 +1,6 @@ +# 平台本地运行端口号 +REACT_APP_ENV = dev +API_SERVER = 127.0.0.1:8888 +SERVER_HOST = http://localhost:8888/ +FILE_SERVER_HOST = http://192.168.10.28:8088 +WEBRTC_SERVER_HOST = http://192.168.10.96:9005 diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..3dc5b7a --- /dev/null +++ b/.env.development @@ -0,0 +1,6 @@ +# 平台本地运行端口号 +REACT_APP_ENV = dev +API_SERVER = 127.0.0.1:8888 +SERVER_HOST = http://localhost:8888/ +FILE_SERVER_HOST = http://192.168.10.28:8088 +WEBRTC_SERVER_HOST = http://192.168.10.96:9005 diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..76f4130 --- /dev/null +++ b/.env.production @@ -0,0 +1,5 @@ +REACT_APP_ENV = prod +API_SERVER = 127.0.0.1:8888 +SERVER_HOST = / +FILE_SERVER_HOST = http://192.168.10.96 +WEBRTC_SERVER_HOST = http://192.168.10.96:9005 diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..8336e93 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,8 @@ +/lambda/ +/scripts +/config +.history +public +dist +.umi +mock \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..8ffdff8 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,8 @@ +module.exports = { + extends: [require.resolve('@umijs/lint/dist/config/eslint')], + globals: { + page: true, + REACT_APP_ENV: true, + SERVER_HOST: true, + }, +}; diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..285319f --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +# 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 +/taskDoc +/src/pages/Demo + +# misc +.DS_Store +npm-debug.log* +yarn-error.log + +/coverage +.idea +yarn.lock +package-lock.json +*bak +.vscode + + +# visual studio code +.history +*.log +functions/* +.temp/** + +# umi +.umi +.umi-production +.umi-test + +# screenshot +screenshot +.firebase +.eslintcache + +build diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..7999ccd --- /dev/null +++ b/.prettierignore @@ -0,0 +1,22 @@ +**/*.svg +.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 diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..3447a1a --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,21 @@ +module.exports = { + 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/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e91e355 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +FROM circleci/node:latest-browsers + +WORKDIR /usr/src/app + +RUN npm config set registry https://registry.npmmirror.com + +USER root +COPY package.json ./ +RUN yarn +COPY ./ ./ +RUN npm run test:all + +CMD ["npm", "run", "build"] diff --git a/README.md b/README.md index 0188785..a87f846 100644 --- a/README.md +++ b/README.md @@ -1 +1,53 @@ -

Uighur-Recognition-Web

+# General-AI-Platform-Web +重点人群识别前端仓库 develop + +### 生成代码调整 +* ProFormSelect 选择控件 对应文案使用 common.please_select 默认可以使用 common.please_input + +### remark +* 列表筛选表单配置统一使用renderFormItem配置,方便个性化处理 +* 删除按钮颜色配色 统一将a标签换成Button 设置属性{ type="text" danger} +* 展示抽屉内容时需要有关闭按钮,排版需和谐 +* 使用stepForm的时候,最后的提交写在最后一步的onfinish里面而不是总的stepForm里 +* table操作栏按钮统一使用button,合理间距 + + +### 具体实现 +1. 筛选表单区: 列表在columns配置初始数据时,需要筛选的表单项统一使用renderFormItem属性,基于renderFormItem去配置表单项field, 【searchFormItemProps】属性统一配置自定义业务 +{ + width="md" // 表单项宽度可以是数字 + labelCol={{span: 4}} // 标签布局 + wrapperCol={{span: 22}} // 输入控件布局 +} + +2. 列表action区按钮个性化和操作确认调整为 统一将a标签换成Button 设置属性【actionInnerDeleteBtnProps】 +{ type="text" danger} + +3. 列表action有多个按钮显示更多 +暂时使用默认超过3个显示更多,如需统一处理或者权限控制下的按钮显示隐藏导致的按钮数量不一致,可根据需要独立封装TableActionComp + +4. 列表多选固定在顶部 +使用表格内容固定高度,溢出垂直方向可滚动 + +5. 列表可选时,首列需要固定 +新增首列index栏位,设置{fixed: 'left'}可实现固定 + +6. 列表固定表头 scroll={{ y: 500 }} +批量选择确认按钮固定,列表头内容固定 + +7. 列表批量选择 tableAlertOptionRender +配置多选操作选项区 + + +### git提交修饰 +feat: 新功能 +fix: bug修复 +docs: 仅文档更改 +style: 不影响代码含义的更改(空白、格式设置、缺失 分号等) +refactor: 既不修复bug也不添加特性的代码更改 +perf: 改进性能的代码更改 +test: 添加缺少的测试或更正现有测试 +chore: 对构建过程或辅助工具和库(如文档)的更改(无法确认内容可使用) + +### bug汇总 +* 新增路由页面,默认该角色拥有查看权限,实际配置并没有(重新配置权限,又能正常访问该新增页面) diff --git a/config/config.ts b/config/config.ts new file mode 100644 index 0000000..3fb1056 --- /dev/null +++ b/config/config.ts @@ -0,0 +1,187 @@ +// https://umijs.org/config/ +import { defineConfig } from '@umijs/max'; +import { join } from 'path'; +import defaultSettings from './defaultSettings'; +import proxy from './proxy'; +import routes from './routes'; + +const { REACT_APP_ENV, + API_SERVER, + SERVER_HOST, + FILE_SERVER_HOST, + WEBRTC_SERVER_HOST +} = process.env; +console.log(REACT_APP_ENV) +export default defineConfig({ + /** + * @name 开启 hash 模式 + * @description 让 build 之后的产物包含 hash 后缀。通常用于增量发布和避免浏览器加载缓存。 + * @doc https://umijs.org/docs/api/config#hash + */ + hash: true, + define: { + API_SERVER: API_SERVER, + SERVER_HOST: SERVER_HOST, + FILE_SERVER_HOST: FILE_SERVER_HOST, + WEBRTC_SERVER_HOST: WEBRTC_SERVER_HOST, + }, + /** + * @name 兼容性设置 + * @description 设置 ie11 不一定完美兼容,需要检查自己使用的所有依赖 + * @doc https://umijs.org/docs/api/config#targets + */ + // targets: { + // ie: 11, + // }, + /** + * @name 路由的配置,不在路由中引入的文件不会编译 + * @description 只支持 path,components,routes,redirect,wrappers,title 的配置 + * @doc https://umijs.org/docs/guides/routes + */ + // umi routes: https://umijs.org/docs/routing + routes, + /** + * @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 动态设置主色调 + '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 as keyof typeof proxy], + /** + * @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 + */ + title: 'Ant Design Pro', + layout: { + 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 + */ + 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: {}, + + /** + * @name 中额外的 script + * @description 配置 中额外的 script + */ + headScripts: [ + // 解决首次加载时白屏的问题 + { src: '/scripts/loading.js', async: true }, + ], + //================ 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'", + // // 或者使用在线的版本 + // // schemaPath: "https://gw.alipayobjects.com/os/antfincdn/M%24jrzTTYJN/oneapi.json" + // schemaPath: join(__dirname, 'oneapi.json'), + // mock: false, + // }, + // { + // requestLibPath: "import { request } from '@umijs/max'", + // schemaPath: 'https://gw.alipayobjects.com/os/antfincdn/CA1dOm%2631B/openapi.json', + // projectName: 'swagger', + // }, + // { + // requestLibPath: "import { request } from '@umijs/max'", + // // 或者使用在线的版本 + // // schemaPath: "https://gw.alipayobjects.com/os/antfincdn/M%24jrzTTYJN/oneapi.json" + // // schemaPath: join(__dirname, 'oneapi.json'), + // schemaPath: 'http://localhost:8888/api/v1/swagger/doc.json', + // mock: false, + // apiPrefix: "'/api/v1'", + // projectName: 'device1', + // }, + // { + // requestLibPath: "import { request } from '@umijs/max'", + // // 或者使用在线的版本 + // // schemaPath: "https://gw.alipayobjects.com/os/antfincdn/M%24jrzTTYJN/oneapi.json" + // // schemaPath: join(__dirname, 'oneapi.json'), + // schemaPath: 'http://127.0.0.1:9000/swagger.json', + // mock: false, + // apiPrefix: "'/api/v1'", + // projectName: 'staff', + // }, + ], + mfsu: { + strategy: 'normal', + }, + requestRecord: {}, +}); diff --git a/config/defaultDrawer.ts b/config/defaultDrawer.ts new file mode 100644 index 0000000..e37bef3 --- /dev/null +++ b/config/defaultDrawer.ts @@ -0,0 +1 @@ +// 待启用 抽屉全局配置 \ No newline at end of file diff --git a/config/defaultForm.ts b/config/defaultForm.ts new file mode 100644 index 0000000..9228aad --- /dev/null +++ b/config/defaultForm.ts @@ -0,0 +1,92 @@ +/* + * @Author: zhoux zhouxia@supervision.ltd + * @Date: 2023-11-13 14:19:57 + * @LastEditors: zhoux zhouxia@supervision.ltd + * @LastEditTime: 2023-12-27 16:09:07 + * @FilePath: \general-ai-platform-web\config\defaultForm.ts + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE2 + */ + +import { CloseCircleOutlined, CopyOutlined, DeleteOutlined } from "@ant-design/icons"; +import { StepsFormProps } from "@ant-design/pro-components"; +import { ReactNode } from "react"; + +export type IconConfig = { + /** + * 新的icon的组件,我们会将其实例化 + * Icon: ()=>
+ */ + Icon?: React.FC; + /** + * tooltip 的提示文案 + */ + tooltipText?: string; +}; +// 通用表单配置 +export const proFormCommonOptions: Record = { +} + +const formBoxMargin = 2 * 24 +const formItemGap = 16 +// Small 560 +export const proFormSmallModelWidth: number = 560; +export const proFormSmallItemStyleProps: Record = { + width: proFormSmallModelWidth - formBoxMargin, // 一列 + // column2Width: (proFormSmallModelWidth - 2 * formBoxMargin)/2 , // 两列 + + +}; + +// normal 804 +export const proFormModelWidth: number = 804; +export const proFormItemStyleProps: Record = { + width: proFormModelWidth - formBoxMargin, // 一列 + column2Width: (proFormModelWidth - formBoxMargin - formItemGap)/2 , // 两列 +}; + +// max 968 +export const proFormMaxModelWidth: number = 968; +export const proFormMaxItemStyleProps: Record = { + width: proFormMaxModelWidth - formBoxMargin, + column2Width: (proFormMaxModelWidth - formBoxMargin - formItemGap)/2 , // 两列 +}; + + +/**表单具体单项配置 */ + + +// proFormList 新增一项按钮配置 +export const proFormListCreatorButtonProps : { + creatorButtonText?: ReactNode; + position?: 'top' | 'bottom'; + deleteIconProps?: IconConfig | false; +} = { + position: 'bottom', + creatorButtonText: '添加参数字段', // 设置新增一项数据的文案 + deleteIconProps: { + Icon: CloseCircleOutlined, + tooltipText: '不需要这行了', + } +} + +export const proFormListActionButtonProps : { + CopyableIconProps?: IconConfig | false; + deleteIconProps?: IconConfig | false; +} = { + CopyableIconProps: { + Icon: CopyOutlined, + tooltipText: '复制', + }, + deleteIconProps: { + Icon: DeleteOutlined, + tooltipText: '删除', + } +} + + +// 分步表单统一配置 +export const proFormStepsFormProps: StepsFormProps = { + stepsProps: { + labelPlacement: 'vertical', + } +} \ No newline at end of file diff --git a/config/defaultIcon.ts b/config/defaultIcon.ts new file mode 100644 index 0000000..b9fc3ae --- /dev/null +++ b/config/defaultIcon.ts @@ -0,0 +1,38 @@ +/* + * @Author: zhoux zhouxia@supervision.ltd + * @Date: 2023-11-28 14:13:05 + * @LastEditors: zhoux zhouxia@supervision.ltd + * @LastEditTime: 2023-12-22 16:17:35 + * @FilePath: \general-ai-platform-web\config\defaultIcon.ts + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%A + */ + +import { proFormItemStyleProps } from './defaultForm'; + +// 分步表单统一配置 +export const proIconSelectWrapStyle: React.CSSProperties = { + position: 'relative', + width: proFormItemStyleProps.width + 48, + background: 'red', + left: 0, +}; + +export const proIconSelectStyle: React.CSSProperties = { + position: 'absolute', + left: '0', + padding: 16, + top: '5%', + width: '94%', + height: 500, + zIndex: 9, + boxShadow: '0px 4px 12px 0px rgba(0, 0, 0, 0.30)', + background: '#fff', + borderRadius: 4, + overflowY: 'scroll', +}; + +// 列表图标统一样式 + +export const proIconForTableActionStyle : React.CSSProperties = { + fontSize: 16, +} \ No newline at end of file diff --git a/config/defaultSettings.ts b/config/defaultSettings.ts new file mode 100644 index 0000000..96842be --- /dev/null +++ b/config/defaultSettings.ts @@ -0,0 +1,35 @@ +/* + * @Author: zhoux zhouxia@supervision.ltd + * @Date: 2023-11-01 13:56:33 + * @LastEditors: zhoux zhouxia@supervision.ltd + * @LastEditTime: 2023-11-30 17:10:05 + * @FilePath: \general-ai-platform-web\config\defaultSettings.ts + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +import { ProLayoutProps } from '@ant-design/pro-components'; + +/** + * @name + */ +const Settings: ProLayoutProps & { + pwa?: boolean; + logo?: string; +} = { + navTheme: 'light', + // 拂晓蓝 + colorPrimary: '#155BD4', + layout: 'mix', + contentWidth: 'Fluid', + fixedHeader: false, + fixSiderbar: true, + colorWeak: false, + title: ' ', + pwa: true, + logo: '/logo.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; diff --git a/config/defaultStyle.ts b/config/defaultStyle.ts new file mode 100644 index 0000000..35ce779 --- /dev/null +++ b/config/defaultStyle.ts @@ -0,0 +1,16 @@ +/* + * @Author: zhoux zhouxia@supervision.ltd + * @Date: 2023-12-26 15:51:09 + * @LastEditors: zhoux zhouxia@supervision.ltd + * @LastEditTime: 2023-12-26 15:51:18 + * @FilePath: \general-ai-platform-web\config\defaultStyle.ts + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +export const flex: React.CSSProperties = { + display: 'flex' +} + +export const flexRA: React.CSSProperties = { + ...flex, + +} \ No newline at end of file diff --git a/config/defaultTable.ts b/config/defaultTable.ts new file mode 100644 index 0000000..596c2e8 --- /dev/null +++ b/config/defaultTable.ts @@ -0,0 +1,46 @@ +/* + * @Author: zhoux zhouxia@supervision.ltd + * @Date: 2023-11-13 11:32:26 + * @LastEditors: zhoux zhouxia@supervision.ltd + * @LastEditTime: 2023-11-21 13:36:39 + * @FilePath: \general-ai-platform-web\config\defaultTable.ts + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +import { ProColumns } from "@ant-design/pro-components"; +import { PaginationProps } from "antd"; +// 通用列表配置 +export const proTableCommonOptions: Record = { + scrollX: 'max-content', // 保证左右侧列的固定,并能保证没列标题不换行 + scrollY: 500, // 保证列表高度固定 + commscrollX: 1300, + commscrollY: 500, // 保证列表高度固定 + searchLabelWidth: 'auto', // 整体对齐,label根据实际字数自适应 +} + +// 操作栏位配置 +export const proTableActionColumnOptions: Record = { + dataIndex: 'option', + valueType: 'option', + align: 'center', + fixed: 'right', +} + +// 分页器配置 +export const proTablePaginationOptions: PaginationProps = { + showSizeChanger: true, + // showQuickJumper: true, + showTotal: (total) => `共${total}条`, +} + + + + +// 默认索引列配置 +// export const proTableIndexColumnOptions : ProColumns = { +// title: '序号', +// dataIndex: 'index', +// valueType: 'index', // 增加该属性以添加边框 +// fixed: 'left', // 将该列固定在左侧 +// width: 70, +// align:'center' +// } \ No newline at end of file diff --git a/config/oneapi.json b/config/oneapi.json new file mode 100644 index 0000000..c77d988 --- /dev/null +++ b/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/config/proxy.ts b/config/proxy.ts new file mode 100644 index 0000000..d8784aa --- /dev/null +++ b/config/proxy.ts @@ -0,0 +1,64 @@ +/** + * @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: { + // // localhost:8000/api/** -> https://preview.pro.ant.design/api/** + // '/api/': { + // // 要代理的地址 + // target: 'https://preview.pro.ant.design', + // // 配置了这个可以从 http 代理到 https + // // 依赖 origin 的功能可能需要这个,比如 cookie + // changeOrigin: true, + // }, + // }, + dev: { + // localhost:8000/api/** -> https://preview.pro.ant.design/api/** + '/api/v1/': { + // 要代理的地址 + target: 'http://192.168.10.96:8888/', + // target: 'https://www.baidu.com', + // 配置了这个可以从 http 代理到 https + // 依赖 origin 的功能可能需要这个,比如 cookie + changeOrigin: true, + secure: false, + }, + // '/video_save_path/': { + // // 要代理的地址 + // target: 'http://192.168.10.96/', + // // target: 'https://www.baidu.com', + // // 配置了这个可以从 http 代理到 https + // // 依赖 origin 的功能可能需要这个,比如 cookie + // changeOrigin: true, + // secure: false, + // }, + }, + /** + * @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, + pathRewrite: { '^': '' }, + }, + }, + pre: { + '/api/': { + target: 'your pre url', + changeOrigin: true, + pathRewrite: { '^': '' }, + }, + }, +}; diff --git a/config/routes copy.ts b/config/routes copy.ts new file mode 100644 index 0000000..d1b2cba --- /dev/null +++ b/config/routes copy.ts @@ -0,0 +1,332 @@ +/** + * @name umi 的路由配置 + * @description 只支持 path,components,routes,redirect,wrappers,name,icon 的配置 + * @param path path 只支持两种占位符配置,第一种是动态参数 :id 的形式,第二种是 * 通配符,通配符只能出现路由字符串的最后。 + * @param components 配置 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 [ + { + path: '/user', + layout: false, + routes: [ + { + name: 'login', + path: '/user/login', + component: './User/Login/index1', + }, + ], + }, + { + path: '/welcome', + name: 'welcome', + component: 'Welcome/Welcome', + }, + { + path: '/admin', + name: 'admin', + + access: 'canAdmin', + routes: [ + { + path: '/admin', + redirect: '/admin/sub-page', + }, + { + path: '/admin/sub-page', + name: 'sub-page', + component: './Admin', + }, + ], + }, + + { + path: '/system', + + name: 'system', + + routes: [ + { + name: 'api-list', + path: '/system/api-list', + component: 'System/ApiList', + access: 'canReadMenu', + }, + { + name: 'menu-list', + path: '/system/menu-list', + component: 'System/MenuList', + access: 'canReadMenu', + }, + { + name: 'role-list', + path: '/system/role-list', + component: 'System/RoleList', + access: 'canReadMenu', + }, + { + name: 'user-list', + path: '/system/user-list', + component: 'System/UserList', + access: 'canReadMenu', + }, + { + name: 'post-list', + path: '/system/post-list', + component: 'System/PostList', + access: 'canReadMenu', + }, + { + name: 'department-list', + path: '/system/department-list', + component: 'System/DepartmentList', + access: 'canReadMenu', + }, + { + name: 'operation_record-list', + path: '/system/operation_record-list', + component: 'System/OperationRecordList', + access: 'canReadMenu', + }, + ], + }, + { + name: 'device', + path: '/device', + routes: [ + { + name: 'device-list', + path: '/device/device-list', + component: 'Device/DeviceList', + access: 'canReadMenu', + }, + { + name: 'device-category-list', + path: '/device/device-category-list', + component: 'Device/DeviceCategoryList', + access: 'canReadMenu', + }, + { + name: 'device-group-list', + path: '/device/device-group-list', + component: 'Device/DeviceGroupList', + access: 'canReadMenu', + }, + { + name: 'device-relation-list', + path: '/device/device-relation-list', + component: 'Device/DeviceRelationList', + access: 'canReadMenu', + }, + ], + }, + { + name: 'DCSDevice', + path: '/DCSDevice', + routes: [ + { + name: 'DCSDevice-device-group-list', + path: '/DCSDevice/device-group-list', + component: 'DCSDevice/DeviceGroupList', + access: 'canReadMenu', + }, + { + name: 'DCSDevice-device-category-list', + path: '/DCSDevice/device-category-list', + component: 'DCSDevice/DeviceCategoryList', + access: 'canReadMenu', + }, + { + name: 'DCSDevice-device-list', + path: '/DCSDevice/device-list', + component: 'DCSDevice/DeviceList', + access: 'canReadMenu', + }, + { + name: 'DCSDevice-device-status', + path: '/DCSDevice/device-status', + component: 'DCSDevice/DeviceStatus', + access: 'canReadMenu', + }, + ], + }, + { + name: 'resource', + path: '/resource', + routes: [ + { + name: 'algorithm-model-list', + + path: '/resource/algorithm-model-list', + component: 'Resource/AlgorithmModelList', + access: 'canReadMenu', + }, + { + name: 'algorithm-model-detail', + path: '/resource/algorithm-model-detail/:id', + component: 'Resource/AlgorithmModelList/detail', + access: 'canReadMenu', + isHideTab: true, + }, + { + name: 'business-image-list', + + path: '/resource/business-image-list', + component: 'Resource/BusinessImageList', + access: 'canReadMenu', + }, + { + name: 'model-category-list', + + path: '/resource/model-category-list', + component: 'Resource/ModelCategoryList', + access: 'canReadMenu', + }, + { + name: 'model-image-list', + path: '/resource/model-image-list', + component: 'Resource/ModelImageList', + access: 'canReadMenu', + }, + { + name: 'model-version-list', + path: '/resource/model-version-list', + component: 'Resource/ModelVersionList', + access: 'canReadMenu', + }, + { + name: 'resource-device-status', + path: '/resource/resource-device-status', + component: 'Resource/ResourceDeviceStatus', + access: 'canReadMenu', + }, + ], + }, + { + name: 'analysis', + path: '/analysis', + routes: [ + { + name: 'action-detection-list', + path: '/analysis/action-detection-list', + component: 'Analysis/ActionDetectionList', + access: 'canReadMenu', + }, + ], + }, + { + name: 'project', + path: '/project', + routes: [ + { + name: 'project-list', + + path: '/project/project-list', + component: 'Project/ProjectList', + access: 'canReadMenu', + }, + ], + }, + { + name: 'Contact', + path: '/Contact', + routes: [ + { + name: 'Contact-contact-list', + path: '/Contact/contact-list', + component: 'Contact/ContactList', + access: 'canReadMenu', + }, + ], + }, + { + name: 'task', + path: '/task', + component: 'Hidden', + }, + { + name: 'compute_power', + path: '/compute_power', + component: 'ComputePowerAllocation/ComputePowerAllocation', + }, + { + name: 'data_screen', + path: '/data_screen', + }, + { + name: 'algorithm_setting', + path: '/algorithm_setting', + component: 'Setting/AlgorithmSetting', + }, + { + name: 'alarm', + path: '/alarm', + routes: [ + { + name: 'alarm-list', + path: '/alarm/alarm-list', + component: 'Alarm/AlarmList', + access: 'canReadMenu', + }, + { + name: 'alarm-setting', + path: '/alarm/alarm-setting', + component: 'Alarm/AlarmSetting', + access: 'canReadMenu', + }, + { + name: 'alarm-ways', + path: '/alarm/alarm-ways', + component: 'Alarm/AlarmWays', + access: 'canReadMenu', + }, + ], + }, + { + name: 'logging', + path: 'http://192.168.10.96:5601/app/r/s/uDpRg', + }, + { + path: '/', + redirect: '/welcome', + }, + { + path: '*', + layout: false, + component: './404', + }, + { + name: 'fabricView', + path: '/fabricView', + routes: [ + { + name: 'fabricView-room', + path: '/fabricView/room', + component: 'FabricView/Room', + access: 'canReadMenu', + }, + ], + }, + { + name: 'notice', + path: '/notice', + component: 'Notice', + }, + { + name: 'account', + path: '/account', + routes: [ + { + name: 'center', + path: '/account/center', + component: 'Account/Center', + access: 'canReadMenu', + }, + ], + }, +]; diff --git a/config/routes.ts b/config/routes.ts new file mode 100644 index 0000000..e3ed45e --- /dev/null +++ b/config/routes.ts @@ -0,0 +1,351 @@ +/** + * @name umi 的路由配置 + * @description 只支持 path,components,routes,redirect,wrappers,name,icon 的配置 + * @param path path 只支持两种占位符配置,第一种是动态参数 :id 的形式,第二种是 * 通配符,通配符只能出现路由字符串的最后。 + * @param components 配置 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 [ + { + path: '/user', + layout: false, + routes: [ + { + name: 'login', + path: '/user/login', + component: './User/Login/index1', + }, + ], + }, + { + path: '/welcome', + name: 'welcome', + component: 'Welcome/Welcome', + }, + { + path: '/admin', + name: 'admin', + + access: 'canAdmin', + routes: [ + { + path: '/admin', + redirect: '/admin/sub-page', + }, + { + path: '/admin/sub-page', + name: 'sub-page', + component: './Admin', + }, + ], + }, + + { + path: '/system', + + name: 'system', + + routes: [ + { + name: 'api-list', + path: '/system/api-list', + component: 'System/ApiList', + access: 'canReadMenu', + }, + { + name: 'menu-list', + path: '/system/menu-list', + component: 'System/MenuList', + access: 'canReadMenu', + }, + { + name: 'role-list', + path: '/system/role-list', + component: 'System/RoleList', + access: 'canReadMenu', + }, + { + name: 'user-list', + path: '/system/user-list', + component: 'System/UserList', + access: 'canReadMenu', + }, + { + name: 'post-list', + path: '/system/post-list', + component: 'System/PostList', + access: 'canReadMenu', + }, + { + name: 'department-list', + path: '/system/department-list', + component: 'System/DepartmentList', + access: 'canReadMenu', + }, + { + name: 'operation_record-list', + path: '/system/operation_record-list', + component: 'System/OperationRecordList', + access: 'canReadMenu', + }, + { + name: 'parameter-setting', + path: '/system/parameter-setting', + component: 'System/ParameterSetting', + access: 'canReadMenu', + }, + ], + }, + { + name: 'device', + path: '/device', + routes: [ + { + name: 'device-list', + path: '/device/device-list', + component: 'Device/DeviceList', + access: 'canReadMenu', + }, + { + name: 'device-category-list', + path: '/device/device-category-list', + component: 'Device/DeviceCategoryList', + access: 'canReadMenu', + }, + { + name: 'device-group-list', + path: '/device/device-group-list', + component: 'Device/DeviceGroupList', + access: 'canReadMenu', + }, + { + name: 'device-relation-list', + path: '/device/device-relation-list', + component: 'Device/DeviceRelationList', + access: 'canReadMenu', + }, + ], + }, + { + name: 'DCSDevice', + path: '/DCSDevice', + routes: [ + { + name: 'DCSDevice-device-group-list', + path: '/DCSDevice/device-group-list', + component: 'DCSDevice/DeviceGroupList', + access: 'canReadMenu', + }, + { + name: 'DCSDevice-device-category-list', + path: '/DCSDevice/device-category-list', + component: 'DCSDevice/DeviceCategoryList', + access: 'canReadMenu', + }, + { + name: 'DCSDevice-device-list', + path: '/DCSDevice/device-list', + component: 'DCSDevice/DeviceList', + access: 'canReadMenu', + }, + { + name: 'DCSDevice-device-status', + path: '/DCSDevice/device-status', + component: 'DCSDevice/DeviceStatus', + access: 'canReadMenu', + }, + ], + }, + { + name: 'resource', + path: '/resource', + routes: [ + { + name: 'algorithm-model-list', + + path: '/resource/algorithm-model-list', + component: 'Resource/AlgorithmModelList', + access: 'canReadMenu', + }, + { + name: 'algorithm-model-detail', + path: '/resource/algorithm-model-detail/:id', + component: 'Resource/AlgorithmModelList/detail', + access: 'canReadMenu', + isHideTab: true, + }, + { + name: 'business-image-list', + + path: '/resource/business-image-list', + component: 'Resource/BusinessImageList', + access: 'canReadMenu', + }, + { + name: 'model-category-list', + + path: '/resource/model-category-list', + component: 'Resource/ModelCategoryList', + access: 'canReadMenu', + }, + { + name: 'model-image-list', + path: '/resource/model-image-list', + component: 'Resource/ModelImageList', + access: 'canReadMenu', + }, + { + name: 'model-version-list', + path: '/resource/model-version-list', + component: 'Resource/ModelVersionList', + access: 'canReadMenu', + }, + { + name: 'resource-device-status', + path: '/resource/resource-device-status', + component: 'Resource/ResourceDeviceStatus', + access: 'canReadMenu', + }, + { + name: 'server-status', + path: '/resource/server-status', + component: 'Resource/ServerStatus', + access: 'canReadMenu', + }, + ], + }, + { + name: 'analysis', + path: '/analysis', + routes: [ + { + name: 'action-detection-list', + path: '/analysis/action-detection-list', + component: 'Analysis/ActionDetectionList', + access: 'canReadMenu', + }, + ], + }, + { + name: 'project', + path: '/project', + routes: [ + { + name: 'project-list', + + path: '/project/project-list', + component: 'Project/ProjectList', + access: 'canReadMenu', + }, + ], + }, + { + name: 'Contact', + path: '/Contact', + routes: [ + { + name: 'Contact-contact-list', + path: '/Contact/contact-list', + component: 'Contact/ContactList', + access: 'canReadMenu', + }, + ], + }, + { + name: 'task', + path: '/task', + routes: [ + { + name: 'task-list', + path: '/task/task-list', + component: 'Task/TaskList', + access: 'canReadMenu', + }, + ], + }, + { + name: 'compute_power', + path: '/compute_power', + component: 'ComputePowerAllocation/ComputePowerAllocation', + }, + { + name: 'data_screen', + path: '/data_screen', + }, + { + name: 'algorithm_setting', + path: '/algorithm_setting', + component: 'Setting/AlgorithmSetting', + }, + { + name: 'alarm', + path: '/alarm', + routes: [ + { + name: 'alarm-list', + path: '/alarm/alarm-list', + component: 'Alarm/AlarmList', + access: 'canReadMenu', + }, + { + name: 'alarm-setting', + path: '/alarm/alarm-setting', + component: 'Alarm/AlarmSetting', + access: 'canReadMenu', + }, + { + name: 'alarm-ways', + path: '/alarm/alarm-ways', + component: 'Alarm/AlarmWays', + access: 'canReadMenu', + }, + ], + }, + { + name: 'logging', + path: 'http://192.168.10.96:5601/app/r/s/uDpRg', + }, + { + path: '/', + redirect: '/welcome', + }, + { + path: '*', + layout: false, + component: './404', + }, + { + name: 'fabricView', + path: '/fabricView', + routes: [ + { + name: 'fabricView-room', + path: '/fabricView/room', + component: 'FabricView/Room', + access: 'canReadMenu', + }, + ], + }, + { + name: 'notice', + path: '/notice', + component: 'Notice', + }, + { + name: 'account', + path: '/account', + routes: [ + { + name: 'center', + path: '/account/center', + component: 'Account/Center', + access: 'canReadMenu', + }, + ], + }, +]; diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 0000000..646cec2 --- /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(JSON.stringify(config)); + + return { + ...config, + testEnvironmentOptions: { + ...(config?.testEnvironmentOptions || {}), + url: 'http://localhost:8000', + }, + setupFiles: [...(config.setupFiles || []), './tests/setupTests.jsx'], + globals: { + ...config.globals, + localStorage: null, + }, + }; +}; diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..197bee5 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "jsx": "react-jsx", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + } +} diff --git a/mock/DCSDevice.ts b/mock/DCSDevice.ts new file mode 100644 index 0000000..b72112f --- /dev/null +++ b/mock/DCSDevice.ts @@ -0,0 +1,111 @@ +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 getDCSDeviceStatusList(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) as Array).forEach((key) => { + let nextSort = next?.[key] as number; + let preSort = prev?.[key] as number; + if (sorter[key] === 'descend') { + if (preSort - nextSort > 0) { + sortNumber += -1; + } else { + sortNumber += 1; + } + return; + } + if (preSort - nextSort > 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) as Array).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); +} + + +export default { + 'GET /api/mock/getDCSDeviceStatusList': getDCSDeviceStatusList, +}; diff --git a/mock/StaffEmployee.mock.ts b/mock/StaffEmployee.mock.ts new file mode 100644 index 0000000..f4ec50f --- /dev/null +++ b/mock/StaffEmployee.mock.ts @@ -0,0 +1,23 @@ +// @ts-ignore +import { Request, Response } from 'express'; + +export default { + 'POST /employee/createEmployee': (req: Request, res: Response) => { + res.status(200).send({}); + }, + 'DELETE /employee/deleteEmployee': (req: Request, res: Response) => { + res.status(200).send({}); + }, + 'DELETE /employee/deleteEmployeeByIds': (req: Request, res: Response) => { + res.status(200).send({}); + }, + 'POST /employee/getEmployeeById': (req: Request, res: Response) => { + res.status(200).send({}); + }, + 'POST /employee/getEmployeeList': (req: Request, res: Response) => { + res.status(200).send({}); + }, + 'PUT /employee/updateEmployee': (req: Request, res: Response) => { + res.status(200).send({}); + }, +}; diff --git a/mock/listTableList.ts b/mock/listTableList.ts new file mode 100644 index 0000000..35ec3ce --- /dev/null +++ b/mock/listTableList.ts @@ -0,0 +1,176 @@ +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) as Array).forEach((key) => { + let nextSort = next?.[key] as number; + let preSort = prev?.[key] as number; + if (sorter[key] === 'descend') { + if (preSort - nextSort > 0) { + sortNumber += -1; + } else { + sortNumber += 1; + } + return; + } + if (preSort - nextSort > 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) as Array).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/mock/modelDetail.ts b/mock/modelDetail.ts new file mode 100644 index 0000000..1a3a9e4 --- /dev/null +++ b/mock/modelDetail.ts @@ -0,0 +1,68 @@ +/* + * @Author: zhoux zhouxia@supervision.ltd + * @Date: 2023-11-09 14:29:49 + * @LastEditors: zhoux zhouxia@supervision.ltd + * @LastEditTime: 2023-11-09 15:34:50 + * @FilePath: \general-ai-platform-web\mock\modelDetail.ts + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +import { Request, Response } from 'express'; +import { parse } from 'url'; + +// mock tableListDataSource +const genData = (params: Record): Record => { + const data: Record = { + categoryFkId: 2, + createTime: '2023-10-20T06:23:56.158622Z', + defaultVersionFkId: null, + id: params.id, + name: '离岗', + remark: '', + updateTime: '2023-10-20T06:23:56.158622Z', + }; + + // 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), + + return data; +}; + +function getModelDetail(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; +// const params = parse(realUrl, true).query as unknown as API.PageParams & +// API.RuleListItem & { +// sorter: any; +// filter: any; +// }; +// console.log(req, 'getModelDetailApi'); + const result = { + data: genData({id: 2}), + success: true, + msg: '获取成功', + }; + + return res.json(result); +} + +export default { + 'GET /api/v1/mock/model/detail': getModelDetail, +}; diff --git a/mock/notices.ts b/mock/notices.ts new file mode 100644 index 0000000..616c921 --- /dev/null +++ b/mock/notices.ts @@ -0,0 +1,115 @@ +import { Request, Response } from 'express'; + +const getNotices = (req: Request, res: Response) => { + res.json({ + data: [ + { + id: '000000001', + 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', + title: '你推荐的 曲妮妮 已通过第三轮面试', + datetime: '2017-08-08', + type: 'notification', + }, + { + id: '000000003', + avatar: + 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/jHX5R5l3QjQAAAAAAAAAAAAAFl94AQBr', + title: '这种模板可以区分多种通知类型', + datetime: '2017-08-07', + read: true, + type: 'notification', + }, + { + id: '000000004', + 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', + title: '内容不要超过两行字,超出时自动截断', + datetime: '2017-08-07', + type: 'notification', + }, + { + id: '000000006', + avatar: + 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/eXLzRbPqQE4AAAAAAAAAAAAAFl94AQBr', + title: '曲丽丽 评论了你', + description: '描述信息描述信息描述信息', + datetime: '2017-08-07', + type: 'message', + clickClose: true, + }, + { + id: '000000007', + avatar: + 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/w5mRQY2AmEEAAAAAAAAAAAAAFl94AQBr', + title: '朱偏右 回复了你', + description: '这种模板用于提醒谁与你发生了互动,左侧放『谁』的头像', + datetime: '2017-08-07', + type: 'message', + clickClose: true, + }, + { + id: '000000008', + avatar: + 'https://mdn.alipayobjects.com/yuyan_qk0oxh/afts/img/wPadR5M9918AAAAAAAAAAAAAFl94AQBr', + 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/mock/requestRecord.mock.js b/mock/requestRecord.mock.js new file mode 100644 index 0000000..6c59e19 --- /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/mock/route.ts b/mock/route.ts new file mode 100644 index 0000000..418d10f --- /dev/null +++ b/mock/route.ts @@ -0,0 +1,5 @@ +export default { + '/api/auth_routes': { + '/form/advanced-form': { authority: ['admin', 'user'] }, + }, +}; diff --git a/mock/user.ts b/mock/user.ts new file mode 100644 index 0000000..75edd34 --- /dev/null +++ b/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/package.json b/package.json new file mode 100644 index 0000000..7836835 --- /dev/null +++ b/package.json @@ -0,0 +1,137 @@ +{ + "name": "ant-design-pro", + "version": "6.0.0", + "private": true, + "description": "An out-of-box UI solution for enterprise applications", + "scripts": { + "analyze": "cross-env ANALYZE=1 max build", + "build": "cross-env API_ENV=production 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", + "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 \"**/**.{js,jsx,tsx,ts,less,md,json}\" --end-of-line auto", + "openapi": "max openapi", + "prepare": "husky install", + "prettier": "prettier -c --write \"**/**.{js,jsx,tsx,ts,less,md,json}\"", + "preview": "npm run build && max preview --port 8000", + "record": "cross-env NODE_ENV=development REACT_APP_ENV=test max record --scene=login", + "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": "jest", + "test:coverage": "npm run jest -- --coverage", + "test:update": "npm run jest -- -u", + "tsc": "tsc --noEmit" + }, + "lint-staged": { + "**/*.{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": "^1.4.2", + "@ant-design/icons": "^4.8.0", + "@ant-design/pro-components": "^2.6.29", + "@ant-design/use-emotion-css": "1.0.4", + "@umijs/route-utils": "^2.2.2", + "antd": "^5.5.1", + "classnames": "^2.3.2", + "echarts": "^5.4.3", + "echarts-for-react": "^3.0.2", + "fabric": "^5.3.0", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "moment": "^2.29.4", + "omit.js": "^2.0.2", + "querystring": "^0.2.1", + "rc-menu": "^9.9.2", + "rc-util": "^5.32.2", + "react": "^18.2.0", + "react-cookies": "^0.1.1", + "react-dev-inspector": "^1.8.4", + "react-dom": "^18.2.0", + "react-helmet-async": "^1.3.0", + "video.js": "^8.5.2", + "webrtc-streamer": "^0.8.3-4-g2d0afce" + }, + "devDependencies": { + "@ant-design/pro-cli": "^2.1.5", + "@testing-library/react": "^13.4.0", + "@types/classnames": "^2.3.1", + "@types/express": "^4.17.17", + "@types/fabric": "^5.3.6", + "@types/history": "^4.7.11", + "@types/jest": "^29.5.1", + "@types/js-yaml": "^4.0.8", + "@types/lodash": "^4.14.195", + "@types/react": "^18.2.7", + "@types/react-dom": "^18.2.4", + "@types/react-helmet": "^6.1.6", + "@umijs/fabric": "^2.14.1", + "@umijs/lint": "^4.0.69", + "@umijs/max": "^4.0.69", + "cross-env": "^7.0.3", + "eslint": "^8.41.0", + "express": "^4.18.2", + "gh-pages": "^3.2.3", + "husky": "^7.0.4", + "jest": "^29.5.0", + "jest-environment-jsdom": "^29.5.0", + "lint-staged": "^10.5.4", + "mockjs": "^1.1.0", + "prettier": "^2.8.8", + "swagger-ui-dist": "^4.19.0", + "ts-node": "^10.9.1", + "typescript": "^5.0.0", + "umi-presets-pro": "^2.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "create-umi": { + "ignoreScript": [ + "docker*", + "functions*", + "site", + "generateMock" + ], + "ignoreDependencies": [ + "netlify*", + "serverless" + ], + "ignore": [ + ".dockerignore", + ".git", + ".github", + ".gitpod.yml", + "CODE_OF_CONDUCT.md", + "Dockerfile", + "Dockerfile.*", + "lambda", + "LICENSE", + "netlify.toml", + "README.*.md", + "azure-pipelines.yml", + "docker", + "CNAME", + "create-umi" + ] + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..00df6e2 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,20638 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@ant-design/charts': + specifier: ^1.4.2 + version: 1.4.2(@ant-design/icons@4.8.0)(antd@5.5.1)(classnames@2.3.2)(lodash@4.17.21)(react-dom@18.2.0)(react@18.2.0)(reflect-metadata@0.1.14) + '@ant-design/icons': + specifier: ^4.8.0 + version: 4.8.0(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-components': + specifier: ^2.6.29 + version: 2.6.29(antd@5.5.1)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/use-emotion-css': + specifier: 1.0.4 + version: 1.0.4(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@umijs/route-utils': + specifier: ^2.2.2 + version: 2.2.2 + antd: + specifier: ^5.5.1 + version: 5.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + classnames: + specifier: ^2.3.2 + version: 2.3.2 + echarts: + specifier: ^5.4.3 + version: 5.4.3 + echarts-for-react: + specifier: ^3.0.2 + version: 3.0.2(echarts@5.4.3)(react@18.2.0) + fabric: + specifier: ^5.3.0 + version: 5.3.0 + js-yaml: + specifier: ^4.1.0 + version: 4.1.0 + lodash: + specifier: ^4.17.21 + version: 4.17.21 + moment: + specifier: ^2.29.4 + version: 2.29.4 + omit.js: + specifier: ^2.0.2 + version: 2.0.2 + querystring: + specifier: ^0.2.1 + version: 0.2.1 + rc-menu: + specifier: ^9.9.2 + version: 9.9.2(react-dom@18.2.0)(react@18.2.0) + rc-util: + specifier: ^5.32.2 + version: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: + specifier: ^18.2.0 + version: 18.2.0 + react-cookies: + specifier: ^0.1.1 + version: 0.1.1 + react-dev-inspector: + specifier: ^1.8.4 + version: 1.8.4(eslint@8.41.0)(react@18.2.0)(typescript@5.0.2)(webpack@5.84.1) + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-helmet-async: + specifier: ^1.3.0 + version: 1.3.0(react-dom@18.2.0)(react@18.2.0) + video.js: + specifier: ^8.5.2 + version: 8.5.2 + webrtc-streamer: + specifier: ^0.8.3-4-g2d0afce + version: 0.8.3-4-g2d0afce + +devDependencies: + '@ant-design/pro-cli': + specifier: ^2.1.5 + version: 2.1.5 + '@testing-library/react': + specifier: ^13.4.0 + version: 13.4.0(react-dom@18.2.0)(react@18.2.0) + '@types/classnames': + specifier: ^2.3.1 + version: 2.3.1 + '@types/express': + specifier: ^4.17.17 + version: 4.17.17 + '@types/fabric': + specifier: ^5.3.6 + version: 5.3.6 + '@types/history': + specifier: ^4.7.11 + version: 4.7.11 + '@types/jest': + specifier: ^29.5.1 + version: 29.5.1 + '@types/js-yaml': + specifier: ^4.0.8 + version: 4.0.8 + '@types/lodash': + specifier: ^4.14.195 + version: 4.14.195 + '@types/react': + specifier: ^18.2.7 + version: 18.2.7 + '@types/react-dom': + specifier: ^18.2.4 + version: 18.2.4 + '@types/react-helmet': + specifier: ^6.1.6 + version: 6.1.6 + '@umijs/fabric': + specifier: ^2.14.1 + version: 2.14.1 + '@umijs/lint': + specifier: ^4.0.69 + version: 4.0.69(eslint@8.41.0)(jest@29.5.0)(styled-components@5.3.11)(stylelint@14.16.1)(typescript@5.0.2) + '@umijs/max': + specifier: ^4.0.69 + version: 4.0.69(@babel/core@7.22.1)(@types/node@20.2.5)(@types/react-dom@18.2.4)(@types/react@18.2.7)(dva@2.5.0-beta.2)(jest@29.5.0)(postcss@8.4.24)(prettier@2.8.8)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.11)(typescript@5.0.2)(webpack@5.84.1) + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + eslint: + specifier: ^8.41.0 + version: 8.41.0 + express: + specifier: ^4.18.2 + version: 4.18.2 + gh-pages: + specifier: ^3.2.3 + version: 3.2.3 + husky: + specifier: ^7.0.4 + version: 7.0.4 + jest: + specifier: ^29.5.0 + version: 29.5.0(@types/node@20.2.5)(ts-node@10.9.1) + jest-environment-jsdom: + specifier: ^29.5.0 + version: 29.5.0 + lint-staged: + specifier: ^10.5.4 + version: 10.5.4 + mockjs: + specifier: ^1.1.0 + version: 1.1.0 + prettier: + specifier: ^2.8.8 + version: 2.8.8 + swagger-ui-dist: + specifier: ^4.19.0 + version: 4.19.0 + ts-node: + specifier: ^10.9.1 + version: 10.9.1(@types/node@20.2.5)(typescript@5.0.2) + typescript: + specifier: ^5.0.0 + version: 5.0.2 + umi-presets-pro: + specifier: ^2.0.3 + version: 2.0.3(@types/react-dom@18.2.4)(@types/react@18.2.7)(antd@5.5.1)(dva@2.5.0-beta.2)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0)(umi@4.0.69) + +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.22(@types/react-dom@18.2.4)(@types/react@18.2.7)(antd@5.5.1)(dva@2.5.0-beta.2)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-6u2G48dsBj5s+BM2KhtyVDUqUhXkrOpSaqccSfA+HSJO9B4QeyjCpFZFNSL1pXBEd/M+f+e9bxQvipsuAmR+yg==} + dependencies: + '@alita/babel-transform-jsx-class': 0.0.2 + '@alita/inspx': 0.0.2(react@18.2.0) + '@alita/request': 3.1.1 + '@alita/types': 3.1.1 + '@umijs/bundler-utils': 4.0.59 + '@umijs/plugins': 4.0.59(@types/react-dom@18.2.4)(@types/react@18.2.7)(antd@5.5.1)(dva@2.5.0-beta.2)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@umijs/utils': 4.0.59 + ahooks: 3.7.7(react@18.2.0) + antd-mobile-alita: 2.3.4(react-dom@18.2.0)(react@18.2.0) + 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@3.7.2) + dva-immer: 1.0.1(dva@2.5.0-beta.2) + dva-loading: 3.0.24(dva-core@2.0.4) + history: 5.3.0 + react-redux: 7.2.9(react-dom@18.2.0)(react@18.2.0) + react-router-dom: 6.11.2(react-dom@18.2.0)(react@18.2.0) + redux: 4.2.1 + semver: 7.3.5 + transitivePeerDependencies: + - '@types/lodash.merge' + - '@types/react' + - '@types/react-dom' + - antd + - babel-plugin-styled-components + - debug + - dva + - rc-field-form + - react + - react-dom + - react-native + - shallowequal + - stylis + - supports-color + dev: true + + /@alita/request@3.1.1: + resolution: {integrity: sha512-edz76AKAanJo7u2V4seomF4chlHi4rfl9T1hTNbothmd786lEgdDGOnItqilc/twTiLZjECJS43Un4/pttalyQ==} + dependencies: + umi-request: 1.4.0 + dev: true + + /@alita/types@3.1.1: + resolution: {integrity: sha512-yxejISI2ZwHI1iQCTTXz2axNji3i4Wgfvg3u0c7HtjGpG3JKql0iTVGVHDXtEhIs2CKLb4+TBWcRhEDxW+mECg==} + dev: true + + /@amap/amap-jsapi-loader@1.0.1: + resolution: {integrity: sha512-nPyLKt7Ow/ThHLkSvn2etQlUzqxmTVgK7bIgwdBRTg2HK5668oN7xVxkaiRe3YZEzGzfV2XgH5Jmu2T73ljejw==} + dev: false + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + + /@ant-design/antd-theme-variable@1.0.0: + resolution: {integrity: sha512-0vr5GCwM7xlAl6NxG1lPbABO+SYioNJL3HVy2FA8wTlsIMoZvQwcwsxTw6eLQCiN9V2UQ8kBtfz8DW8utVVE5w==} + dev: true + + /@ant-design/charts@1.4.2(@ant-design/icons@4.8.0)(antd@5.5.1)(classnames@2.3.2)(lodash@4.17.21)(react-dom@18.2.0)(react@18.2.0)(reflect-metadata@0.1.14): + resolution: {integrity: sha512-BcVx6AAnwxSdzAVUZReSuvUVtnT5AkJivq3wmcYj17scll26HHficg35yimGskAj3Gu1upYjBQBz6Tk7GEMJsQ==} + peerDependencies: + '@ant-design/icons': ^4.6.0 + antd: ^4.6.3 + lodash: ^4.17.20 + react: '>=16.8.4' + react-dom: '>=16.8.4' + dependencies: + '@ant-design/flowchart': 1.2.2(@ant-design/icons@4.8.0)(antd@5.5.1)(classnames@2.3.2)(lodash@4.17.21)(react-dom@18.2.0)(react@18.2.0)(reflect-metadata@0.1.14) + '@ant-design/graphs': 1.4.1(react-dom@18.2.0)(react@18.2.0) + '@ant-design/icons': 4.8.0(react-dom@18.2.0)(react@18.2.0) + '@ant-design/maps': 1.0.8(react-dom@18.2.0)(react@18.2.0) + '@ant-design/plots': 1.2.6(react-dom@18.2.0)(react@18.2.0) + antd: 5.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - bufferutil + - classnames + - reflect-metadata + - utf-8-validate + dev: false + + /@ant-design/colors@4.0.5: + resolution: {integrity: sha512-3mnuX2prnWOWvpFTS2WH2LoouWlOgtnIpc6IarWN6GOzzLF8dW/U8UctuvIPhoboETehZfJ61XP+CGakBEPJ3Q==} + dependencies: + tinycolor2: 1.6.0 + dev: false + + /@ant-design/colors@6.0.0: + resolution: {integrity: sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==} + dependencies: + '@ctrl/tinycolor': 3.6.0 + + /@ant-design/colors@7.0.0: + resolution: {integrity: sha512-iVm/9PfGCbC0dSMBrz7oiEXZaaGH7ceU40OJEfKmyuzR9R5CRimJYPlRiFtMQGQcbNMea/ePcoIebi4ASGYXtg==} + dependencies: + '@ctrl/tinycolor': 3.6.0 + + /@ant-design/cssinjs@1.18.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-1JURAPrsjK1GwpqByTq3bJ7nF7lbMKDZpehqeR2n8/IR5O58/W1U4VcOeaw5ZyTHri3tEMcom7dyP2tvxpW54g==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.22.3 + '@emotion/hash': 0.8.0 + '@emotion/unitless': 0.7.5 + classnames: 2.3.2 + csstype: 3.1.2 + rc-util: 5.38.1(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + stylis: 4.2.0 + + /@ant-design/cssinjs@1.9.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-CZt1vCMs/sY7RoacYuIkZwQmb8Bhp99ReNNE9Y8lnUzik8fmCdKAQA7ecvVOFwmNFdcBHga7ye/XIRrsbkiqWw==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.22.3 + '@emotion/hash': 0.8.0 + '@emotion/unitless': 0.7.5 + classnames: 2.3.2 + csstype: 3.1.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + stylis: 4.2.0 + + /@ant-design/flowchart@1.2.2(@ant-design/icons@4.8.0)(antd@5.5.1)(classnames@2.3.2)(lodash@4.17.21)(react-dom@18.2.0)(react@18.2.0)(reflect-metadata@0.1.14): + resolution: {integrity: sha512-bzHZ81qqHjWIrXcCMInDB6eMTzbswaVCOAdUTCQJ+B45aybkVsU9LMCKquyOwRM7U7PWNfPC9S/lAlx2i2BvBQ==} + peerDependencies: + '@ant-design/icons': ^4.6.0 + antd: ^4.6.3 + lodash: ^4.17.20 + react: '>=16.8.4' + react-dom: '>=16.8.4' + dependencies: + '@ant-design/icons': 4.8.0(react-dom@18.2.0)(react@18.2.0) + '@antv/layout': 0.1.31 + '@antv/x6': 1.35.0 + '@antv/x6-react-components': 1.1.20(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@antv/x6-react-shape': 1.6.5(@antv/x6@1.35.0)(react-dom@18.2.0)(react@18.2.0) + '@antv/xflow': 1.1.52(@ant-design/icons@4.8.0)(antd@5.5.1)(classnames@2.3.2)(lodash@4.17.21)(react-dom@18.2.0)(react@18.2.0)(reflect-metadata@0.1.14) + antd: 5.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + lodash: 4.17.21 + react: 18.2.0 + react-color: 2.17.3(react@18.2.0) + react-dom: 18.2.0(react@18.2.0) + react-use: 17.3.1(react-dom@18.2.0)(react@18.2.0) + transitivePeerDependencies: + - classnames + - reflect-metadata + dev: false + + /@ant-design/graphs@1.4.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Qyj7Lnfo0gmbaMzm+9AdrS3fjkg2sFU/ZKaFl7xhgEf5LnX+N/KffIvoT8FsBmrZ9ni3onwlHs1dtYa5QdVhtQ==} + peerDependencies: + react: '>=16.8.4' + react-dom: '>=16.8.4' + dependencies: + '@antv/dom-util': 2.0.4 + '@antv/g6': 4.8.24 + '@antv/layout': 0.1.31 + '@antv/util': 2.0.17 + insert-css: 2.0.0 + react: 18.2.0 + react-content-loader: 5.1.4(react@18.2.0) + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@ant-design/icons-svg@4.2.1: + resolution: {integrity: sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw==} + + /@ant-design/icons@4.8.0(react-dom@18.2.0)(react@18.2.0): + 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.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /@ant-design/icons@5.1.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-vajYXDkzRQevAJwXgbFzVJ3970nKYqGjX+0+L5/FJcPbItSco32U1k06K9wC0OochLfL/z0U13JN1BsniqMYsA==} + 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.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /@ant-design/maps@1.0.8(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-q9Lv14Ekp7j24R9agrTXIINKc1/zslLXfTIWNuoZ0hUq7w1doyEhtLTsuF0n1wcgdKGjAX3wBKQRaVlgz+u8lw==} + peerDependencies: + react: '>=16.8.4' + react-dom: '>=16.8.4' + dependencies: + '@antv/l7': 2.20.8 + '@antv/l7plot': 0.5.7(@antv/l7@2.20.8) + '@antv/util': 2.0.17 + react: 18.2.0 + react-content-loader: 5.1.4(react@18.2.0) + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@ant-design/moment-webpack-plugin@0.0.3: + resolution: {integrity: sha512-MLm1FUpg02fP615ShQnCUN9la2E4RylDxKyolkGqAWTIHO4HyGM0A5x71AMALEyP/bC+UEEWBGSQ+D4/8hQ+ww==} + dev: true + + /@ant-design/plots@1.2.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-fFzB9DxRSPQa47S3WypRk4Rh+P8vBUuY/DT+IXgUrlKJtvVZUFnuYfjypX3Q/Pie2PEbI6gmskzXLxVF+3Ztvw==} + peerDependencies: + react: '>=16.8.4' + react-dom: '>=16.8.4' + dependencies: + '@antv/g2plot': 2.4.31 + '@antv/util': 2.0.17 + react: 18.2.0 + react-content-loader: 5.1.4(react@18.2.0) + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@ant-design/pro-card@2.5.19(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-0XzLvPAczdpPOQOklB+4t/xem8h7Ida6sdcNp+PHwlwHtK1HBhFl/JG7gjs3fn6ZZbFAxNDQrPpdAU5donrplQ==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + dependencies: + '@ant-design/icons': 5.1.3(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-provider': 2.13.1(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-utils': 2.14.7(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + antd: 4.24.10(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + omit.js: 2.0.2 + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + transitivePeerDependencies: + - react-dom + dev: true + + /@ant-design/pro-card@2.5.19(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-0XzLvPAczdpPOQOklB+4t/xem8h7Ida6sdcNp+PHwlwHtK1HBhFl/JG7gjs3fn6ZZbFAxNDQrPpdAU5donrplQ==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + dependencies: + '@ant-design/icons': 5.1.3(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-provider': 2.13.1(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-utils': 2.14.7(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + antd: 5.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + omit.js: 2.0.2 + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + 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.22.1 + '@babel/generator': 7.22.3 + '@babel/parser': 7.22.3 + '@babel/traverse': 7.22.1(supports-color@5.5.0) + '@babel/types': 7.22.3 + '@umijs/fabric': 2.14.1 + 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.11 + node-import-ts: 1.0.6 + ora: 5.4.1 + pngjs-image: 0.11.7 + prettier: 2.8.8 + rimraf: 3.0.2 + semver: 7.5.1 + typescript: 4.9.5 + 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.6.29(antd@4.24.10)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-7ikKRF6mePWac1m6swy/BMuc7kvm+OAmgQIi6xn5dzAIIqcLv0WZUJtjL15aAZLccS7WQGY4HDMp3sNAui7rqg==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@ant-design/pro-card': 2.5.19(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-descriptions': 2.5.14(antd@4.24.10)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-field': 2.13.0(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-form': 2.21.1(antd@4.24.10)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-layout': 7.17.7(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-list': 2.5.28(antd@4.24.10)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-provider': 2.13.1(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-skeleton': 2.1.7(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-table': 3.12.13(antd@4.24.10)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-utils': 2.14.7(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + antd: 4.24.10(react-dom@18.2.0)(react@18.2.0) + 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.6.29(antd@5.5.1)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-7ikKRF6mePWac1m6swy/BMuc7kvm+OAmgQIi6xn5dzAIIqcLv0WZUJtjL15aAZLccS7WQGY4HDMp3sNAui7rqg==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@ant-design/pro-card': 2.5.19(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-descriptions': 2.5.14(antd@5.5.1)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-field': 2.13.0(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-form': 2.21.1(antd@5.5.1)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-layout': 7.17.7(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-list': 2.5.28(antd@5.5.1)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-provider': 2.13.1(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-skeleton': 2.1.7(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-table': 3.12.13(antd@5.5.1)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-utils': 2.14.7(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + antd: 5.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + 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.5.14(antd@4.24.10)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-0h7ONe5xYzbfempLTWdRdfcbBy5Ein1Z45lx0oq+n5BaObYM2MVeTS8vK7GskrbLlLnvMlUpGiGle6tzn4OWtg==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + dependencies: + '@ant-design/pro-field': 2.13.0(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-form': 2.21.1(antd@4.24.10)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-skeleton': 2.1.7(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-utils': 2.14.7(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + antd: 4.24.10(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 0.2.6(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + transitivePeerDependencies: + - '@types/lodash.merge' + - rc-field-form + - react-dom + dev: true + + /@ant-design/pro-descriptions@2.5.14(antd@5.5.1)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-0h7ONe5xYzbfempLTWdRdfcbBy5Ein1Z45lx0oq+n5BaObYM2MVeTS8vK7GskrbLlLnvMlUpGiGle6tzn4OWtg==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + dependencies: + '@ant-design/pro-field': 2.13.0(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-form': 2.21.1(antd@5.5.1)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-skeleton': 2.1.7(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-utils': 2.14.7(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + antd: 5.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 0.2.6(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + transitivePeerDependencies: + - '@types/lodash.merge' + - rc-field-form + - react-dom + + /@ant-design/pro-field@2.13.0(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-i3n9bprPAITpTPR76AkjSMGls/j02q20lUXfymV1Fb/lUoILQGpw6r17pO6OnH/eSG6dDGxnsQn1z9AnAScA7w==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + dependencies: + '@ant-design/icons': 5.1.3(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-provider': 2.13.1(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-utils': 2.14.7(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + '@chenshuai2144/sketch-color': 1.0.9(react@18.2.0) + antd: 4.24.10(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + dayjs: 1.11.10 + lodash.tonumber: 4.0.3 + omit.js: 2.0.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + swr: 2.1.5(react@18.2.0) + transitivePeerDependencies: + - react-dom + dev: true + + /@ant-design/pro-field@2.13.0(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-i3n9bprPAITpTPR76AkjSMGls/j02q20lUXfymV1Fb/lUoILQGpw6r17pO6OnH/eSG6dDGxnsQn1z9AnAScA7w==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + dependencies: + '@ant-design/icons': 5.1.3(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-provider': 2.13.1(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-utils': 2.14.7(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + '@chenshuai2144/sketch-color': 1.0.9(react@18.2.0) + antd: 5.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + dayjs: 1.11.10 + lodash.tonumber: 4.0.3 + omit.js: 2.0.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + swr: 2.1.5(react@18.2.0) + transitivePeerDependencies: + - react-dom + + /@ant-design/pro-form@2.21.1(antd@4.24.10)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wu3o0GzM4PSL4KnH9IY8z3f2QXGjzGrl8H+SLIUFxZOazq5xcZo6xbDxLu/mVDn1XUjKFHHjetJtuJ6qcBaYmA==} + peerDependencies: + '@types/lodash.merge': ^4.6.7 + antd: '>=4.23.0 || >=5.0.0' + rc-field-form: ^1.22.0 + react: '>=17.0.0' + react-dom: '>=17.0.0' + peerDependenciesMeta: + '@types/lodash.merge': + optional: true + dependencies: + '@ant-design/icons': 5.1.3(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-field': 2.13.0(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-provider': 2.13.1(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-utils': 2.14.7(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + '@chenshuai2144/sketch-color': 1.0.9(react@18.2.0) + '@umijs/use-params': 1.0.9(react@18.2.0) + antd: 4.24.10(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + dayjs: 1.11.10 + lodash.merge: 4.6.2 + omit.js: 2.0.2 + rc-field-form: 1.32.0(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@ant-design/pro-form@2.21.1(antd@5.5.1)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wu3o0GzM4PSL4KnH9IY8z3f2QXGjzGrl8H+SLIUFxZOazq5xcZo6xbDxLu/mVDn1XUjKFHHjetJtuJ6qcBaYmA==} + peerDependencies: + '@types/lodash.merge': ^4.6.7 + antd: '>=4.23.0 || >=5.0.0' + rc-field-form: ^1.22.0 + react: '>=17.0.0' + react-dom: '>=17.0.0' + peerDependenciesMeta: + '@types/lodash.merge': + optional: true + dependencies: + '@ant-design/icons': 5.1.3(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-field': 2.13.0(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-provider': 2.13.1(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-utils': 2.14.7(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + '@chenshuai2144/sketch-color': 1.0.9(react@18.2.0) + '@umijs/use-params': 1.0.9(react@18.2.0) + antd: 5.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + dayjs: 1.11.10 + lodash.merge: 4.6.2 + omit.js: 2.0.2 + rc-field-form: 1.32.0(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /@ant-design/pro-layout@7.17.7(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-BTAC12mKWsImM2jKKteuL9dpozF5IL1txlWUoaG0sB6ihtDicc+5OOGtLHmhOiJZvJsZqpCfBaV311cmGJkctQ==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@ant-design/icons': 5.1.3(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-provider': 2.13.1(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-utils': 2.14.7(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + '@umijs/route-utils': 4.0.1 + '@umijs/use-params': 1.0.9(react@18.2.0) + antd: 4.24.10(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + lodash.merge: 4.6.2 + omit.js: 2.0.2 + path-to-regexp: 2.4.0 + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + swr: 2.1.5(react@18.2.0) + warning: 4.0.3 + dev: true + + /@ant-design/pro-layout@7.17.7(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-BTAC12mKWsImM2jKKteuL9dpozF5IL1txlWUoaG0sB6ihtDicc+5OOGtLHmhOiJZvJsZqpCfBaV311cmGJkctQ==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@ant-design/icons': 5.1.3(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-provider': 2.13.1(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-utils': 2.14.7(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + '@umijs/route-utils': 4.0.1 + '@umijs/use-params': 1.0.9(react@18.2.0) + antd: 5.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + lodash.merge: 4.6.2 + omit.js: 2.0.2 + path-to-regexp: 2.4.0 + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + swr: 2.1.5(react@18.2.0) + warning: 4.0.3 + + /@ant-design/pro-list@2.5.28(antd@4.24.10)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-zqS3mO/ptmhI39znDGUv/cTqeZEWL9J9vuAKQqiLeutBNyAID+r64k9976/bvtZJwfieVFBBGwhHtC96Lf8yNA==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@ant-design/icons': 5.1.3(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-card': 2.5.19(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-field': 2.13.0(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-table': 3.12.13(antd@4.24.10)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-utils': 2.14.7(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + antd: 4.24.10(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + dayjs: 1.11.10 + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 4.21.1 + 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-list@2.5.28(antd@5.5.1)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-zqS3mO/ptmhI39znDGUv/cTqeZEWL9J9vuAKQqiLeutBNyAID+r64k9976/bvtZJwfieVFBBGwhHtC96Lf8yNA==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@ant-design/icons': 5.1.3(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-card': 2.5.19(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-field': 2.13.0(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-table': 3.12.13(antd@5.5.1)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-utils': 2.14.7(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + antd: 5.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + dayjs: 1.11.10 + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 4.21.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@types/lodash.merge' + - rc-field-form + + /@ant-design/pro-provider@2.13.1(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-6oj2X2Rbr2tQ9lZeTX/g/Rojk1QypvewaDyAjQ18xbF4oL//zEWiDD/nvm0ng+K6IigyFYixkEVqf5NcOCSYEQ==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@ant-design/cssinjs': 1.18.1(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + '@ctrl/tinycolor': 3.6.0 + antd: 4.24.10(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + swr: 2.1.5(react@18.2.0) + dev: true + + /@ant-design/pro-provider@2.13.1(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-6oj2X2Rbr2tQ9lZeTX/g/Rojk1QypvewaDyAjQ18xbF4oL//zEWiDD/nvm0ng+K6IigyFYixkEVqf5NcOCSYEQ==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@ant-design/cssinjs': 1.18.1(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + '@ctrl/tinycolor': 3.6.0 + antd: 5.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + swr: 2.1.5(react@18.2.0) + + /@ant-design/pro-skeleton@2.1.7(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-5DLD319GTEfxe/GW/Pgja+QjWp89J1DJlKrKvjfQu9z5SCekKPxqG9KmB1F55/eHow1Oe+YjkaqSF55i0xK79Q==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@babel/runtime': 7.22.3 + antd: 4.24.10(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@ant-design/pro-skeleton@2.1.7(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-5DLD319GTEfxe/GW/Pgja+QjWp89J1DJlKrKvjfQu9z5SCekKPxqG9KmB1F55/eHow1Oe+YjkaqSF55i0xK79Q==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@babel/runtime': 7.22.3 + antd: 5.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /@ant-design/pro-table@3.12.13(antd@4.24.10)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-fj7NWHMI+SjKtXk43u38Z6bJUOEAwrvnJEZzc/bZK+KWy4rVu6da6b6xNW63EoJNvDLVFlqiITlJWjCHOyE8AQ==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + rc-field-form: ^1.22.0 + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@ant-design/icons': 5.1.3(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-card': 2.5.19(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-field': 2.13.0(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-form': 2.21.1(antd@4.24.10)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-provider': 2.13.1(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-utils': 2.14.7(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + '@dnd-kit/core': 6.1.0(react-dom@18.2.0)(react@18.2.0) + '@dnd-kit/modifiers': 6.0.1(@dnd-kit/core@6.1.0)(react@18.2.0) + '@dnd-kit/sortable': 7.0.2(@dnd-kit/core@6.1.0)(react@18.2.0) + '@dnd-kit/utilities': 3.2.2(react@18.2.0) + antd: 4.24.10(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + dayjs: 1.11.10 + omit.js: 2.0.2 + rc-field-form: 1.32.0(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@types/lodash.merge' + dev: true + + /@ant-design/pro-table@3.12.13(antd@5.5.1)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-fj7NWHMI+SjKtXk43u38Z6bJUOEAwrvnJEZzc/bZK+KWy4rVu6da6b6xNW63EoJNvDLVFlqiITlJWjCHOyE8AQ==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + rc-field-form: ^1.22.0 + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@ant-design/icons': 5.1.3(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-card': 2.5.19(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-field': 2.13.0(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-form': 2.21.1(antd@5.5.1)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-provider': 2.13.1(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-utils': 2.14.7(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + '@dnd-kit/core': 6.1.0(react-dom@18.2.0)(react@18.2.0) + '@dnd-kit/modifiers': 6.0.1(@dnd-kit/core@6.1.0)(react@18.2.0) + '@dnd-kit/sortable': 7.0.2(@dnd-kit/core@6.1.0)(react@18.2.0) + '@dnd-kit/utilities': 3.2.2(react@18.2.0) + antd: 5.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + dayjs: 1.11.10 + omit.js: 2.0.2 + rc-field-form: 1.32.0(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - '@types/lodash.merge' + + /@ant-design/pro-utils@2.14.7(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ilLo4IdFfJzlAtVinSsLweo6gU7+G0U1ykCRASwQ4pTFRKK7CHamsZaXZ2LCBvPqyKgt8Mc5wvrR8z0E+cZaPA==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@ant-design/icons': 5.1.3(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-provider': 2.13.1(antd@4.24.10)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + antd: 4.24.10(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + dayjs: 1.11.10 + lodash.merge: 4.6.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + safe-stable-stringify: 2.4.3 + swr: 2.1.5(react@18.2.0) + dev: true + + /@ant-design/pro-utils@2.14.7(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-ilLo4IdFfJzlAtVinSsLweo6gU7+G0U1ykCRASwQ4pTFRKK7CHamsZaXZ2LCBvPqyKgt8Mc5wvrR8z0E+cZaPA==} + peerDependencies: + antd: '>=4.23.0 || >=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@ant-design/icons': 5.1.3(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-provider': 2.13.1(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@babel/runtime': 7.22.3 + antd: 5.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + dayjs: 1.11.10 + lodash.merge: 4.6.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + safe-stable-stringify: 2.4.3 + swr: 2.1.5(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.22.3 + 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.1(react@18.2.0): + resolution: {integrity: sha512-ARM0TmpGdDuUVE10NwUCENQlJSInNKo5NiBjL5szu5BxWNEHNwQMcDrlVCqFbkvFLy+2CvywW8Y59QJtC0YDag==} + peerDependencies: + react: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + 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(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-PekXeeHCpSNi6ziV62gy2Yy2MijssiVMaCJbbyOmPbeZJYQmB4FecJwlB+e2WuIbSHQdM3O9pyN4Cx3GJKxJkA==} + peerDependencies: + antd: '>=5.0.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' + dependencies: + '@emotion/css': 11.11.0 + antd: 5.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@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 + + /@antv/adjust@0.2.5: + resolution: {integrity: sha512-MfWZOkD9CqXRES6MBGRNe27Q577a72EIwyMnE29wIlPliFvJfWwsrONddpGU7lilMpVKecS3WAzOoip3RfPTRQ==} + dependencies: + '@antv/util': 2.0.17 + tslib: 1.14.1 + dev: false + + /@antv/algorithm@0.1.26: + resolution: {integrity: sha512-DVhcFSQ8YQnMNW34Mk8BSsfc61iC1sAnmcfYoXTAshYHuU50p/6b7x3QYaGctDNKWGvi1ub7mPcSY0bK+aN0qg==} + dependencies: + '@antv/util': 2.0.17 + tslib: 2.6.2 + dev: false + + /@antv/async-hook@2.2.9: + resolution: {integrity: sha512-4BUp2ZUaTi2fYL67Ltkf6eV912rYJeSBokGhd5fhhnpUkMA1LEI1mg97Pqmx3yC50VEQ+LKXZxj9ePZs80ECfw==} + dependencies: + async: 3.2.5 + dev: false + + /@antv/attr@0.3.5: + resolution: {integrity: sha512-wuj2gUo6C8Q2ASSMrVBuTcb5LcV+Tc0Egiy6bC42D0vxcQ+ta13CLxgMmHz8mjD0FxTPJDXSciyszRSC5TdLsg==} + dependencies: + '@antv/color-util': 2.0.6 + '@antv/scale': 0.3.18 + '@antv/util': 2.0.17 + tslib: 2.5.2 + dev: false + + /@antv/color-util@2.0.6: + resolution: {integrity: sha512-KnPEaAH+XNJMjax9U35W67nzPI+QQ2x27pYlzmSIWrbj4/k8PGrARXfzDTjwoozHJY8qG62Z+Ww6Alhu2FctXQ==} + dependencies: + '@antv/util': 2.0.17 + tslib: 2.5.2 + dev: false + + /@antv/component@0.8.35: + resolution: {integrity: sha512-VnRa5X77nBPI952o2xePEEMSNZ6g2mcUDrQY8mVL2kino/8TFhqDq5fTRmDXZyWyIYd4ulJTz5zgeSwAnX/INQ==} + dependencies: + '@antv/color-util': 2.0.6 + '@antv/dom-util': 2.0.4 + '@antv/g-base': 0.5.15 + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 2.0.15 + '@antv/scale': 0.3.18 + '@antv/util': 2.0.17 + fecha: 4.2.3 + tslib: 2.5.2 + dev: false + + /@antv/coord@0.3.1: + resolution: {integrity: sha512-rFE94C8Xzbx4xmZnHh2AnlB3Qm1n5x0VT3OROy257IH6Rm4cuzv1+tZaUBATviwZd99S+rOY9telw/+6C9GbRw==} + dependencies: + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/util': 2.0.17 + tslib: 2.5.2 + dev: false + + /@antv/dom-util@2.0.4: + resolution: {integrity: sha512-2shXUl504fKwt82T3GkuT4Uoc6p9qjCKnJ8gXGLSW4T1W37dqf9AV28aCfoVPHp2BUXpSsB+PAJX2rG/jLHsLQ==} + dependencies: + tslib: 2.5.2 + dev: false + + /@antv/event-emitter@0.1.3: + resolution: {integrity: sha512-4ddpsiHN9Pd4UIlWuKVK1C4IiZIdbwQvy9i7DUSI3xNJ89FPUFt8lxDYj8GzzfdllV0NkJTRxnG+FvLk0llidg==} + dev: false + + /@antv/g-base@0.5.15: + resolution: {integrity: sha512-QOtq50QpnKez9J75/Z8j2yZ7QDQdk8R8mVQJiHtaEO5eI7DM4ZbrsWff/Ew26JYmPWdq7nbRuARMAD4PX9uuLA==} + dependencies: + '@antv/event-emitter': 0.1.3 + '@antv/g-math': 0.1.9 + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 2.0.15 + '@antv/util': 2.0.17 + '@types/d3-timer': 2.0.3 + d3-ease: 1.0.7 + d3-interpolate: 3.0.1 + d3-timer: 1.0.10 + detect-browser: 5.3.0 + tslib: 2.5.2 + dev: false + + /@antv/g-canvas@0.5.14: + resolution: {integrity: sha512-IUGLEMIMAUYgaBMT8h3FTmYQYz7sjQkKWwh6Psqx+UPK86fySa+G8fMRrh1EqAL07jVB+GRnn6Ym+3FoFUgeFg==} + dependencies: + '@antv/g-base': 0.5.15 + '@antv/g-math': 0.1.9 + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 2.0.15 + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + tslib: 2.6.2 + dev: false + + /@antv/g-device-api@1.4.9: + resolution: {integrity: sha512-sMlDIegcakxN3C/JndgIDUkQqMsccvxmK40ZzEhgMOe4KUO8/XXfK3EDEC84qPyVAUW+lOke65YGURZmPC279w==} + dependencies: + '@antv/util': 3.3.5 + '@webgpu/types': 0.1.40 + eventemitter3: 5.0.1 + gl-matrix: 3.4.3 + tslib: 2.6.2 + dev: false + + /@antv/g-math@0.1.9: + resolution: {integrity: sha512-KHMSfPfZ5XHM1PZnG42Q2gxXfOitYveNTA7L61lR6mhZ8Y/aExsYmHqaKBsSarU0z+6WLrl9C07PQJZaw0uljQ==} + dependencies: + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + dev: false + + /@antv/g-svg@0.5.7: + resolution: {integrity: sha512-jUbWoPgr4YNsOat2Y/rGAouNQYGpw4R0cvlN0YafwOyacFFYy2zC8RslNd6KkPhhR3XHNSqJOuCYZj/YmLUwYw==} + dependencies: + '@antv/g-base': 0.5.15 + '@antv/g-math': 0.1.9 + '@antv/util': 2.0.17 + detect-browser: 5.3.0 + tslib: 2.6.2 + dev: false + + /@antv/g-webgpu-core@0.5.6: + resolution: {integrity: sha512-DPiH3GkAUiT0Q+LAKeImpI+IOQ/gP2w6HstYKivpFIpBPIvZ/9equM3icVrn1iDfDkZANVXQ1PppcO3xBv1ZTw==} + dependencies: + eventemitter3: 4.0.7 + gl-matrix: 3.4.3 + inversify: 5.1.1 + inversify-inject-decorators: 3.1.0 + probe.gl: 3.6.0 + reflect-metadata: 0.1.14 + dev: false + + /@antv/g-webgpu-core@0.7.2: + resolution: {integrity: sha512-xUMmop7f3Rs34zFYKXLqHhDR1CQTeDl/7vI7Sn3X/73BqJc3X3HIIRvm83Fg2CjVACaOzw4WeLRXNaOCp9fz9w==} + dependencies: + eventemitter3: 4.0.7 + gl-matrix: 3.4.3 + lodash: 4.17.21 + probe.gl: 3.6.0 + dev: false + + /@antv/g-webgpu-engine@0.5.6: + resolution: {integrity: sha512-D311qYUefdEFwLayutIHqucrAY3cAGH3BdnXS37nq+0nsglrHcNP0Ab1YTinn9RihLoY3yXFTLzrYkJHJbZXDg==} + dependencies: + '@antv/g-webgpu-core': 0.5.6 + '@webgpu/glslang': 0.0.15 + '@webgpu/types': 0.0.31 + gl-matrix: 3.4.3 + hammerjs: 2.0.8 + inversify: 5.1.1 + inversify-inject-decorators: 3.1.0 + probe.gl: 3.6.0 + reflect-metadata: 0.1.14 + regl: 1.7.0 + dev: false + + /@antv/g-webgpu-engine@0.7.2: + resolution: {integrity: sha512-lx8Y93IW2cnJvdoDRKyMmTdYqSC1pOmF0nyG3PGGyA0NI9vBYVgO0KTF6hkyWjdTWVq7XDZyf/h8CJridLh3lg==} + dependencies: + '@antv/g-webgpu-core': 0.7.2 + gl-matrix: 3.4.3 + lodash: 4.17.21 + regl: 1.7.0 + dev: false + + /@antv/g-webgpu@0.5.5: + resolution: {integrity: sha512-TxtBniINFq1jFGEPo46xjJfrbJbUqkFd5wmsRs3tcg/7J7xoldOP1kEadpI3AJG9knMYdE92VpILw1VPd6DgzQ==} + dependencies: + '@antv/g-webgpu-core': 0.5.6 + '@antv/g-webgpu-engine': 0.5.6 + '@webgpu/types': 0.0.31 + gl-matrix: 3.4.3 + gl-vec2: 1.3.0 + hammerjs: 2.0.8 + inversify: 5.1.1 + inversify-inject-decorators: 3.1.0 + polyline-miter-util: 1.0.1 + polyline-normals: 2.0.2 + probe.gl: 3.6.0 + reflect-metadata: 0.1.14 + dev: false + + /@antv/g-webgpu@0.7.2: + resolution: {integrity: sha512-kw+oYGsdvj5qeUfy5DPb/jztZBV+2fmqBd3Vv8NlKatfBmv8AirYX/CCW74AUSdWm99rEiLyxFB1VdRZ6b/wnQ==} + dependencies: + '@antv/g-webgpu-core': 0.7.2 + '@antv/g-webgpu-engine': 0.7.2 + gl-matrix: 3.4.3 + gl-vec2: 1.3.0 + lodash: 4.17.21 + dev: false + + /@antv/g2@4.2.10: + resolution: {integrity: sha512-/ZlJ/DFJBCvtEQgE6roxdd6sBml0fZ8ZVfzG+HdjGpA7/ceURb8XkxUcqa0E8NV+e4sFijnaAhBCdUm2whiuyA==} + dependencies: + '@antv/adjust': 0.2.5 + '@antv/attr': 0.3.5 + '@antv/color-util': 2.0.6 + '@antv/component': 0.8.35 + '@antv/coord': 0.3.1 + '@antv/dom-util': 2.0.4 + '@antv/event-emitter': 0.1.3 + '@antv/g-base': 0.5.15 + '@antv/g-canvas': 0.5.14 + '@antv/g-svg': 0.5.7 + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 2.0.15 + '@antv/scale': 0.3.18 + '@antv/util': 2.0.17 + tslib: 2.5.2 + dev: false + + /@antv/g2plot@2.4.31: + resolution: {integrity: sha512-SlWHYVsJgRN7E1Oe5Qk6yWBrSWmctmloknFmklaqe9vEeK+YB9ZLUffZvtAHT10mA2NZ+VjGUhlnMNgR9M1PQg==} + dependencies: + '@antv/color-util': 2.0.6 + '@antv/event-emitter': 0.1.3 + '@antv/g-base': 0.5.15 + '@antv/g2': 4.2.10 + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 3.0.1 + '@antv/scale': 0.3.18 + '@antv/util': 2.0.17 + d3-hierarchy: 2.0.0 + d3-regression: 1.3.10 + fmin: 0.0.2 + pdfast: 0.2.0 + size-sensor: 1.0.2 + tslib: 2.5.2 + dev: false + + /@antv/g6-core@0.8.24: + resolution: {integrity: sha512-rgI3dArAD8uoSz2+skS4ctN4x/Of33ivTIKaEYYvClxgkLZWVz9zvocy+5AWcVPBHZsAXkZcdh9zndIoWY/33A==} + dependencies: + '@antv/algorithm': 0.1.26 + '@antv/dom-util': 2.0.4 + '@antv/event-emitter': 0.1.3 + '@antv/g-base': 0.5.15 + '@antv/g-math': 0.1.9 + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 2.0.15 + '@antv/util': 2.0.17 + ml-matrix: 6.11.0 + tslib: 2.6.2 + dev: false + + /@antv/g6-element@0.8.24(@antv/g6@4.8.24): + resolution: {integrity: sha512-61FXkt9LY+6EOUtSam1iFTOW2AM59sPVcV1BuPj4dXiD0dluLE+R7d8B/94g1tKDw9tsjhfUQGC7hTXscJRJFw==} + peerDependencies: + '@antv/g6': 4.8.24 + dependencies: + '@antv/g-base': 0.5.15 + '@antv/g6': 4.8.24 + '@antv/g6-core': 0.8.24 + '@antv/util': 2.0.17 + tslib: 2.6.2 + dev: false + + /@antv/g6-pc@0.8.24(@antv/g6@4.8.24): + resolution: {integrity: sha512-nf0y1lrp8J5DotqRryXd2S/J30COW8spVcLF9gUqywGqQAHfE00Ywkqr+PZBnsfCZXsXCi9o0+CE9NrkWs4SBQ==} + dependencies: + '@ant-design/colors': 4.0.5 + '@antv/algorithm': 0.1.26 + '@antv/dom-util': 2.0.4 + '@antv/event-emitter': 0.1.3 + '@antv/g-base': 0.5.15 + '@antv/g-canvas': 0.5.14 + '@antv/g-math': 0.1.9 + '@antv/g-svg': 0.5.7 + '@antv/g6-core': 0.8.24 + '@antv/g6-element': 0.8.24(@antv/g6@4.8.24) + '@antv/g6-plugin': 0.8.24(@antv/g6@4.8.24) + '@antv/hierarchy': 0.6.11 + '@antv/layout': 0.3.25(dagre@0.8.5) + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 2.0.15 + '@antv/util': 2.0.17 + color: 3.2.1 + d3-force: 2.1.1 + dagre: 0.8.5 + insert-css: 2.0.0 + ml-matrix: 6.11.0 + tslib: 2.6.2 + transitivePeerDependencies: + - '@antv/g6' + dev: false + + /@antv/g6-plugin@0.8.24(@antv/g6@4.8.24): + resolution: {integrity: sha512-ZIOnwLTC7SM2bFiJZ3vYFWnkyOCWKqnU96i/fBh1qAoY5slDS3hatenZWEXUtOcqaKw1h+5A5f72MRXqBBVn0g==} + peerDependencies: + '@antv/g6': 4.8.24 + dependencies: + '@antv/dom-util': 2.0.4 + '@antv/g-base': 0.5.15 + '@antv/g-canvas': 0.5.14 + '@antv/g-svg': 0.5.7 + '@antv/g6': 4.8.24 + '@antv/g6-core': 0.8.24 + '@antv/g6-element': 0.8.24(@antv/g6@4.8.24) + '@antv/matrix-util': 3.1.0-beta.3 + '@antv/path-util': 2.0.15 + '@antv/scale': 0.3.18 + '@antv/util': 2.0.17 + insert-css: 2.0.0 + dev: false + + /@antv/g6@4.8.24: + resolution: {integrity: sha512-bgj7sZ+z45JmOngIpYpwmSIg7SboMLZBoAlX0+RoAETZB3/xvZO0MXT3lCSyAhIgm5Sb68pekKi7OStuo04NyQ==} + dependencies: + '@antv/g6-pc': 0.8.24(@antv/g6@4.8.24) + dev: false + + /@antv/graphlib@1.2.0: + resolution: {integrity: sha512-hhJOMThec51nU4Fe5p/viLlNIL71uDEgYFzKPajWjr2715SFG1HAgiP6AVylIeqBcAZ04u3Lw7usjl/TuI5RuQ==} + dev: false + + /@antv/hierarchy@0.6.11: + resolution: {integrity: sha512-RJVhEMCuu4vj+Dt25lXIiNdd7jaqm/fqWGYikiELha4S5tnzdJoTUaUvvpfWlxLx4B0RsS9XRwBs1bOKN71TKg==} + dependencies: + '@antv/util': 2.0.17 + dev: false + + /@antv/l7-component@2.20.8: + resolution: {integrity: sha512-3pLKnkBYuVmUuDsTkWedLpnMLkATYa/C507pBoxlE6befnpfpX50FzbK1IzFsnD0sRUoz+9W/naStQi9vKe5kw==} + dependencies: + '@antv/l7-core': 2.20.8 + '@antv/l7-utils': 2.20.8 + '@babel/runtime': 7.22.3 + eventemitter3: 4.0.7 + inversify: 5.1.1 + reflect-metadata: 0.2.1 + supercluster: 7.1.5 + dev: false + + /@antv/l7-core@2.20.8: + resolution: {integrity: sha512-5y7BeU65KLi/2e1KFaCrZRiyPd23XhhZSoxvVzmbL8JF2vImw8SClH0RDkOed/ZVm9Kor45IoAEWu1wdqJl7Zg==} + dependencies: + '@antv/async-hook': 2.2.9 + '@antv/l7-utils': 2.20.8 + '@babel/runtime': 7.22.3 + '@mapbox/tiny-sdf': 1.2.5 + '@turf/helpers': 6.5.0 + ajv: 6.12.6 + element-resize-event: 3.0.6 + eventemitter3: 4.0.7 + gl-matrix: 3.4.3 + hammerjs: 2.0.8 + inversify: 5.1.1 + inversify-inject-decorators: 3.1.0 + reflect-metadata: 0.2.1 + viewport-mercator-project: 6.2.3 + dev: false + + /@antv/l7-layers@2.20.8: + resolution: {integrity: sha512-023c3lgSHvb/UXZgrBuInTPVDtCIwB1JklsfFxcB7yRK56BHnX+u9PL5ayGQ+2aEWHrfEPRm6Udsgie7JP0vig==} + dependencies: + '@antv/async-hook': 2.2.9 + '@antv/l7-core': 2.20.8 + '@antv/l7-maps': 2.20.8 + '@antv/l7-source': 2.20.8 + '@antv/l7-utils': 2.20.8 + '@babel/runtime': 7.22.3 + '@mapbox/martini': 0.2.0 + '@turf/clone': 6.5.0 + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + '@turf/polygon-to-line': 6.5.0 + '@turf/union': 6.5.0 + d3-array: 1.2.4 + d3-color: 1.4.1 + d3-interpolate: 1.4.0 + d3-scale: 2.2.2 + earcut: 2.2.4 + eventemitter3: 4.0.7 + extrude-polyline: 1.0.6 + gl-matrix: 3.4.3 + gl-vec2: 1.3.0 + inversify: 5.1.1 + polyline-miter-util: 1.0.1 + reflect-metadata: 0.1.14 + dev: false + + /@antv/l7-map@2.20.8: + resolution: {integrity: sha512-WsFvmzwLiwWmQLidLtOnkHd0NM/ZmGyeONhlKLoulwVCmV2n9RiNrqFnrstOBgLxPMITjpDiya9HXbpNGVoNLw==} + dependencies: + '@antv/l7-utils': 2.20.8 + '@babel/runtime': 7.22.3 + '@mapbox/point-geometry': 0.1.0 + '@mapbox/unitbezier': 0.0.0 + eventemitter3: 4.0.7 + gl-matrix: 3.4.3 + lodash-es: 4.17.21 + dev: false + + /@antv/l7-maps@2.20.8: + resolution: {integrity: sha512-P56Fba3c31Tn3nwUPk6rmo5B1MUPg1z/2yXfN7fWDNDMLNYDNRUuqTNMnG1OMTqswmAslMuvGV5Rw6+vbCJWfQ==} + dependencies: + '@amap/amap-jsapi-loader': 1.0.1 + '@antv/l7-core': 2.20.8 + '@antv/l7-map': 2.20.8 + '@antv/l7-utils': 2.20.8 + '@babel/runtime': 7.22.3 + gl-matrix: 3.4.3 + inversify: 5.1.1 + mapbox-gl: 1.13.3 + maplibre-gl: 3.6.2 + reflect-metadata: 0.2.1 + viewport-mercator-project: 6.2.3 + dev: false + + /@antv/l7-renderer@2.20.8: + resolution: {integrity: sha512-HvuqnjgwOuA2DJH1kcnSXPHSPhE3lpvCnUShXxUqFU2/Md7EqfkMJab7M5cpjEBO7FXNrLPTo5nqTOfous+51g==} + dependencies: + '@antv/g-device-api': 1.4.9 + '@antv/l7-core': 2.20.8 + '@antv/l7-utils': 2.20.8 + '@babel/runtime': 7.22.3 + inversify: 5.1.1 + reflect-metadata: 0.2.1 + regl: 1.6.1 + dev: false + + /@antv/l7-scene@2.20.8: + resolution: {integrity: sha512-n8OM1rNOav4KAaur4/uvaevgHR/qDuvpG/ccDophsX00rauwDBAZuarwKohhqJzqNSNvuPRNXVwRQZB/cRX+sg==} + dependencies: + '@antv/l7-component': 2.20.8 + '@antv/l7-core': 2.20.8 + '@antv/l7-layers': 2.20.8 + '@antv/l7-maps': 2.20.8 + '@antv/l7-renderer': 2.20.8 + '@antv/l7-utils': 2.20.8 + '@babel/runtime': 7.22.3 + eventemitter3: 4.0.7 + inversify: 5.1.1 + mapbox-gl: 1.13.3 + reflect-metadata: 0.1.14 + dev: false + + /@antv/l7-source@2.20.8: + resolution: {integrity: sha512-p8F0I7SzQWE1HuakwHvcc+48xFKrWwt2d/+GC33YUTDImGmSrMzGPGmjtBuYnbgc4P4f7bp4PcXnI1O/ee3KAg==} + dependencies: + '@antv/async-hook': 2.2.9 + '@antv/l7-core': 2.20.8 + '@antv/l7-utils': 2.20.8 + '@babel/runtime': 7.22.3 + '@mapbox/geojson-rewind': 0.5.2 + '@mapbox/vector-tile': 1.3.1 + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + '@turf/meta': 6.5.0 + d3-dsv: 1.2.0 + d3-hexbin: 0.2.2 + eventemitter3: 4.0.7 + geojson-vt: 3.2.1 + inversify: 5.1.1 + pbf: 3.2.1 + reflect-metadata: 0.2.1 + supercluster: 7.1.5 + dev: false + + /@antv/l7-utils@2.20.8: + resolution: {integrity: sha512-aUYEkD22KQcsDToTFRdv153u5WQEHhiDoQQEDECeIK0e2XmRyxeU5rg4WZSKosd5BHPTxPbmiUEWZgm+4SNFZg==} + dependencies: + '@babel/runtime': 7.22.3 + '@turf/bbox': 6.5.0 + '@turf/bbox-polygon': 6.5.0 + '@turf/helpers': 6.5.0 + d3-color: 1.4.1 + earcut: 2.2.4 + eventemitter3: 4.0.7 + gl-matrix: 3.4.3 + lodash: 4.17.21 + web-worker-helper: 0.0.3 + dev: false + + /@antv/l7@2.20.8: + resolution: {integrity: sha512-Q5hQQGGiiw4eJzZ0RPD+lFFE3/LZQJZHdp2Ofxv6n1W79i28TPr5I1j4pcySzVCZZRDbXLWuDKLGhPbdRSCoWg==} + dependencies: + '@antv/l7-component': 2.20.8 + '@antv/l7-core': 2.20.8 + '@antv/l7-layers': 2.20.8 + '@antv/l7-maps': 2.20.8 + '@antv/l7-scene': 2.20.8 + '@antv/l7-source': 2.20.8 + '@antv/l7-utils': 2.20.8 + '@babel/runtime': 7.22.3 + webpack-bundle-analyzer: 4.10.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@antv/l7plot-component@0.0.10: + resolution: {integrity: sha512-jnlg2Qm4tcUUuei+7fVk/HwRqhgxWnfdawOdB3C2u7YJqhkpk2mb7FPY+KGeZd+pqEQcAJTFi/1NeKpnZcP8kg==} + dependencies: + '@antv/dom-util': 2.0.4 + '@antv/util': 2.0.17 + dev: false + + /@antv/l7plot@0.5.7(@antv/l7@2.20.8): + resolution: {integrity: sha512-ujsrpH2DH2cvEUqyuZdI7w/jPs0PXiGKK87BjMrszIxh3VZ5vEEaF09OVQUqpCLPE7lB/JvJVYZw//iBPqbHTg==} + peerDependencies: + '@antv/l7': ^2.11.5 + dependencies: + '@antv/event-emitter': 0.1.3 + '@antv/l7': 2.20.8 + '@antv/l7plot-component': 0.0.10 + '@antv/util': 2.0.17 + lodash-es: 4.17.21 + topojson-client: 3.1.0 + dev: false + + /@antv/layout@0.1.31: + resolution: {integrity: sha512-iz9i19dOJGiZr5xBWI5sfG+2K3QVMNAGOBrbjWKH2RGLvGpf2TSFySidhz0siDrcQA46cDsjLmGstezQdgeGzA==} + dependencies: + '@antv/g-webgpu': 0.5.5 + '@dagrejs/graphlib': 2.1.4 + d3-force: 2.1.1 + ml-matrix: 6.11.0 + dev: false + + /@antv/layout@0.3.25(dagre@0.8.5): + resolution: {integrity: sha512-d29Aw1PXoAavMRZy7iTB9L5rMBeChFEX0BJ9ELP4TI35ySdCu07YbmPo9ju9OH/6sG2/NB3o85Ayxrre3iwX/g==} + dependencies: + '@antv/g-webgpu': 0.7.2 + '@antv/graphlib': 1.2.0 + '@antv/util': 3.3.5 + d3-force: 2.1.1 + d3-quadtree: 2.0.0 + dagre-compound: 0.0.11(dagre@0.8.5) + ml-matrix: 6.5.0 + transitivePeerDependencies: + - dagre + dev: false + + /@antv/matrix-util@3.0.4: + resolution: {integrity: sha512-BAPyu6dUliHcQ7fm9hZSGKqkwcjEDVLVAstlHULLvcMZvANHeLXgHEgV7JqcAV/GIhIz8aZChIlzM1ZboiXpYQ==} + dependencies: + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + tslib: 2.6.2 + dev: false + + /@antv/matrix-util@3.1.0-beta.3: + resolution: {integrity: sha512-W2R6Za3A6CmG51Y/4jZUM/tFgYSq7vTqJL1VD9dKrvwxS4sE0ZcXINtkp55CdyBwJ6Cwm8pfoRpnD4FnHahN0A==} + dependencies: + '@antv/util': 2.0.17 + gl-matrix: 3.4.3 + tslib: 2.5.2 + dev: false + + /@antv/path-util@2.0.15: + resolution: {integrity: sha512-R2VLZ5C8PLPtr3VciNyxtjKqJ0XlANzpFb5sE9GE61UQqSRuSVSzIakMxjEPrpqbgc+s+y8i+fmc89Snu7qbNw==} + dependencies: + '@antv/matrix-util': 3.0.4 + '@antv/util': 2.0.17 + tslib: 2.6.2 + dev: false + + /@antv/path-util@3.0.1: + resolution: {integrity: sha512-tpvAzMpF9Qm6ik2YSMqICNU5tco5POOW7S4XoxZAI/B0L26adU+Md/SmO0BBo2SpuywKvzPH3hPT3xmoyhr04Q==} + dependencies: + gl-matrix: 3.4.3 + lodash-es: 4.17.21 + tslib: 2.5.2 + dev: false + + /@antv/scale@0.3.18: + resolution: {integrity: sha512-GHwE6Lo7S/Q5fgaLPaCsW+CH+3zl4aXpnN1skOiEY0Ue9/u+s2EySv6aDXYkAqs//i0uilMDD/0/4n8caX9U9w==} + dependencies: + '@antv/util': 2.0.17 + fecha: 4.2.3 + tslib: 2.5.2 + dev: false + + /@antv/util@2.0.17: + resolution: {integrity: sha512-o6I9hi5CIUvLGDhth0RxNSFDRwXeywmt6ExR4+RmVAzIi48ps6HUy+svxOCayvrPBN37uE6TAc2KDofRo0nK9Q==} + dependencies: + csstype: 3.1.2 + tslib: 2.5.2 + dev: false + + /@antv/util@3.3.5: + resolution: {integrity: sha512-bVv1loamL/MgUEN9dNt7VKAsghO4Wgb+kzr8B9TgkM5tHgKk++xiTwi3pejIdgU8DDkzcyaRsO+VTOXJt8jLng==} + dependencies: + fast-deep-equal: 3.1.3 + flru: 1.0.2 + gl-matrix: 3.4.3 + tslib: 2.6.2 + dev: false + + /@antv/x6-react-components@1.1.20(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-HpQqjPCUo+jfcbfW2sr9oxuXMCxWnXxWvE8jXKJzvrlMNZ3kgfxNqMCRxwGi2QTCxLB3g/KYi5/n8kze8ui1/Q==} + peerDependencies: + antd: '>=4.4.2 || >=5.0.0-beta.0' + react: '>=16.8.6 || >=17.0.0' + react-dom: '>=16.8.6 || >=17.0.0' + dependencies: + antd: 5.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + clamp: 1.0.1 + classnames: 2.3.2 + rc-dropdown: 3.6.2(react-dom@18.2.0)(react@18.2.0) + rc-util: 4.21.1 + react: 18.2.0 + react-color: 2.17.1(react@18.2.0) + react-dom: 18.2.0(react@18.2.0) + react-resize-detector: 7.1.2(react-dom@18.2.0)(react@18.2.0) + ua-parser-js: 0.7.35 + dev: false + + /@antv/x6-react-shape@1.6.5(@antv/x6@1.35.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wdZWGluEuo1K9QIk0MSndiEcFtpHrMz6HlvswPQJhwxCiiEdC8q5eiP0zgPdfD1SjI3N3DUa8g2B93vrUJxQxw==} + peerDependencies: + '@antv/x6': ^1.x + react: '>=16.8.6 || >=17.0.0' + react-dom: '>=16.8.6 || >=17.0.0' + dependencies: + '@antv/x6': 1.35.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@antv/x6@1.35.0: + resolution: {integrity: sha512-OwpGQelMc/zEOfJwaAvkJQ88JYEbyGKYOjI5RhHXTvGj5NTkZgOnNTzVx0RzcZRfUGgjZ7YPYprSKsxa9+/gfw==} + dependencies: + csstype: 3.1.2 + jquery: 3.7.1 + jquery-mousewheel: 3.1.13 + lodash-es: 4.17.21 + mousetrap: 1.6.5 + utility-types: 3.10.0 + dev: false + + /@antv/xflow-core@1.1.52(@ant-design/icons@4.8.0)(@antv/x6-react-components@1.1.20)(@antv/x6-react-shape@1.6.5)(@antv/x6@1.35.0)(antd@5.5.1)(lodash@4.17.21)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-62CZeOLMXvDpKOqbq/8zoDt7MUjOkGh9dKBDbxL744UgZCN5Fx4SE+qRhK5purGixTq35XzZ+b9G5wdAX4rLjw==} + peerDependencies: + '@ant-design/icons': ^4.6.0 + '@antv/x6': ^1.30.1 + '@antv/x6-react-components': ^1.1.15 + '@antv/x6-react-shape': ^1.2.5 + antd: ^4.6.3 + lodash: ^4.17.20 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + '@ant-design/icons': 4.8.0(react-dom@18.2.0)(react@18.2.0) + '@antv/x6': 1.35.0 + '@antv/x6-react-components': 1.1.20(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@antv/x6-react-shape': 1.6.5(@antv/x6@1.35.0)(react-dom@18.2.0)(react@18.2.0) + '@antv/xflow-hook': 1.0.52 + antd: 5.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + immer: 9.0.21 + lodash: 4.17.21 + mana-common: 0.3.2 + mana-syringe: 0.2.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + reflect-metadata: 0.1.14 + rxjs: 6.6.7 + dev: false + + /@antv/xflow-extension@1.1.52(@ant-design/icons@4.8.0)(@antv/x6-react-components@1.1.20)(@antv/x6-react-shape@1.6.5)(@antv/x6@1.35.0)(antd@5.5.1)(classnames@2.3.2)(lodash@4.17.21)(react-dom@18.2.0)(react@18.2.0)(reflect-metadata@0.1.14): + resolution: {integrity: sha512-pPpx00xwucAkl5+QyxxWiOaRpKGnu0Z1+IDUEYuDvEKxms7+Ml0nDc4+CnDi1e1wr4hB3QgxgLOb0JpUTgBCfg==} + peerDependencies: + '@ant-design/icons': ^4.6.0 + '@antv/x6': ^1.30.1 + '@antv/x6-react-components': ^1.1.15 + '@antv/x6-react-shape': ^1.2.5 + antd: ^4.6.3 + classnames: ^2.2.6 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + reflect-metadata: ^0.1.13 + dependencies: + '@ant-design/icons': 4.8.0(react-dom@18.2.0)(react@18.2.0) + '@antv/x6': 1.35.0 + '@antv/x6-react-components': 1.1.20(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@antv/x6-react-shape': 1.6.5(@antv/x6@1.35.0)(react-dom@18.2.0)(react@18.2.0) + '@antv/xflow-core': 1.1.52(@ant-design/icons@4.8.0)(@antv/x6-react-components@1.1.20)(@antv/x6-react-shape@1.6.5)(@antv/x6@1.35.0)(antd@5.5.1)(lodash@4.17.21)(react-dom@18.2.0)(react@18.2.0) + '@antv/xflow-hook': 1.0.52 + antd: 5.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + mana-syringe: 0.2.2 + moment: 2.29.4 + rc-field-form: 1.32.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-color: 2.17.1(react@18.2.0) + react-dom: 18.2.0(react@18.2.0) + reflect-metadata: 0.1.14 + transitivePeerDependencies: + - lodash + dev: false + + /@antv/xflow-hook@1.0.52: + resolution: {integrity: sha512-qyheVO5bwhDjKGSldf3pkneowf8ZCydIIrX4n8LRTFpvVhVF9cPoXG9e6+1LhIFvSEaLAJcYBH4gNqAjRrbUYw==} + dependencies: + toposort: 2.0.2 + dev: false + + /@antv/xflow-hook@1.1.52: + resolution: {integrity: sha512-wQfJgCxZG/PYH4DhpcfOi8Js0gHlVmTMHYVJ4DZMvGPcuhEhic0vOtyd9cie0YPzWPufw6lBKtn3/0FY3yHapg==} + dependencies: + toposort: 2.0.2 + dev: false + + /@antv/xflow@1.1.52(@ant-design/icons@4.8.0)(antd@5.5.1)(classnames@2.3.2)(lodash@4.17.21)(react-dom@18.2.0)(react@18.2.0)(reflect-metadata@0.1.14): + resolution: {integrity: sha512-B2IApV4vG2DmMubbfXGjE+oKi2eXvPuijdHhbxwQheIWcm+VtVQscaFvwUexb4CHH5tBSnjtUeKrhRIkXop70w==} + peerDependencies: + '@ant-design/icons': ^4.6.0 + antd: ^4.6.3 + lodash: ^4.17.20 + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + '@ant-design/icons': 4.8.0(react-dom@18.2.0)(react@18.2.0) + '@antv/layout': 0.1.31 + '@antv/x6': 1.35.0 + '@antv/x6-react-components': 1.1.20(antd@5.5.1)(react-dom@18.2.0)(react@18.2.0) + '@antv/x6-react-shape': 1.6.5(@antv/x6@1.35.0)(react-dom@18.2.0)(react@18.2.0) + '@antv/xflow-core': 1.1.52(@ant-design/icons@4.8.0)(@antv/x6-react-components@1.1.20)(@antv/x6-react-shape@1.6.5)(@antv/x6@1.35.0)(antd@5.5.1)(lodash@4.17.21)(react-dom@18.2.0)(react@18.2.0) + '@antv/xflow-extension': 1.1.52(@ant-design/icons@4.8.0)(@antv/x6-react-components@1.1.20)(@antv/x6-react-shape@1.6.5)(@antv/x6@1.35.0)(antd@5.5.1)(classnames@2.3.2)(lodash@4.17.21)(react-dom@18.2.0)(react@18.2.0)(reflect-metadata@0.1.14) + '@antv/xflow-hook': 1.1.52 + antd: 5.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - classnames + - reflect-metadata + dev: false + + /@babel/cli@7.21.5(@babel/core@7.22.1): + resolution: {integrity: sha512-TOKytQ9uQW9c4np8F+P7ZfPINy5Kv+pizDIUwSVH8X5zHgYHV4AA8HE5LA450xXeu4jEfmUckTYvv1I4S26M/g==} + engines: {node: '>=6.9.0'} + hasBin: true + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@jridgewell/trace-mapping': 0.3.18 + 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.21.4: + resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + + /@babel/compat-data@7.22.3: + resolution: {integrity: sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ==} + engines: {node: '>=6.9.0'} + + /@babel/core@7.21.0: + resolution: {integrity: sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.22.3 + '@babel/helper-compilation-targets': 7.22.1(@babel/core@7.21.0) + '@babel/helper-module-transforms': 7.22.1 + '@babel/helpers': 7.22.3 + '@babel/parser': 7.22.3 + '@babel/template': 7.21.9 + '@babel/traverse': 7.22.1(supports-color@5.5.0) + '@babel/types': 7.22.3 + convert-source-map: 1.9.0 + debug: 4.3.4(supports-color@5.5.0) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/core@7.22.1: + resolution: {integrity: sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.22.3 + '@babel/helper-compilation-targets': 7.22.1(@babel/core@7.22.1) + '@babel/helper-module-transforms': 7.22.1 + '@babel/helpers': 7.22.3 + '@babel/parser': 7.22.3 + '@babel/template': 7.21.9 + '@babel/traverse': 7.22.1(supports-color@5.5.0) + '@babel/types': 7.22.3 + convert-source-map: 1.9.0 + debug: 4.3.4(supports-color@5.5.0) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + + /@babel/eslint-parser@7.19.1(@babel/core@7.21.0)(eslint@8.35.0): + 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.21.0 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.35.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.0 + dev: true + + /@babel/eslint-parser@7.19.1(@babel/core@7.21.0)(eslint@8.41.0): + 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.21.0 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.41.0 + eslint-visitor-keys: 2.1.0 + semver: 6.3.0 + dev: true + + /@babel/eslint-parser@7.21.8(@babel/core@7.22.1)(eslint@7.32.0): + resolution: {integrity: sha512-HLhI+2q+BP3sf78mFUZNCGc10KEmoUqtUT1OCdMZsN+qr4qFeLUod62/zAnF3jNQstwyasDkZnVXwfK2Bml7MQ==} + 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.22.1 + '@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.22.3: + resolution: {integrity: sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.3 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + 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.22.3 + dev: true + + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.3: + resolution: {integrity: sha512-ahEoxgqNoYXm0k22TvOke48i1PkavGu0qGCmcq9ugi6gnmvKNaMjKBSrZTnWUi1CFEeNAUiVba0Wtzm03aSkJg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.3 + dev: true + + /@babel/helper-compilation-targets@7.22.1(@babel/core@7.21.0): + resolution: {integrity: sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.22.3 + '@babel/core': 7.21.0 + '@babel/helper-validator-option': 7.21.0 + browserslist: 4.21.6 + lru-cache: 5.1.1 + semver: 6.3.0 + dev: true + + /@babel/helper-compilation-targets@7.22.1(@babel/core@7.22.1): + resolution: {integrity: sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.22.3 + '@babel/core': 7.22.1 + '@babel/helper-validator-option': 7.21.0 + browserslist: 4.21.6 + lru-cache: 5.1.1 + semver: 6.3.0 + + /@babel/helper-create-class-features-plugin@7.22.1(@babel/core@7.22.1): + resolution: {integrity: sha512-SowrZ9BWzYFgzUMwUmowbPSGu6CXL5MSuuCkG3bejahSpSymioPmuLdhPxNOc9MjuNGjy7M/HaXvJ8G82Lywlw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.22.1 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-member-expression-to-functions': 7.22.3 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-replace-supers': 7.22.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-split-export-declaration': 7.18.6 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-create-regexp-features-plugin@7.22.1(@babel/core@7.22.1): + resolution: {integrity: sha512-WWjdnfR3LPIe+0EY8td7WmjhytxXtjKAEpnAxun/hkNiyOaPlvGK+NZaBFIdi9ndYV3Gav7BpFvtUwnaJlwi1w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-annotate-as-pure': 7.18.6 + regexpu-core: 5.3.2 + semver: 6.3.0 + dev: true + + /@babel/helper-define-polyfill-provider@0.4.0(@babel/core@7.22.1): + resolution: {integrity: sha512-RnanLx5ETe6aybRi1cO/edaRH+bNYWaryCEmjDDYyNr4wnSzyOp8T0dWipmqVHKEY3AbVKUom50AKSlj1zmKbg==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-compilation-targets': 7.22.1(@babel/core@7.22.1) + '@babel/helper-plugin-utils': 7.21.5 + debug: 4.3.4(supports-color@5.5.0) + lodash.debounce: 4.0.8 + resolve: 1.22.2 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-environment-visitor@7.22.1: + resolution: {integrity: sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA==} + engines: {node: '>=6.9.0'} + + /@babel/helper-function-name@7.21.0: + resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.21.9 + '@babel/types': 7.22.3 + + /@babel/helper-hoist-variables@7.18.6: + resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.3 + + /@babel/helper-member-expression-to-functions@7.22.3: + resolution: {integrity: sha512-Gl7sK04b/2WOb6OPVeNy9eFKeD3L6++CzL3ykPOWqTn08xgYYK0wz4TUh2feIImDXxcVW3/9WQ1NMKY66/jfZA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.3 + dev: true + + /@babel/helper-module-imports@7.21.4: + resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.3 + + /@babel/helper-module-transforms@7.22.1: + resolution: {integrity: sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.22.1 + '@babel/helper-module-imports': 7.21.4 + '@babel/helper-simple-access': 7.21.5 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 + '@babel/template': 7.21.9 + '@babel/traverse': 7.22.1(supports-color@5.5.0) + '@babel/types': 7.22.3 + 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.22.3 + dev: true + + /@babel/helper-plugin-utils@7.21.5: + resolution: {integrity: sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-remap-async-to-generator@7.18.9(@babel/core@7.22.1): + resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.22.1 + '@babel/helper-wrap-function': 7.20.5 + '@babel/types': 7.22.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-replace-supers@7.22.1: + resolution: {integrity: sha512-ut4qrkE4AuSfrwHSps51ekR1ZY/ygrP1tp0WFm8oVq6nzc/hvfV/22JylndIbsf2U2M9LOMwiSddr6y+78j+OQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.22.1 + '@babel/helper-member-expression-to-functions': 7.22.3 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/template': 7.21.9 + '@babel/traverse': 7.22.1(supports-color@5.5.0) + '@babel/types': 7.22.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-simple-access@7.21.5: + resolution: {integrity: sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.3 + + /@babel/helper-skip-transparent-expression-wrappers@7.20.0: + resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.3 + 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.22.3 + + /@babel/helper-string-parser@7.21.5: + resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} + 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.21.0: + resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} + 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.21.0 + '@babel/template': 7.21.9 + '@babel/traverse': 7.22.1(supports-color@5.5.0) + '@babel/types': 7.22.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helpers@7.22.3: + resolution: {integrity: sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.21.9 + '@babel/traverse': 7.22.1(supports-color@5.5.0) + '@babel/types': 7.22.3 + 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.22.3: + resolution: {integrity: sha512-vrukxyW/ep8UD1UDzOYpTKQ6abgjFoeG6L+4ar9+c5TN9QnlqiOi6QK7LSR5ewm/ERyGkT/Ai6VboNrxhbr9Uw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.22.3 + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.18.6(@babel/core@7.22.1): + resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-6r4yRwEnorYByILoDRnEqxtojYKuiIv9FojW2E8GUKo9eWBwbKcd9IiZOZpdyXc64RmyGGyPu3/uAcrz/dq2kQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.22.1) + dev: true + + /@babel/plugin-external-helpers@7.18.6(@babel/core@7.22.1): + resolution: {integrity: sha512-wNqc87qjLvsD1PIMQBzLn1bMuTlGzqLzM/1VGQ22Wm51cbCWS9k71ydp5iZS4hjwQNuTWSn/xbZkkusNENwtZg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.1): + 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.22.1 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.1) + '@babel/helper-plugin-utils': 7.21.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-decorators@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-XjTKH3sHr6pPqG+hR1NCdVupwiosfdKM2oSMyKQVQ5Bym9l/p7BuLAqT5U32zZzRCfPq/TPRPzMiiTE9bOXU4w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.1) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-replace-supers': 7.22.1 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/plugin-syntax-decorators': 7.22.3(@babel/core@7.22.1) + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.22.1): + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.3 + '@babel/core': 7.22.1 + '@babel/helper-compilation-targets': 7.22.1(@babel/core@7.22.1) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.22.1) + dev: true + + /@babel/plugin-proposal-private-property-in-object@7.21.0(@babel/core@7.22.1): + resolution: {integrity: sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.1) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.1) + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.1): + resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} + engines: {node: '>=4'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.1) + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.1): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.1): + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.1): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.1): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-decorators@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-R16Zuge73+8/nLcDjkIpyhi5wIbN7i7fiuLJR8yQX7vPAa/ltUKtd3iLbb4AgP5nrLi91HnNUNosELIGUGH1bg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.1): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.1): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-import-assertions@7.20.0(@babel/core@7.22.1): + resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-import-attributes@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-i35jZJv6aO7hxEbIWQ41adVfOzjm9dcYDNeWlBMd8p0ZQRtNUCBrmGwZt+H5lb+oOC9a3svp956KP0oWGA1YsA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.1): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.1): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.22.1): + resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.1): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.1): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.1): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.1): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.1): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.1): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.1): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.1): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-typescript@7.21.4(@babel/core@7.22.1): + resolution: {integrity: sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.1): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.1) + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-arrow-functions@7.21.5(@babel/core@7.22.1): + resolution: {integrity: sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-async-generator-functions@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-36A4Aq48t66btydbZd5Fk0/xJqbpg/v4QWI4AH4cYHBXy9Mu42UOupZpebKFiCFNT9S9rJFcsld0gsv0ayLjtA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-environment-visitor': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.22.1) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.1) + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-async-to-generator@7.20.7(@babel/core@7.22.1): + resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-module-imports': 7.21.4 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-remap-async-to-generator': 7.18.9(@babel/core@7.22.1) + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-block-scoped-functions@7.18.6(@babel/core@7.22.1): + resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-block-scoping@7.21.0(@babel/core@7.22.1): + resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-class-properties@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-mASLsd6rhOrLZ5F3WbCxkzl67mmOnqik0zrg5W6D/X0QMW7HtvnoL1dRARLKIbMP3vXwkwziuLesPqWVGIl6Bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.1) + '@babel/helper-plugin-utils': 7.21.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-class-static-block@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-5BirgNWNOx7cwbTJCOmKFJ1pZjwk5MUfMIwiBBvsirCJMZeQgs5pk6i1OlkVg+1Vef5LfBahFOrdCnAWvkVKMw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.1) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.1) + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-classes@7.21.0(@babel/core@7.22.1): + resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-compilation-targets': 7.22.1(@babel/core@7.22.1) + '@babel/helper-environment-visitor': 7.22.1 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-replace-supers': 7.22.1 + '@babel/helper-split-export-declaration': 7.18.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-computed-properties@7.21.5(@babel/core@7.22.1): + resolution: {integrity: sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/template': 7.21.9 + dev: true + + /@babel/plugin-transform-destructuring@7.21.3(@babel/core@7.22.1): + resolution: {integrity: sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-dotall-regex@7.18.6(@babel/core@7.22.1): + resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.1) + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-duplicate-keys@7.18.9(@babel/core@7.22.1): + resolution: {integrity: sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-dynamic-import@7.22.1(@babel/core@7.22.1): + resolution: {integrity: sha512-rlhWtONnVBPdmt+jeewS0qSnMz/3yLFrqAP8hHC6EDcrYRSyuz9f9yQhHvVn2Ad6+yO9fHXac5piudeYrInxwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.1) + dev: true + + /@babel/plugin-transform-exponentiation-operator@7.18.6(@babel/core@7.22.1): + resolution: {integrity: sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.3 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-export-namespace-from@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-5Ti1cHLTDnt3vX61P9KZ5IG09bFXp4cDVFJIAeCZuxu9OXXJJZp5iP0n/rzM2+iAutJY+KWEyyHcRaHlpQ/P5g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.1) + dev: true + + /@babel/plugin-transform-for-of@7.21.5(@babel/core@7.22.1): + resolution: {integrity: sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-function-name@7.18.9(@babel/core@7.22.1): + resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-compilation-targets': 7.22.1(@babel/core@7.22.1) + '@babel/helper-function-name': 7.21.0 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-json-strings@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-IuvOMdeOOY2X4hRNAT6kwbePtK21BUyrAEgLKviL8pL6AEEVUVcqtRdN/HJXBLGIbt9T3ETmXRnFedRRmQNTYw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.1) + dev: true + + /@babel/plugin-transform-literals@7.18.9(@babel/core@7.22.1): + resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-logical-assignment-operators@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-CbayIfOw4av2v/HYZEsH+Klks3NC2/MFIR3QR8gnpGNNPEaq2fdlVCRYG/paKs7/5hvBLQ+H70pGWOHtlNEWNA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.1) + dev: true + + /@babel/plugin-transform-member-expression-literals@7.18.6(@babel/core@7.22.1): + resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-modules-amd@7.20.11(@babel/core@7.22.1): + resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-module-transforms': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-commonjs@7.21.2(@babel/core@7.22.1): + resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-module-transforms': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-simple-access': 7.21.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-commonjs@7.21.5(@babel/core@7.22.1): + resolution: {integrity: sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-module-transforms': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-simple-access': 7.21.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-systemjs@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-V21W3bKLxO3ZjcBJZ8biSvo5gQ85uIXW2vJfh7JSWf/4SLUSr1tOoHX3ruN4+Oqa2m+BKfsxTR1I+PsvkIWvNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-module-transforms': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-validator-identifier': 7.19.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-modules-umd@7.18.6(@babel/core@7.22.1): + resolution: {integrity: sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-module-transforms': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-named-capturing-groups-regex@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-c6HrD/LpUdNNJsISQZpds3TXvfYIAbo+efE9aWmY/PmSRD0agrJ9cPMt4BmArwUQ7ZymEWTFjTyp+yReLJZh0Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.1) + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-new-target@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-5RuJdSo89wKdkRTqtM9RVVJzHum9c2s0te9rB7vZC1zKKxcioWIy+xcu4OoIAjyFZhb/bp5KkunuLin1q7Ct+w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-nullish-coalescing-operator@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-CpaoNp16nX7ROtLONNuCyenYdY/l7ZsR6aoVa7rW7nMWisoNoQNIH5Iay/4LDyRjKMuElMqXiBoOQCDLTMGZiw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.1) + dev: true + + /@babel/plugin-transform-numeric-separator@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-+AF88fPDJrnseMh5vD9+SH6wq4ZMvpiTMHh58uLs+giMEyASFVhcT3NkoyO+NebFCNnpHJEq5AXO2txV4AGPDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.1) + dev: true + + /@babel/plugin-transform-object-rest-spread@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-38bzTsqMMCI46/TQnJwPPpy33EjLCc1Gsm2hRTF6zTMWnKsN61vdrpuzIEGQyKEhDSYDKyZHrrd5FMj4gcUHhw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.3 + '@babel/core': 7.22.1 + '@babel/helper-compilation-targets': 7.22.1(@babel/core@7.22.1) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.22.1) + dev: true + + /@babel/plugin-transform-object-super@7.18.6(@babel/core@7.22.1): + resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-replace-supers': 7.22.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-optional-catch-binding@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-bnDFWXFzWY0BsOyqaoSXvMQ2F35zutQipugog/rqotL2S4ciFOKlRYUu9djt4iq09oh2/34hqfRR2k1dIvuu4g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.1) + dev: true + + /@babel/plugin-transform-optional-chaining@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-63v3/UFFxhPKT8j8u1jTTGVyITxl7/7AfOqK8C5gz1rHURPUGe3y5mvIf68eYKGoBNahtJnTxBKug4BQOnzeJg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.1) + dev: true + + /@babel/plugin-transform-parameters@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-x7QHQJHPuD9VmfpzboyGJ5aHEr9r7DsAsdxdhJiTB3J3j8dyl+NFZ+rX5Q2RWFDCs61c06qBfS4ys2QYn8UkMw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-private-methods@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-fC7jtjBPFqhqpPAE+O4LKwnLq7gGkD3ZmC2E3i4qWH34mH3gOg2Xrq5YMHUq6DM30xhqM1DNftiRaSqVjEG+ug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.1) + '@babel/helper-plugin-utils': 7.21.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-private-property-in-object@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-C7MMl4qWLpgVCbXfj3UW8rR1xeCnisQ0cU7YJHV//8oNBS0aCIVg1vFnZXxOckHhEpQyqNNkWmvSEWnMLlc+Vw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.1) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.1) + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-property-literals@7.18.6(@babel/core@7.22.1): + resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-react-display-name@7.18.6(@babel/core@7.22.1): + 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.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-react-jsx-development@7.18.6(@babel/core@7.22.1): + resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.22.1) + dev: true + + /@babel/plugin-transform-react-jsx-self@7.21.0(@babel/core@7.22.1): + resolution: {integrity: sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.22.1): + resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-react-jsx@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-JEulRWG2f04a7L8VWaOngWiK6p+JOSpB+DAtwfJgOaej1qdbNxqtK7MwTBHjUA10NeFcszlFNqCdbRcirzh2uQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.21.4 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.1) + '@babel/types': 7.22.3 + dev: true + + /@babel/plugin-transform-react-pure-annotations@7.18.6(@babel/core@7.22.1): + resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-regenerator@7.21.5(@babel/core@7.22.1): + resolution: {integrity: sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + regenerator-transform: 0.15.1 + dev: true + + /@babel/plugin-transform-reserved-words@7.18.6(@babel/core@7.22.1): + resolution: {integrity: sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-shorthand-properties@7.18.6(@babel/core@7.22.1): + resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-spread@7.20.7(@babel/core@7.22.1): + resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + dev: true + + /@babel/plugin-transform-sticky-regex@7.18.6(@babel/core@7.22.1): + resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-template-literals@7.18.9(@babel/core@7.22.1): + resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-typeof-symbol@7.18.9(@babel/core@7.22.1): + resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-typescript@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-pyjnCIniO5PNaEuGxT28h0HbMru3qCVrMqVgVOz/krComdIrY9W6FCLBq9NWHY8HDGaUlan+UhmZElDENIfCcw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-create-class-features-plugin': 7.22.1(@babel/core@7.22.1) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.1) + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-unicode-escapes@7.21.5(@babel/core@7.22.1): + resolution: {integrity: sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-unicode-property-regex@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-5ScJ+OmdX+O6HRuMGW4kv7RL9vIKdtdAj9wuWUKy1wbHY3jaM/UlyIiC1G7J6UJiiyMukjjK0QwL3P0vBd0yYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.1) + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-unicode-regex@7.18.6(@babel/core@7.22.1): + resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.1) + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/plugin-transform-unicode-sets-regex@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-hNufLdkF8vqywRp+P55j4FHXqAX2LRUccoZHH7AFn1pq5ZOO2ISKW9w13bFZVjBoTqeve2HOgoJCcaziJVhGNw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-create-regexp-features-plugin': 7.22.1(@babel/core@7.22.1) + '@babel/helper-plugin-utils': 7.21.5 + dev: true + + /@babel/preset-env@7.22.2(@babel/core@7.22.1): + resolution: {integrity: sha512-UPNK9pgphMULvA2EMKIWHU90C47PKyuvQ8pE1MzH7l9PgFcRabdrHhlePpBuWxYZQ+TziP2nycKoI5C1Yhdm9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.3 + '@babel/core': 7.22.1 + '@babel/helper-compilation-targets': 7.22.1(@babel/core@7.22.1) + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-proposal-private-property-in-object': 7.21.0(@babel/core@7.22.1) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.1) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.1) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.1) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.22.1) + '@babel/plugin-syntax-import-attributes': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.1) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.1) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.1) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.1) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.1) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-transform-arrow-functions': 7.21.5(@babel/core@7.22.1) + '@babel/plugin-transform-async-generator-functions': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-transform-async-to-generator': 7.20.7(@babel/core@7.22.1) + '@babel/plugin-transform-block-scoped-functions': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-transform-block-scoping': 7.21.0(@babel/core@7.22.1) + '@babel/plugin-transform-class-properties': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-transform-class-static-block': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-transform-classes': 7.21.0(@babel/core@7.22.1) + '@babel/plugin-transform-computed-properties': 7.21.5(@babel/core@7.22.1) + '@babel/plugin-transform-destructuring': 7.21.3(@babel/core@7.22.1) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-transform-duplicate-keys': 7.18.9(@babel/core@7.22.1) + '@babel/plugin-transform-dynamic-import': 7.22.1(@babel/core@7.22.1) + '@babel/plugin-transform-exponentiation-operator': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-transform-export-namespace-from': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-transform-for-of': 7.21.5(@babel/core@7.22.1) + '@babel/plugin-transform-function-name': 7.18.9(@babel/core@7.22.1) + '@babel/plugin-transform-json-strings': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-transform-literals': 7.18.9(@babel/core@7.22.1) + '@babel/plugin-transform-logical-assignment-operators': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-transform-member-expression-literals': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-transform-modules-amd': 7.20.11(@babel/core@7.22.1) + '@babel/plugin-transform-modules-commonjs': 7.21.5(@babel/core@7.22.1) + '@babel/plugin-transform-modules-systemjs': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-transform-modules-umd': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-transform-new-target': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-transform-numeric-separator': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-transform-object-rest-spread': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-transform-object-super': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-transform-optional-catch-binding': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-transform-optional-chaining': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-transform-parameters': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-transform-private-methods': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-transform-private-property-in-object': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-transform-property-literals': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-transform-regenerator': 7.21.5(@babel/core@7.22.1) + '@babel/plugin-transform-reserved-words': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-transform-shorthand-properties': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-transform-spread': 7.20.7(@babel/core@7.22.1) + '@babel/plugin-transform-sticky-regex': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-transform-template-literals': 7.18.9(@babel/core@7.22.1) + '@babel/plugin-transform-typeof-symbol': 7.18.9(@babel/core@7.22.1) + '@babel/plugin-transform-unicode-escapes': 7.21.5(@babel/core@7.22.1) + '@babel/plugin-transform-unicode-property-regex': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-transform-unicode-regex': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-transform-unicode-sets-regex': 7.22.3(@babel/core@7.22.1) + '@babel/preset-modules': 0.1.5(@babel/core@7.22.1) + '@babel/types': 7.22.3 + babel-plugin-polyfill-corejs2: 0.4.3(@babel/core@7.22.1) + babel-plugin-polyfill-corejs3: 0.8.1(@babel/core@7.22.1) + babel-plugin-polyfill-regenerator: 0.5.0(@babel/core@7.22.1) + core-js-compat: 3.30.2 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-modules@0.1.5(@babel/core@7.22.1): + resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-transform-dotall-regex': 7.18.6(@babel/core@7.22.1) + '@babel/types': 7.22.3 + esutils: 2.0.3 + dev: true + + /@babel/preset-react@7.22.3(@babel/core@7.22.1): + resolution: {integrity: sha512-lxDz1mnZ9polqClBCVBjIVUypoB4qV3/tZUDb/IlYbW1kiiLaXaX+bInbRjl+lNQ/iUZraQ3+S8daEmoELMWug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-transform-react-display-name': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-transform-react-jsx': 7.22.3(@babel/core@7.22.1) + '@babel/plugin-transform-react-jsx-development': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-transform-react-pure-annotations': 7.18.6(@babel/core@7.22.1) + dev: true + + /@babel/preset-typescript@7.21.5(@babel/core@7.22.1): + resolution: {integrity: sha512-iqe3sETat5EOrORXiQ6rWfoOg2y68Cs75B9wNxdPW4kixJxh7aXQE1KPdWLDniC24T/6dSnguF33W9j/ZZQcmA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-plugin-utils': 7.21.5 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.1) + '@babel/plugin-transform-modules-commonjs': 7.21.5(@babel/core@7.22.1) + '@babel/plugin-transform-typescript': 7.22.3(@babel/core@7.22.1) + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + dev: true + + /@babel/runtime@7.21.0: + resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + dev: true + + /@babel/runtime@7.22.3: + resolution: {integrity: sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + + /@babel/template@7.21.9: + resolution: {integrity: sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.21.4 + '@babel/parser': 7.22.3 + '@babel/types': 7.22.3 + + /@babel/traverse@7.22.1(supports-color@5.5.0): + resolution: {integrity: sha512-lAWkdCoUFnmwLBhIRLciFntGYsIIoC6vIbN8zrLPqBnJmPu7Z6nzqnKd7FsxQUNAvZfVZ0x6KdNvNp8zWIOHSQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.21.4 + '@babel/generator': 7.22.3 + '@babel/helper-environment-visitor': 7.22.1 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.22.3 + '@babel/types': 7.22.3 + debug: 4.3.4(supports-color@5.5.0) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/types@7.22.3: + resolution: {integrity: sha512-P3na3xIQHTKY4L0YOG7pM8M8uoUIB910WQaSiiMCZUC2Cy8XFEQONGABFnHWBa2gpGKODTAJcNhi5Zk0sLRrzg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.21.5 + '@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.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.6.0 + + /@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(postcss@8.4.24): + 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.24) + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-font-format-keywords@1.0.1(postcss@8.4.24): + resolution: {integrity: sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-hwb-function@1.0.2(postcss@8.4.24): + resolution: {integrity: sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-ic-unit@1.0.1(postcss@8.4.24): + 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.24) + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-is-pseudo-class@2.0.7(postcss@8.4.24): + resolution: {integrity: sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13) + postcss: 8.4.24 + postcss-selector-parser: 6.0.13 + dev: true + + /@csstools/postcss-normalize-display-values@1.0.1(postcss@8.4.24): + resolution: {integrity: sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-oklab-function@1.1.1(postcss@8.4.24): + 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.24) + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-progressive-custom-properties@1.3.0(postcss@8.4.24): + resolution: {integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-stepped-value-functions@1.0.1(postcss@8.4.24): + resolution: {integrity: sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-unset-value@1.0.2(postcss@8.4.24): + resolution: {integrity: sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.24 + dev: true + + /@csstools/selector-specificity@2.2.0(postcss-selector-parser@6.0.13): + resolution: {integrity: sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.10 + dependencies: + postcss-selector-parser: 6.0.13 + dev: true + + /@ctrl/tinycolor@3.6.0: + resolution: {integrity: sha512-/Z3l6pXthq0JvMYdUFyX9j0MaCltlIn6mfh9jLyQwg5aPKxkyNa0PTHtU1AlFXLNk55ZuAeJRcpvq+tmLfKmaQ==} + engines: {node: '>=10'} + + /@dagrejs/graphlib@2.1.4: + resolution: {integrity: sha512-QCg9sL4uhjn468FDEsb/S9hS2xUZSrv/+dApb1Ze5VKO96pTXKNJZ6MGhIpgWkc1TVhbVGH9/7rq/Mf8/jWicw==} + dependencies: + lodash: 4.17.21 + dev: false + + /@discoveryjs/json-ext@0.5.7: + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + dev: false + + /@dnd-kit/accessibility@3.1.0(react@18.2.0): + resolution: {integrity: sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ==} + peerDependencies: + react: '>=16.8.0' + dependencies: + react: 18.2.0 + tslib: 2.5.2 + + /@dnd-kit/core@6.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-J3cQBClB4TVxwGo3KEjssGEXNJqGVWx17aRTZ1ob0FliR5IjYgTxl5YJbKTzA6IzrtelotH19v6y7uoIRUZPSg==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@dnd-kit/accessibility': 3.1.0(react@18.2.0) + '@dnd-kit/utilities': 3.2.2(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.5.2 + + /@dnd-kit/modifiers@6.0.1(@dnd-kit/core@6.1.0)(react@18.2.0): + resolution: {integrity: sha512-rbxcsg3HhzlcMHVHWDuh9LCjpOVAgqbV78wLGI8tziXY3+qcMQ61qVXIvNKQFuhj75dSfD+o+PYZQ/NUk2A23A==} + peerDependencies: + '@dnd-kit/core': ^6.0.6 + react: '>=16.8.0' + dependencies: + '@dnd-kit/core': 6.1.0(react-dom@18.2.0)(react@18.2.0) + '@dnd-kit/utilities': 3.2.2(react@18.2.0) + react: 18.2.0 + tslib: 2.5.2 + + /@dnd-kit/sortable@7.0.2(@dnd-kit/core@6.1.0)(react@18.2.0): + resolution: {integrity: sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==} + peerDependencies: + '@dnd-kit/core': ^6.0.7 + react: '>=16.8.0' + dependencies: + '@dnd-kit/core': 6.1.0(react-dom@18.2.0)(react@18.2.0) + '@dnd-kit/utilities': 3.2.2(react@18.2.0) + react: 18.2.0 + tslib: 2.5.2 + + /@dnd-kit/utilities@3.2.2(react@18.2.0): + resolution: {integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==} + peerDependencies: + react: '>=16.8.0' + dependencies: + react: 18.2.0 + tslib: 2.5.2 + + /@emotion/babel-plugin@11.11.0: + resolution: {integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==} + dependencies: + '@babel/helper-module-imports': 7.21.4 + '@babel/runtime': 7.22.3 + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/serialize': 1.1.2 + 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.2.0 + dev: false + + /@emotion/cache@11.11.0: + resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} + dependencies: + '@emotion/memoize': 0.8.1 + '@emotion/sheet': 1.2.2 + '@emotion/utils': 1.2.1 + '@emotion/weak-memoize': 0.3.1 + stylis: 4.2.0 + dev: false + + /@emotion/css@11.11.0: + resolution: {integrity: sha512-m4g6nKzZyiKyJ3WOfdwrBdcujVcpaScIWHAnyNKPm/A/xJKwfXPfQAbEVi1kgexWTDakmg+r2aDj0KvnMTo4oQ==} + dependencies: + '@emotion/babel-plugin': 11.11.0 + '@emotion/cache': 11.11.0 + '@emotion/serialize': 1.1.2 + '@emotion/sheet': 1.2.2 + '@emotion/utils': 1.2.1 + dev: false + + /@emotion/hash@0.8.0: + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + + /@emotion/hash@0.9.1: + resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} + dev: false + + /@emotion/is-prop-valid@1.2.1: + resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} + dependencies: + '@emotion/memoize': 0.8.1 + dev: true + + /@emotion/memoize@0.8.1: + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + + /@emotion/serialize@1.1.2: + resolution: {integrity: sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==} + dependencies: + '@emotion/hash': 0.9.1 + '@emotion/memoize': 0.8.1 + '@emotion/unitless': 0.8.1 + '@emotion/utils': 1.2.1 + csstype: 3.1.2 + dev: false + + /@emotion/sheet@1.2.2: + resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} + dev: false + + /@emotion/stylis@0.8.5: + resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==} + dev: true + + /@emotion/unitless@0.7.5: + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + + /@emotion/unitless@0.8.1: + resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} + + /@emotion/utils@1.2.1: + resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} + dev: false + + /@emotion/weak-memoize@0.3.1: + resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} + dev: false + + /@esbuild-kit/cjs-loader@2.4.2: + resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} + dependencies: + '@esbuild-kit/core-utils': 3.1.0 + get-tsconfig: 4.5.0 + dev: true + + /@esbuild-kit/core-utils@3.1.0: + resolution: {integrity: sha512-Uuk8RpCg/7fdHSceR1M6XbSZFSuMrxcePFuGgyvsBn+u339dk5OeL4jv2EojwTN2st/unJGsVm4qHWjWNmJ/tw==} + dependencies: + esbuild: 0.17.19 + source-map-support: 0.5.21 + dev: true + + /@esbuild-kit/esm-loader@2.5.5: + resolution: {integrity: sha512-Qwfvj/qoPbClxCRNuac1Du01r9gvNOT+pMYtJDapfB1eoGN1YlJ1BixLyL9WVENRx5RXgNLdfYdx/CuswlGhMw==} + dependencies: + '@esbuild-kit/core-utils': 3.1.0 + get-tsconfig: 4.5.0 + dev: true + + /@esbuild/android-arm64@0.16.17: + resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.17.19: + resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.16.17: + resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.17.19: + resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} + engines: {node: '>=12'} + cpu: [arm] + 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/android-x64@0.17.19: + resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} + 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-arm64@0.17.19: + resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} + 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/darwin-x64@0.17.19: + resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} + 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-arm64@0.17.19: + resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} + 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/freebsd-x64@0.17.19: + resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + 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-arm64@0.17.19: + resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + 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-arm@0.17.19: + resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} + engines: {node: '>=12'} + cpu: [arm] + 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 + optional: true + + /@esbuild/linux-ia32@0.17.19: + resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + 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-loong64@0.17.19: + resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} + 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-mips64el@0.17.19: + resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} + 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-ppc64@0.17.19: + resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} + 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-riscv64@0.17.19: + resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} + 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-s390x@0.17.19: + resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} + 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/linux-x64@0.17.19: + resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} + 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/netbsd-x64@0.17.19: + resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} + 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/openbsd-x64@0.17.19: + resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} + 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/sunos-x64@0.17.19: + resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} + 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-arm64@0.17.19: + resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} + 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-ia32@0.17.19: + resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} + 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 + + /@esbuild/win32-x64@0.17.19: + resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@7.32.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 7.32.0 + eslint-visitor-keys: 3.4.1 + dev: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.35.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.35.0 + eslint-visitor-keys: 3.4.1 + dev: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.41.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.41.0 + eslint-visitor-keys: 3.4.1 + + /@eslint-community/regexpp@4.5.1: + resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + /@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(supports-color@5.5.0) + espree: 7.3.1 + globals: 13.20.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@2.0.3: + resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4(supports-color@5.5.0) + espree: 9.5.2 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + /@eslint/js@8.35.0: + resolution: {integrity: sha512-JXdzbRiWclLVoD8sNUjR443VVlYqiYmDVT6rGUEIEHU5YJW0gaVZwV2xgM7D4arkvASqD0IlLUVjHiFuxaftRw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@eslint/js@8.41.0: + resolution: {integrity: sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + /@exodus/schemasafe@1.0.1: + resolution: {integrity: sha512-PQdbF8dGd4LnbwBlcc4ML8RKYdplm+e9sUeWBTr4zgF13/Shiuov9XznvM4T8cb1CfyKK21yTUkuAIIh/DAH/g==} + 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(@types/react@18.2.7)(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-tP2KEh7EHJr5hokSBHcPGojb+AorDNUf0NYfZGg/M+FsMvCOOsSEeEF0O1NDfETIzDnpbHnCs0DuvCFhSMSStg==} + deprecated: Package renamed to @floating-ui/react + dependencies: + '@floating-ui/react-dom': 0.6.3(@types/react@18.2.7)(react-dom@18.1.0)(react@18.1.0) + aria-hidden: 1.2.3 + point-in-polygon: 1.1.0 + use-isomorphic-layout-effect: 1.1.2(@types/react@18.2.7)(react@18.1.0) + transitivePeerDependencies: + - '@types/react' + - react + - react-dom + dev: true + + /@floating-ui/react-dom@0.6.3(@types/react@18.2.7)(react-dom@18.1.0)(react@18.1.0): + 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(@types/react@18.2.7)(react@18.1.0) + 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.5.2 + dev: true + + /@formatjs/fast-memoize@1.2.1: + resolution: {integrity: sha512-Rg0e76nomkz3vF9IPlKeV+Qynok0r7YZjL6syLz4/urSg0IbjPZCB/iYUMNsYA643gh4mgrX3T7KEIFIxJBQeg==} + dependencies: + tslib: 2.5.2 + 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.5.2 + dev: true + + /@formatjs/icu-skeleton-parser@1.3.6: + resolution: {integrity: sha512-I96mOxvml/YLrwU2Txnd4klA7V8fRhb6JG/4hm3VMNmeJo1F03IpV2L3wWt7EweqNLES59SZ4d6hVOPCSf80Bg==} + dependencies: + '@formatjs/ecma402-abstract': 1.11.4 + tslib: 2.5.2 + 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.5.2 + 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.8: + resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4(supports-color@5.5.0) + 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(supports-color@5.5.0) + 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==} + + /@iconify/types@2.0.0: + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + dev: true + + /@iconify/utils@2.1.1: + resolution: {integrity: sha512-H8xz74JDzDw8f0qLxwIaxFMnFkbXTZNWEufOk3WxaLFHV4h0A2FjIDgNk5LzC0am4jssnjdeJJdRs3UFu3582Q==} + dependencies: + '@antfu/install-pkg': 0.1.1 + '@antfu/utils': 0.7.2 + '@iconify/types': 2.0.0 + debug: 4.3.4(supports-color@5.5.0) + kolorist: 1.8.0 + local-pkg: 0.4.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@icons/material@0.2.4(react@18.2.0): + resolution: {integrity: sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==} + peerDependencies: + react: '*' + dependencies: + react: 18.2.0 + dev: false + + /@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.5.0: + resolution: {integrity: sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/node': 20.2.5 + chalk: 4.1.2 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + slash: 3.0.0 + dev: true + + /@jest/core@29.5.0(ts-node@10.9.1): + resolution: {integrity: sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==} + 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.5.0 + '@jest/reporters': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.2.5 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + ci-info: 3.8.0 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 29.5.0 + jest-config: 29.5.0(@types/node@20.2.5)(ts-node@10.9.1) + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-resolve-dependencies: 29.5.0 + jest-runner: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + jest-watcher: 29.5.0 + micromatch: 4.0.5 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /@jest/environment@29.5.0: + resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.2.5 + jest-mock: 29.5.0 + dev: true + + /@jest/expect-utils@29.5.0: + resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.4.3 + dev: true + + /@jest/expect@29.5.0: + resolution: {integrity: sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + expect: 29.5.0 + jest-snapshot: 29.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/fake-timers@29.5.0: + resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@sinonjs/fake-timers': 10.2.0 + '@types/node': 20.2.5 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-util: 29.5.0 + dev: true + + /@jest/globals@29.5.0: + resolution: {integrity: sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/types': 29.5.0 + jest-mock: 29.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@jest/reporters@29.5.0: + resolution: {integrity: sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==} + 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.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@jridgewell/trace-mapping': 0.3.18 + '@types/node': 20.2.5 + chalk: 4.1.2 + collect-v8-coverage: 1.0.1 + exit: 0.1.2 + glob: 7.2.3 + graceful-fs: 4.2.11 + 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.5.0 + jest-util: 29.5.0 + jest-worker: 29.5.0 + slash: 3.0.0 + string-length: 4.0.2 + strip-ansi: 6.0.1 + v8-to-istanbul: 9.1.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@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.25.24 + dev: true + + /@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.18 + callsites: 3.1.0 + graceful-fs: 4.2.11 + dev: true + + /@jest/test-result@29.5.0: + resolution: {integrity: sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.5.0 + '@jest/types': 29.5.0 + '@types/istanbul-lib-coverage': 2.0.4 + collect-v8-coverage: 1.0.1 + dev: true + + /@jest/test-sequencer@29.5.0: + resolution: {integrity: sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.5.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + slash: 3.0.0 + dev: true + + /@jest/transform@29.5.0: + resolution: {integrity: sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.22.1 + '@jest/types': 29.5.0 + '@jridgewell/trace-mapping': 0.3.18 + 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.11 + jest-haste-map: 29.5.0 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 + 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': 20.2.5 + '@types/yargs': 16.0.5 + chalk: 4.1.2 + dev: true + + /@jest/types@29.5.0: + resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.4.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 20.2.5 + '@types/yargs': 17.0.24 + chalk: 4.1.2 + dev: true + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 + + /@jridgewell/resolve-uri@3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + /@jridgewell/source-map@0.3.3: + resolution: {integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + + /@jridgewell/sourcemap-codec@1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@jridgewell/trace-mapping@0.3.18: + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + 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.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@ljharb/resumer@0.0.1: + resolution: {integrity: sha512-skQiAOrCfO7vRTq53cxznMpks7wS1va95UCidALlOVWqvBAzwPVErwizDwoMqNVMEn1mDq0utxZd02eIrvF1lw==} + engines: {node: '>= 0.4'} + dependencies: + '@ljharb/through': 2.3.11 + dev: false + + /@ljharb/through@2.3.11: + resolution: {integrity: sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + dev: false + + /@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.22.3 + 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.22.3 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + react-is: 16.13.1 + dev: true + + /@mapbox/geojson-rewind@0.5.2: + resolution: {integrity: sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==} + hasBin: true + dependencies: + get-stream: 6.0.1 + minimist: 1.2.8 + dev: false + + /@mapbox/geojson-types@1.0.2: + resolution: {integrity: sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw==} + dev: false + + /@mapbox/jsonlint-lines-primitives@2.0.2: + resolution: {integrity: sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==} + engines: {node: '>= 0.6'} + dev: false + + /@mapbox/mapbox-gl-supported@1.5.0(mapbox-gl@1.13.3): + resolution: {integrity: sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg==} + peerDependencies: + mapbox-gl: '>=0.32.1 <2.0.0' + dependencies: + mapbox-gl: 1.13.3 + dev: false + + /@mapbox/martini@0.2.0: + resolution: {integrity: sha512-7hFhtkb0KTLEls+TRw/rWayq5EeHtTaErgm/NskVoXmtgAQu/9D299aeyj6mzAR/6XUnYRp2lU+4IcrYRFjVsQ==} + dev: false + + /@mapbox/node-pre-gyp@1.0.11: + resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} + hasBin: true + dependencies: + detect-libc: 2.0.2 + https-proxy-agent: 5.0.1 + make-dir: 3.1.0 + node-fetch: 2.6.11 + nopt: 5.0.0 + npmlog: 5.0.1 + rimraf: 3.0.2 + semver: 7.5.1 + tar: 6.2.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + optional: true + + /@mapbox/point-geometry@0.1.0: + resolution: {integrity: sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==} + dev: false + + /@mapbox/tiny-sdf@1.2.5: + resolution: {integrity: sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw==} + dev: false + + /@mapbox/tiny-sdf@2.0.6: + resolution: {integrity: sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==} + dev: false + + /@mapbox/unitbezier@0.0.0: + resolution: {integrity: sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==} + dev: false + + /@mapbox/unitbezier@0.0.1: + resolution: {integrity: sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==} + dev: false + + /@mapbox/vector-tile@1.3.1: + resolution: {integrity: sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==} + dependencies: + '@mapbox/point-geometry': 0.1.0 + dev: false + + /@mapbox/whoots-js@3.1.0: + resolution: {integrity: sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==} + engines: {node: '>=6.0.0'} + dev: false + + /@maplibre/maplibre-gl-style-spec@19.3.3: + resolution: {integrity: sha512-cOZZOVhDSulgK0meTsTkmNXb1ahVvmTmWmfx9gRBwc6hq98wS9JP35ESIoNq3xqEan+UN+gn8187Z6E4NKhLsw==} + hasBin: true + dependencies: + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/unitbezier': 0.0.1 + json-stringify-pretty-compact: 3.0.0 + minimist: 1.2.8 + rw: 1.3.3 + sort-object: 3.0.3 + dev: false + + /@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 + + /@pkgr/utils@2.4.1: + resolution: {integrity: sha512-JOqwkgFEyi+OROIyq7l4Jy28h/WwhDnG/cPkXG2Z1iFbubB6jsHW1NDvmyOzTBxHr3yg68YGirmh1JUgMqa+9w==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.2.12 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.0.0 + tslib: 2.5.2 + dev: true + + /@pmmmwh/react-refresh-webpack-plugin@0.5.10(react-refresh@0.14.0)(webpack@5.84.1): + resolution: {integrity: sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==} + 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 <4.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.30.2 + 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.2 + source-map: 0.7.4 + webpack: 5.84.1 + dev: true + + /@polka/url@1.0.0-next.24: + resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + dev: false + + /@probe.gl/env@3.6.0: + resolution: {integrity: sha512-4tTZYUg/8BICC3Yyb9rOeoKeijKbZHRXBEKObrfPmX4sQmYB15ZOUpoVBhAyJkOYVAM8EkPci6Uw5dLCwx2BEQ==} + dependencies: + '@babel/runtime': 7.22.3 + dev: false + + /@probe.gl/log@3.6.0: + resolution: {integrity: sha512-hjpyenpEvOdowgZ1qMeCJxfRD4JkKdlXz0RC14m42Un62NtOT+GpWyKA4LssT0+xyLULCByRAtG2fzZorpIAcA==} + dependencies: + '@babel/runtime': 7.22.3 + '@probe.gl/env': 3.6.0 + dev: false + + /@probe.gl/stats@3.6.0: + resolution: {integrity: sha512-JdALQXB44OP4kUBN/UrQgzbJe4qokbVF4Y8lkIA8iVCFnjVowWIgkD/z/0QO65yELT54tTrtepw1jScjKB+rhQ==} + dependencies: + '@babel/runtime': 7.22.3 + dev: false + + /@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.22.3 + csstype: 3.1.2 + dev: true + + /@rc-component/color-picker@1.1.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-MKYqgEncpISQiZIaj8ykcdzZewgjslEfDo2iHg627jPnt+DbWIKG1T8MS55qXjuxkokgL0cNueyGnOndfaaNKw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + '@ctrl/tinycolor': 3.6.0 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /@rc-component/context@1.3.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-6QdaCJ7Wn5UZLJs15IEfqy4Ru3OaL5ctqpQYWd5rlfV9wwzrzdt6+kgAQZV/qdB0MUPN4nhyBfRembQCIvBf+w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + 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.22.3 + + /@rc-component/mutate-observer@1.0.0(react-dom@18.2.0)(react@18.2.0): + 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.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /@rc-component/portal@1.1.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-m8w3dFXX0H6UkJ4wtfrSwhe2/6M08uz24HHrF8pWfAXPwA9hwCuTE5per/C86KwNLouRpwFGcr7LfpHaa1F38g==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /@rc-component/tour@1.8.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-rrRGioHTLQlGca27G2+lw7QpRb3uuMYCUIJjj31/B44VCJS0P2tqYhOgtzvWQmaLMlWH3ZlpzotkKX13NT4XEA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + '@rc-component/portal': 1.1.1(react-dom@18.2.0)(react@18.2.0) + '@rc-component/trigger': 1.13.3(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /@rc-component/trigger@1.13.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-CA4s8QGj2kagp8dmYRVcSIW5IErw/YBxSeFEsQmt6SB0oaj9pj+akkB6O0S/Y6ww5JrIDu9Bukq89se1oW9F3w==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + '@rc-component/portal': 1.1.1(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-align: 4.0.15(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /@remix-run/router@1.6.2: + resolution: {integrity: sha512-LzqpSrMK/3JBAVBI9u3NWtOhWNw5AMQfrUFYB0+bDHTSw17z++WJLsPsxAuK+oSddsxk4d7F/JcdDPM1M5YAhA==} + engines: {node: '>=14'} + dev: true + + /@sinclair/typebox@0.25.24: + resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} + dev: true + + /@sinonjs/commons@3.0.0: + resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} + dependencies: + type-detect: 4.0.8 + dev: true + + /@sinonjs/fake-timers@10.2.0: + resolution: {integrity: sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==} + dependencies: + '@sinonjs/commons': 3.0.0 + dev: true + + /@stylelint/postcss-css-in-js@0.37.3(postcss-syntax@0.36.2)(postcss@7.0.39): + 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' + dependencies: + '@babel/core': 7.22.1 + postcss: 7.0.39 + postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39) + transitivePeerDependencies: + - supports-color + dev: true + + /@stylelint/postcss-css-in-js@0.38.0(postcss-syntax@0.36.2)(postcss@8.4.24): + 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' + dependencies: + '@babel/core': 7.21.0 + postcss: 8.4.24 + postcss-syntax: 0.36.2(postcss@8.4.24) + transitivePeerDependencies: + - supports-color + dev: true + + /@stylelint/postcss-markdown@0.36.2(postcss-syntax@0.36.2)(postcss@7.0.39): + 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(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39) + 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.22.1): + resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + dev: true + + /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.22.1): + resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + dev: true + + /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.22.1): + resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + dev: true + + /@svgr/babel-plugin-replace-jsx-attribute-value@6.5.1(@babel/core@7.22.1): + resolution: {integrity: sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + dev: true + + /@svgr/babel-plugin-svg-dynamic-title@6.5.1(@babel/core@7.22.1): + resolution: {integrity: sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + dev: true + + /@svgr/babel-plugin-svg-em-dimensions@6.5.1(@babel/core@7.22.1): + resolution: {integrity: sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + dev: true + + /@svgr/babel-plugin-transform-react-native-svg@6.5.1(@babel/core@7.22.1): + resolution: {integrity: sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + dev: true + + /@svgr/babel-plugin-transform-svg-component@6.5.1(@babel/core@7.22.1): + resolution: {integrity: sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==} + engines: {node: '>=12'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + dev: true + + /@svgr/babel-preset@6.5.1(@babel/core@7.22.1): + resolution: {integrity: sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==} + engines: {node: '>=10'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@svgr/babel-plugin-add-jsx-attribute': 6.5.1(@babel/core@7.22.1) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.22.1) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.22.1) + '@svgr/babel-plugin-replace-jsx-attribute-value': 6.5.1(@babel/core@7.22.1) + '@svgr/babel-plugin-svg-dynamic-title': 6.5.1(@babel/core@7.22.1) + '@svgr/babel-plugin-svg-em-dimensions': 6.5.1(@babel/core@7.22.1) + '@svgr/babel-plugin-transform-react-native-svg': 6.5.1(@babel/core@7.22.1) + '@svgr/babel-plugin-transform-svg-component': 6.5.1(@babel/core@7.22.1) + dev: true + + /@svgr/core@6.5.1: + resolution: {integrity: sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==} + engines: {node: '>=10'} + dependencies: + '@babel/core': 7.22.1 + '@svgr/babel-preset': 6.5.1(@babel/core@7.22.1) + '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.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.22.3 + entities: 4.5.0 + dev: true + + /@svgr/plugin-jsx@6.5.1(@svgr/core@6.5.1): + resolution: {integrity: sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==} + engines: {node: '>=10'} + peerDependencies: + '@svgr/core': ^6.0.0 + dependencies: + '@babel/core': 7.22.1 + '@svgr/babel-preset': 6.5.1(@babel/core@7.22.1) + '@svgr/core': 6.5.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.5.1): + resolution: {integrity: sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==} + engines: {node: '>=10'} + peerDependencies: + '@svgr/core': '*' + dependencies: + '@svgr/core': 6.5.1 + cosmiconfig: 7.1.0 + deepmerge: 4.3.1 + svgo: 2.8.0 + dev: true + + /@tanstack/match-sorter-utils@8.8.4: + resolution: {integrity: sha512-rKH8LjZiszWEvmi01NR72QWZ8m4xmXre0OOwlRGnjU01Eqz/QnN+cqpty2PJ0efHblq09+KilvyR7lsbzmXVEw==} + engines: {node: '>=12'} + dependencies: + remove-accents: 0.4.2 + dev: true + + /@tanstack/query-core@4.29.11: + resolution: {integrity: sha512-8C+hF6SFAb/TlFZyS9FItgNwrw4PMa7YeX+KQYe2ZAiEz6uzg6yIr+QBzPkUwZ/L0bXvGd1sufTm3wotoz+GwQ==} + dev: true + + /@tanstack/react-query-devtools@4.29.11(@tanstack/react-query@4.29.11)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-paOSRfNtUbeo3anTtKgRSaMGplAN2VilmzLR9a3lbVZVCF4EzvL1Xmp4Xv9cDN8kGuv2CZTvUP6lvyxPlKSpew==} + peerDependencies: + '@tanstack/react-query': 4.29.11 + 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.8.4 + '@tanstack/react-query': 4.29.11(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + superjson: 1.12.3 + use-sync-external-store: 1.2.0(react@18.2.0) + dev: true + + /@tanstack/react-query@4.29.11(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-aLaOAhBnCr12YKPjDsZOc0fAtkyaW7f9KfVfw49oYpfe0H9EPXBUgDBIKJ8qdHF3uGzTVSMcmpiw1Za41BLZlw==} + 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.29.11 + 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.20.0: + resolution: {integrity: sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA==} + engines: {node: '>=12'} + dependencies: + '@babel/code-frame': 7.21.4 + '@babel/runtime': 7.22.3 + '@types/aria-query': 5.0.1 + aria-query: 5.1.3 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + dev: true + + /@testing-library/react@13.4.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==} + engines: {node: '>=12'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@babel/runtime': 7.22.3 + '@testing-library/dom': 8.20.0 + '@types/react-dom': 18.2.4 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@tootallnate/once@1.1.2: + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} + dev: false + + /@tootallnate/once@2.0.0: + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + + /@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.4: + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + dev: true + + /@turf/bbox-polygon@6.5.0: + resolution: {integrity: sha512-+/r0NyL1lOG3zKZmmf6L8ommU07HliP4dgYToMoTxqzsWzyLjaj/OzgQ8rBmv703WJX+aS6yCmLuIhYqyufyuw==} + dependencies: + '@turf/helpers': 6.5.0 + dev: false + + /@turf/bbox@6.5.0: + resolution: {integrity: sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/meta': 6.5.0 + dev: false + + /@turf/clone@6.5.0: + resolution: {integrity: sha512-mzVtTFj/QycXOn6ig+annKrM6ZlimreKYz6f/GSERytOpgzodbQyOgkfwru100O1KQhhjSudKK4DsQ0oyi9cTw==} + dependencies: + '@turf/helpers': 6.5.0 + dev: false + + /@turf/helpers@6.5.0: + resolution: {integrity: sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==} + dev: false + + /@turf/invariant@6.5.0: + resolution: {integrity: sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==} + dependencies: + '@turf/helpers': 6.5.0 + dev: false + + /@turf/meta@6.5.0: + resolution: {integrity: sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==} + dependencies: + '@turf/helpers': 6.5.0 + dev: false + + /@turf/polygon-to-line@6.5.0: + resolution: {integrity: sha512-5p4n/ij97EIttAq+ewSnKt0ruvuM+LIDzuczSzuHTpq4oS7Oq8yqg5TQ4nzMVuK41r/tALCk7nAoBuw3Su4Gcw==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + dev: false + + /@turf/union@6.5.0: + resolution: {integrity: sha512-igYWCwP/f0RFHIlC2c0SKDuM/ObBaqSljI3IdV/x71805QbIvY/BYGcJdyNcgEA6cylIGl/0VSlIbpJHZ9ldhw==} + dependencies: + '@turf/helpers': 6.5.0 + '@turf/invariant': 6.5.0 + polygon-clipping: 0.15.7 + dev: false + + /@types/aria-query@5.0.1: + resolution: {integrity: sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==} + dev: true + + /@types/babel__core@7.20.1: + resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} + dependencies: + '@babel/parser': 7.22.3 + '@babel/types': 7.22.3 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.20.0 + dev: true + + /@types/babel__generator@7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + dependencies: + '@babel/types': 7.22.3 + dev: true + + /@types/babel__template@7.4.1: + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + dependencies: + '@babel/parser': 7.22.3 + '@babel/types': 7.22.3 + dev: true + + /@types/babel__traverse@7.20.0: + resolution: {integrity: sha512-TBOjqAGf0hmaqRwpii5LLkJLg7c6OMm4nHLmpsUxwk9bBHtoTC6dAHdVWdGv4TBxj2CZOZY8Xfq8WmfoVi7n4Q==} + dependencies: + '@babel/types': 7.22.3 + dev: true + + /@types/body-parser@1.19.2: + resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} + dependencies: + '@types/connect': 3.4.35 + '@types/node': 20.2.5 + 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': 20.2.5 + dev: true + + /@types/d3-timer@2.0.3: + resolution: {integrity: sha512-jhAJzaanK5LqyLQ50jJNIrB8fjL9gwWZTgYjevPvkDLMU+kTAZkYsobI59nYoeSrH1PucuyJEi247Pb90t6XUg==} + dev: false + + /@types/eslint-scope@3.7.4: + resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==} + dependencies: + '@types/eslint': 8.40.0 + '@types/estree': 1.0.1 + + /@types/eslint@7.29.0: + resolution: {integrity: sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==} + dependencies: + '@types/estree': 1.0.1 + '@types/json-schema': 7.0.12 + dev: true + + /@types/eslint@8.40.0: + resolution: {integrity: sha512-nbq2mvc/tBrK9zQQuItvjJl++GTN5j06DaPtp3hZCpngmG6Q3xoyEmd0TwZI0gAy/G1X0zhGBbr2imsGFdFV0g==} + dependencies: + '@types/estree': 1.0.1 + '@types/json-schema': 7.0.12 + + /@types/estree@1.0.1: + resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + + /@types/express-serve-static-core@4.17.35: + resolution: {integrity: sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==} + dependencies: + '@types/node': 20.2.5 + '@types/qs': 6.9.7 + '@types/range-parser': 1.2.4 + '@types/send': 0.17.1 + dev: true + + /@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.35 + '@types/qs': 6.9.7 + '@types/serve-static': 1.15.1 + dev: true + + /@types/fabric@5.3.6: + resolution: {integrity: sha512-nTP5I68SsGnanIHxCoBX83ghscw9M9DI27iSDcd0Z+cpiQ5cZByH0nzkm4itDR/LgAy253q7B93xHgyOh2+hFQ==} + dev: true + + /@types/geojson@7946.0.13: + resolution: {integrity: sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ==} + dev: false + + /@types/glob@7.2.0: + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 20.2.5 + dev: true + + /@types/graceful-fs@4.1.6: + resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} + dependencies: + '@types/node': 20.2.5 + dev: true + + /@types/hapi__joi@17.1.9: + resolution: {integrity: sha512-oOMFT8vmCTFncsF1engrs04jatz8/Anwx3De9uxnOK4chgSEgWBvFtpSoJo8u3784JNO+ql5tzRR6phHoRnscQ==} + 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': 18.2.7 + 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/isomorphic-fetch@0.0.34: + resolution: {integrity: sha512-BmJKuPCZCR6pbYYgi5nKFJrPC4pLoBgsi/B1nFN64Ba+hLLGUcKPIh7eVlR2xG763Ap08hgQafq/Wx4RFb0omQ==} + 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.5.1: + resolution: {integrity: sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==} + dependencies: + expect: 29.5.0 + pretty-format: 29.5.0 + dev: true + + /@types/js-cookie@2.2.7: + resolution: {integrity: sha512-aLkWa0C0vO5b4Sr798E26QgOkss68Un0bLjs7u9qxzPT5CG+8DuNTffWES58YzJs3hrVAOs1wonycqEBqNJubA==} + + /@types/js-yaml@4.0.8: + resolution: {integrity: sha512-m6jnPk1VhlYRiLFm3f8X9Uep761f+CK8mHyS65LutH2OhmBF0BeMEjHgg05usH8PLZMWWc/BUR9RPmkvpWnyRA==} + dev: true + + /@types/jsdom@20.0.1: + resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} + dependencies: + '@types/node': 20.2.5 + '@types/tough-cookie': 4.0.2 + parse5: 7.1.2 + dev: true + + /@types/json-schema@7.0.12: + resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + + /@types/lodash@4.14.195: + resolution: {integrity: sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==} + dev: true + + /@types/mapbox__point-geometry@0.1.4: + resolution: {integrity: sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA==} + dev: false + + /@types/mapbox__vector-tile@1.3.4: + resolution: {integrity: sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg==} + dependencies: + '@types/geojson': 7946.0.13 + '@types/mapbox__point-geometry': 0.1.4 + '@types/pbf': 3.0.5 + dev: false + + /@types/mdast@3.0.11: + resolution: {integrity: sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==} + dependencies: + '@types/unist': 2.0.6 + dev: true + + /@types/mime@1.3.2: + resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} + 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@20.2.5: + resolution: {integrity: sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==} + + /@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/pbf@3.0.5: + resolution: {integrity: sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==} + dev: false + + /@types/prettier@2.7.2: + resolution: {integrity: sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==} + 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@18.2.4: + resolution: {integrity: sha512-G2mHoTMTL4yoydITgOGwWdWMVd8sNgyEP85xVmMKAPUBwQWm9wBPQUmvbeF4V3WBY1P7mmL4BkjQ0SqUpf1snw==} + dependencies: + '@types/react': 18.2.7 + dev: true + + /@types/react-helmet@6.1.6: + resolution: {integrity: sha512-ZKcoOdW/Tg+kiUbkFCBtvDw0k3nD4HJ/h/B9yWxN4uDO8OkRksWTO+EL+z/Qu3aHTeTll3Ro0Cc/8UhwBCMG5A==} + dependencies: + '@types/react': 18.2.7 + 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.2.7 + hoist-non-react-statics: 3.3.2 + redux: 4.2.1 + dev: true + + /@types/react-router-dom@4.3.5: + resolution: {integrity: sha512-eFajSUASYbPHg2BDM1G8Btx+YqGgvROPIg6sBhl3O4kbDdYXdFdfrgQFf/pcBuQVObjfT9AL/dd15jilR5DIEA==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.2.7 + '@types/react-router': 5.1.20 + dev: true + + /@types/react-router-redux@5.0.22: + resolution: {integrity: sha512-0Vcr0HzpZTC+PQVY6vGJ57yv1hFZSPFs/QHqYPbn2uEDKUYBV3dAZQtoTYhsa1bGqRE91yedgX29AM68FlxfmA==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.2.7 + '@types/react-router': 5.1.20 + redux: 4.2.1 + dev: true + + /@types/react-router@5.1.20: + resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.2.7 + dev: true + + /@types/react@18.2.7: + resolution: {integrity: sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.3 + csstype: 3.1.2 + dev: true + + /@types/scheduler@0.16.3: + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} + dev: true + + /@types/semver@7.5.0: + resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + dev: true + + /@types/send@0.17.1: + resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} + dependencies: + '@types/mime': 1.3.2 + '@types/node': 20.2.5 + dev: true + + /@types/serve-static@1.15.1: + resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==} + dependencies: + '@types/mime': 3.0.1 + '@types/node': 20.2.5 + dev: true + + /@types/stack-utils@2.0.1: + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + dev: true + + /@types/supercluster@7.1.3: + resolution: {integrity: sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==} + dependencies: + '@types/geojson': 7946.0.13 + dev: false + + /@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.5: + resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@types/yargs@17.0.24: + resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} + dependencies: + '@types/yargs-parser': 21.0.0 + dev: true + + /@typescript-eslint/eslint-plugin@5.48.1(@typescript-eslint/parser@5.48.1)(eslint@8.35.0)(typescript@5.0.2): + resolution: {integrity: sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ==} + 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.48.1(eslint@8.35.0)(typescript@5.0.2) + '@typescript-eslint/scope-manager': 5.48.1 + '@typescript-eslint/type-utils': 5.48.1(eslint@8.35.0)(typescript@5.0.2) + '@typescript-eslint/utils': 5.48.1(eslint@8.35.0)(typescript@5.0.2) + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.35.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + regexpp: 3.2.0 + semver: 7.5.1 + tsutils: 3.21.0(typescript@5.0.2) + typescript: 5.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/eslint-plugin@5.48.1(@typescript-eslint/parser@5.48.1)(eslint@8.41.0)(typescript@5.0.2): + resolution: {integrity: sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ==} + 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.48.1(eslint@8.41.0)(typescript@5.0.2) + '@typescript-eslint/scope-manager': 5.48.1 + '@typescript-eslint/type-utils': 5.48.1(eslint@8.41.0)(typescript@5.0.2) + '@typescript-eslint/utils': 5.48.1(eslint@8.41.0)(typescript@5.0.2) + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.41.0 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + regexpp: 3.2.0 + semver: 7.5.1 + tsutils: 3.21.0(typescript@5.0.2) + typescript: 5.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/eslint-plugin@5.59.7(@typescript-eslint/parser@5.59.7)(eslint@7.32.0)(typescript@4.9.5): + resolution: {integrity: sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==} + 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: + '@eslint-community/regexpp': 4.5.1 + '@typescript-eslint/parser': 5.59.7(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 5.59.7 + '@typescript-eslint/type-utils': 5.59.7(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.7(eslint@7.32.0)(typescript@4.9.5) + debug: 4.3.4(supports-color@5.5.0) + eslint: 7.32.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + natural-compare-lite: 1.4.0 + semver: 7.5.1 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/experimental-utils@4.33.0(eslint@7.32.0)(typescript@4.9.5): + resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==} + engines: {node: ^10.12.0 || >=12.0.0} + peerDependencies: + eslint: '*' + dependencies: + '@types/json-schema': 7.0.12 + '@typescript-eslint/scope-manager': 4.33.0 + '@typescript-eslint/types': 4.33.0 + '@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) + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/parser@5.48.1(eslint@8.35.0)(typescript@5.0.2): + 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 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.48.1 + '@typescript-eslint/types': 5.48.1 + '@typescript-eslint/typescript-estree': 5.48.1(typescript@5.0.2) + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.35.0 + typescript: 5.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@5.48.1(eslint@8.41.0)(typescript@5.0.2): + 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 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.48.1 + '@typescript-eslint/types': 5.48.1 + '@typescript-eslint/typescript-estree': 5.48.1(typescript@5.0.2) + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.41.0 + typescript: 5.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@5.59.7(eslint@7.32.0)(typescript@4.9.5): + resolution: {integrity: sha512-VhpsIEuq/8i5SF+mPg9jSdIwgMBBp0z9XqjiEay+81PYLJuroN+ET1hM5IhkiYMJd9MkTz8iJLt7aaGAgzWUbQ==} + 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.59.7 + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) + debug: 4.3.4(supports-color@5.5.0) + eslint: 7.32.0 + typescript: 4.9.5 + 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.48.1: + resolution: {integrity: sha512-S035ueRrbxRMKvSTv9vJKIWgr86BD8s3RqoRZmsSh/s8HhIs90g6UlK8ZabUSjUZQkhVxt7nmZ63VJ9dcZhtDQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.48.1 + '@typescript-eslint/visitor-keys': 5.48.1 + dev: true + + /@typescript-eslint/scope-manager@5.59.7: + resolution: {integrity: sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/visitor-keys': 5.59.7 + dev: true + + /@typescript-eslint/type-utils@5.48.1(eslint@8.35.0)(typescript@5.0.2): + resolution: {integrity: sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.48.1(typescript@5.0.2) + '@typescript-eslint/utils': 5.48.1(eslint@8.35.0)(typescript@5.0.2) + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.35.0 + tsutils: 3.21.0(typescript@5.0.2) + typescript: 5.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/type-utils@5.48.1(eslint@8.41.0)(typescript@5.0.2): + resolution: {integrity: sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.48.1(typescript@5.0.2) + '@typescript-eslint/utils': 5.48.1(eslint@8.41.0)(typescript@5.0.2) + debug: 4.3.4(supports-color@5.5.0) + eslint: 8.41.0 + tsutils: 3.21.0(typescript@5.0.2) + typescript: 5.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/type-utils@5.59.7(eslint@7.32.0)(typescript@4.9.5): + resolution: {integrity: sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) + '@typescript-eslint/utils': 5.59.7(eslint@7.32.0)(typescript@4.9.5) + debug: 4.3.4(supports-color@5.5.0) + eslint: 7.32.0 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + 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.48.1: + resolution: {integrity: sha512-xHyDLU6MSuEEdIlzrrAerCGS3T7AA/L8Hggd0RCYBi0w3JMvGYxlLlXHeg50JI9Tfg5MrtsfuNxbS/3zF1/ATg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/types@5.59.7: + resolution: {integrity: sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==} + 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: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 4.33.0 + '@typescript-eslint/visitor-keys': 4.33.0 + debug: 4.3.4(supports-color@5.5.0) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.1 + 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@5.0.2): + resolution: {integrity: sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.48.1 + '@typescript-eslint/visitor-keys': 5.48.1 + debug: 4.3.4(supports-color@5.5.0) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.1 + tsutils: 3.21.0(typescript@5.0.2) + typescript: 5.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@5.59.7(typescript@4.9.5): + resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/visitor-keys': 5.59.7 + debug: 4.3.4(supports-color@5.5.0) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.1 + tsutils: 3.21.0(typescript@4.9.5) + typescript: 4.9.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@5.59.7(typescript@5.0.2): + resolution: {integrity: sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/visitor-keys': 5.59.7 + debug: 4.3.4(supports-color@5.5.0) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.1 + tsutils: 3.21.0(typescript@5.0.2) + typescript: 5.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@5.48.1(eslint@8.35.0)(typescript@5.0.2): + 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.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.48.1 + '@typescript-eslint/types': 5.48.1 + '@typescript-eslint/typescript-estree': 5.48.1(typescript@5.0.2) + eslint: 8.35.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0(eslint@8.35.0) + semver: 7.5.1 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@5.48.1(eslint@8.41.0)(typescript@5.0.2): + 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.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.48.1 + '@typescript-eslint/types': 5.48.1 + '@typescript-eslint/typescript-estree': 5.48.1(typescript@5.0.2) + eslint: 8.41.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0(eslint@8.41.0) + semver: 7.5.1 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@5.59.7(eslint@7.32.0)(typescript@4.9.5): + resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@7.32.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.59.7 + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/typescript-estree': 5.59.7(typescript@4.9.5) + eslint: 7.32.0 + eslint-scope: 5.1.1 + semver: 7.5.1 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@5.59.7(eslint@8.35.0)(typescript@5.0.2): + resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.35.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.59.7 + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.0.2) + eslint: 8.35.0 + eslint-scope: 5.1.1 + semver: 7.5.1 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@5.59.7(eslint@8.41.0)(typescript@5.0.2): + resolution: {integrity: sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.59.7 + '@typescript-eslint/types': 5.59.7 + '@typescript-eslint/typescript-estree': 5.59.7(typescript@5.0.2) + eslint: 8.41.0 + eslint-scope: 5.1.1 + semver: 7.5.1 + 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.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.48.1 + eslint-visitor-keys: 3.4.1 + dev: true + + /@typescript-eslint/visitor-keys@5.59.7: + resolution: {integrity: sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.59.7 + eslint-visitor-keys: 3.4.1 + dev: true + + /@umijs/ast@4.0.69: + resolution: {integrity: sha512-Bsq9j00EHL5owk3KpfZyGB65JZ29wyd8w1WBHWjgKX1LkKmiprV73E6DgFjIyNVNw3mX2r2HNtmFPJycmJR0mw==} + dependencies: + '@umijs/bundler-utils': 4.0.69 + transitivePeerDependencies: + - supports-color + dev: true + + /@umijs/babel-preset-umi@4.0.69(styled-components@5.3.11): + resolution: {integrity: sha512-0978ONVhvUuu0c5CRcwaMZYrvNYjmNaTD0JRNZQMaT9/2H65rnj9dazY4OT07dSEN9ZKIcJb3mTalNdVw2/rHA==} + dependencies: + '@babel/runtime': 7.21.0 + '@bloomberg/record-tuple-polyfill': 0.0.4 + '@umijs/bundler-utils': 4.0.69 + '@umijs/utils': 4.0.69 + babel-plugin-styled-components: 2.1.1(styled-components@5.3.11) + core-js: 3.28.0 + transitivePeerDependencies: + - styled-components + - supports-color + dev: true + + /@umijs/bundler-esbuild@4.0.69: + resolution: {integrity: sha512-3WcjSnQT818pSZsgE+Q10ADA+e8Co1Wd1M3Hxk05hLoIpUlMXkA5E/NS/C0UY+D3g/4R9zoxd7oqSvT62VEajw==} + hasBin: true + dependencies: + '@umijs/bundler-utils': 4.0.69 + '@umijs/utils': 4.0.69 + enhanced-resolve: 5.9.3 + postcss: 8.4.24 + postcss-flexbugs-fixes: 5.0.2(postcss@8.4.24) + postcss-preset-env: 7.5.0(postcss@8.4.24) + transitivePeerDependencies: + - supports-color + dev: true + + /@umijs/bundler-utils@4.0.59: + resolution: {integrity: sha512-hgScOWi1x3vrKMAMFdZNanDN0p4Iae1avsuP8vcpLtXBNSgGbWeNJCv0fVgInyfH1EsTNd2CzhqwR8lFOhA+tg==} + dependencies: + '@umijs/utils': 4.0.59 + esbuild: 0.16.17 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.0 + spdy: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@umijs/bundler-utils@4.0.69: + resolution: {integrity: sha512-xdKsz3q0zHpR+oeYz0nrxsHBv7++CmFsSZBh3SjQlmyOr8yrjMsqF9VaW1olh+syrkHFvxX5OdMF21oQPuIQVg==} + dependencies: + '@umijs/utils': 4.0.69 + esbuild: 0.16.17 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.0 + spdy: 4.0.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@umijs/bundler-vite@4.0.69(@types/node@20.2.5)(postcss@8.4.24): + resolution: {integrity: sha512-IZVX230PbLPlBOgecZR1O5q90g09H/DjbmedUUgmK5bdmG8tdLXnGnZYgQ1V8rp9WjAr+4TkO4kVkui3Az16Cw==} + hasBin: true + dependencies: + '@svgr/core': 6.5.1 + '@umijs/bundler-utils': 4.0.69 + '@umijs/utils': 4.0.69 + '@vitejs/plugin-react': 4.0.0(vite@4.3.1) + less: 4.1.3 + postcss-preset-env: 7.5.0(postcss@8.4.24) + rollup-plugin-visualizer: 5.9.0 + vite: 4.3.1(@types/node@20.2.5)(less@4.1.3) + transitivePeerDependencies: + - '@types/node' + - postcss + - rollup + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /@umijs/bundler-webpack@4.0.69(styled-components@5.3.11)(typescript@5.0.2)(webpack@5.84.1): + resolution: {integrity: sha512-p1h3MvcYr5aecrWwLDS0UZf5GgrITQuZAEl382zC6quB2TtWrJ/5BNxxQxuMyt9/Uf5IeqSvlLJGfp0ipyaD8Q==} + hasBin: true + dependencies: + '@pmmmwh/react-refresh-webpack-plugin': 0.5.10(react-refresh@0.14.0)(webpack@5.84.1) + '@svgr/core': 6.5.1 + '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) + '@svgr/plugin-svgo': 6.5.1(@svgr/core@6.5.1) + '@types/hapi__joi': 17.1.9 + '@umijs/babel-preset-umi': 4.0.69(styled-components@5.3.11) + '@umijs/bundler-utils': 4.0.69 + '@umijs/case-sensitive-paths-webpack-plugin': 1.0.1 + '@umijs/mfsu': 4.0.69 + '@umijs/utils': 4.0.69 + cors: 2.8.5 + css-loader: 6.7.1(webpack@5.84.1) + es5-imcompatible-versions: 0.1.82 + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.0.2)(webpack@5.84.1) + jest-worker: 29.4.3 + lightningcss: 1.19.0 + node-libs-browser: 2.2.1 + postcss: 8.4.24 + postcss-preset-env: 7.5.0(postcss@8.4.24) + react-error-overlay: 6.0.9 + react-refresh: 0.14.0 + transitivePeerDependencies: + - '@types/webpack' + - sockjs-client + - styled-components + - supports-color + - type-fest + - typescript + - 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.69: + resolution: {integrity: sha512-UXeEJqSY5kTf+cqrBYkTIVZ/JxPYrnoP6VAyZmHVgydv6+eoalFKhuhOcX5X5diIBK1F2Xcs9nUtJHn+OH/y+w==} + dependencies: + '@umijs/bundler-utils': 4.0.69 + '@umijs/utils': 4.0.69 + transitivePeerDependencies: + - supports-color + dev: true + + /@umijs/did-you-know@1.0.3: + resolution: {integrity: sha512-9EZ+rgY9+2HEaE+Z9dGkal2ccw8L4uuz77tCB5WpskW7NBZX5nOj82sqF/shEtA5tU3SWO/Mi4n35K3iONvDtw==} + dev: true + + /@umijs/es-module-parser-darwin-arm64@0.0.7: + resolution: {integrity: sha512-1QeNupekuVYVvL4UHyCRq4ISP2PNk4rDd9UOPONW+KpqTyP9p7RfgGpwB0VLPaFSu2ADtm0XZyIaYEGPY6zuDw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@umijs/es-module-parser-darwin-x64@0.0.7: + resolution: {integrity: sha512-FBFmfigmToPc9qBCW7wHiTYpqnLdPbAvoMGOydzAu2NspdPEF7TfILcr8vCPNbNe3vCobS+T/YM1dP+SagERlA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@umijs/es-module-parser-linux-arm-gnueabihf@0.0.7: + resolution: {integrity: sha512-AXfmg3htkadLGsXUyiyrTig4omGCWIN4l+HS7Qapqv0wlfFYSpC0KPemjyBQgzXO70tDcT+1FNhGjIy+yr2pIQ==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@umijs/es-module-parser-linux-arm64-gnu@0.0.7: + resolution: {integrity: sha512-2wSdChFc39fPJwvS8tRq+jx8qNlIwrjRk1hb3N5o0rJR+rqt+ceAyNPbYwpNBmUHW7xtmDQvJUeinvr7hIBP+w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@umijs/es-module-parser-linux-arm64-musl@0.0.7: + resolution: {integrity: sha512-cqQffARWkmQ3n1RYNKZR3aD6X8YaP6u1maASjDgPQOpZMAlv/OSDrM/7iGujWTs0PD0haockNG9/DcP6lgPHMw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@umijs/es-module-parser-linux-x64-gnu@0.0.7: + resolution: {integrity: sha512-PHrKHtT665Za0Ydjch4ACrNpRU+WIIden12YyF1CtMdhuLDSoU6UfdhF3NoDbgEUcXVDX/ftOqmj0SbH3R1uew==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@umijs/es-module-parser-linux-x64-musl@0.0.7: + resolution: {integrity: sha512-cyZvUK5lcECLWzLp/eU1lFlCETcz+LEb+wrdARQSST1dgoIGZsT4cqM1WzYmdZNk3o883tiZizLt58SieEiHBQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@umijs/es-module-parser-win32-arm64-msvc@0.0.7: + resolution: {integrity: sha512-V7WxnUI88RboSl0RWLNQeKBT7EDW35fW6Tn92zqtoHHxrhAIL9DtDyvC8REP4qTxeZ6Oej/Ax5I6IjsLx3yTOg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@umijs/es-module-parser-win32-x64-msvc@0.0.7: + resolution: {integrity: sha512-X3Pqy0l38hg6wMPquPeMHuoHU+Cx+wzyz32SVYCta+RPJQ7n9PjrEBiIuVAw5+GJZjSABN7LVr8u/n0RZT9EQA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@umijs/es-module-parser@0.0.7: + resolution: {integrity: sha512-x47CMi/Hw7Nkz3RXTUqlldH/UM+Tcmw2PziV3k+itJqTFJc8oVx3lzdUgCnG+eL3ZtmLPbOEBhPb30V0NytNDQ==} + engines: {node: '>= 10'} + optionalDependencies: + '@umijs/es-module-parser-darwin-arm64': 0.0.7 + '@umijs/es-module-parser-darwin-x64': 0.0.7 + '@umijs/es-module-parser-linux-arm-gnueabihf': 0.0.7 + '@umijs/es-module-parser-linux-arm64-gnu': 0.0.7 + '@umijs/es-module-parser-linux-arm64-musl': 0.0.7 + '@umijs/es-module-parser-linux-x64-gnu': 0.0.7 + '@umijs/es-module-parser-linux-x64-musl': 0.0.7 + '@umijs/es-module-parser-win32-arm64-msvc': 0.0.7 + '@umijs/es-module-parser-win32-x64-msvc': 0.0.7 + dev: true + + /@umijs/fabric@2.14.1: + resolution: {integrity: sha512-fOyXcbViOB+/jW+g2rCiK9XjSZVn4OzFuMZpSCriCdR/KxhxLTokvJWFm3CzBEmg9vXfrBFQ4c/ykmqoVacHtw==} + hasBin: true + dependencies: + '@babel/core': 7.22.1 + '@babel/eslint-parser': 7.21.8(@babel/core@7.22.1)(eslint@7.32.0) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-proposal-decorators': 7.22.3(@babel/core@7.22.1) + '@babel/preset-env': 7.22.2(@babel/core@7.22.1) + '@babel/preset-react': 7.22.3(@babel/core@7.22.1) + '@babel/preset-typescript': 7.21.5(@babel/core@7.22.1) + '@typescript-eslint/eslint-plugin': 5.59.7(@typescript-eslint/parser@5.59.7)(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/parser': 5.59.7(eslint@7.32.0)(typescript@4.9.5) + chalk: 4.1.2 + eslint: 7.32.0 + eslint-config-prettier: 8.8.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(@typescript-eslint/eslint-plugin@5.59.7)(eslint@7.32.0)(typescript@4.9.5) + eslint-plugin-promise: 6.1.1(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.8 + prettier-plugin-packagejson: 2.3.0(prettier@2.8.8) + prettier-plugin-two-style-order: 1.0.1(prettier@2.8.8) + 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.7.0(stylelint@13.13.1) + typescript: 4.9.5 + transitivePeerDependencies: + - postcss-jsx + - postcss-markdown + - supports-color + dev: true + + /@umijs/history@5.3.1: + resolution: {integrity: sha512-/e0cEGrR2bIWQD7pRl3dl9dcyRGeC9hoW0OCvUTT/hjY0EfUrkd6G8ZanVghPMpDuY5usxq9GVcvrT8KNXLWvA==} + dependencies: + '@babel/runtime': 7.22.3 + query-string: 6.14.1 + dev: true + + /@umijs/lint@4.0.69(eslint@8.35.0)(jest@29.5.0)(styled-components@5.3.11)(stylelint@14.8.2)(typescript@5.0.2): + resolution: {integrity: sha512-1b5e2wKLdbDczNIPQ6brO7eYUL633HtvEm+tf+4dOQJhvczs0zm6xUZAot0LMDPl/yyliFbLV3gk12ijcNRx6Q==} + dependencies: + '@babel/core': 7.21.0 + '@babel/eslint-parser': 7.19.1(@babel/core@7.21.0)(eslint@8.35.0) + '@stylelint/postcss-css-in-js': 0.38.0(postcss-syntax@0.36.2)(postcss@8.4.24) + '@typescript-eslint/eslint-plugin': 5.48.1(@typescript-eslint/parser@5.48.1)(eslint@8.35.0)(typescript@5.0.2) + '@typescript-eslint/parser': 5.48.1(eslint@8.35.0)(typescript@5.0.2) + '@umijs/babel-preset-umi': 4.0.69(styled-components@5.3.11) + eslint-plugin-jest: 27.2.1(@typescript-eslint/eslint-plugin@5.48.1)(eslint@8.35.0)(jest@29.5.0)(typescript@5.0.2) + eslint-plugin-react: 7.32.2(eslint@8.35.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.35.0) + postcss: 8.4.24 + postcss-syntax: 0.36.2(postcss@8.4.24) + 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/lint@4.0.69(eslint@8.41.0)(jest@29.5.0)(styled-components@5.3.11)(stylelint@14.16.1)(typescript@5.0.2): + resolution: {integrity: sha512-1b5e2wKLdbDczNIPQ6brO7eYUL633HtvEm+tf+4dOQJhvczs0zm6xUZAot0LMDPl/yyliFbLV3gk12ijcNRx6Q==} + dependencies: + '@babel/core': 7.21.0 + '@babel/eslint-parser': 7.19.1(@babel/core@7.21.0)(eslint@8.41.0) + '@stylelint/postcss-css-in-js': 0.38.0(postcss-syntax@0.36.2)(postcss@8.4.24) + '@typescript-eslint/eslint-plugin': 5.48.1(@typescript-eslint/parser@5.48.1)(eslint@8.41.0)(typescript@5.0.2) + '@typescript-eslint/parser': 5.48.1(eslint@8.41.0)(typescript@5.0.2) + '@umijs/babel-preset-umi': 4.0.69(styled-components@5.3.11) + eslint-plugin-jest: 27.2.1(@typescript-eslint/eslint-plugin@5.48.1)(eslint@8.41.0)(jest@29.5.0)(typescript@5.0.2) + eslint-plugin-react: 7.32.2(eslint@8.41.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.41.0) + postcss: 8.4.24 + postcss-syntax: 0.36.2(postcss@8.4.24) + stylelint-config-standard: 25.0.0(stylelint@14.16.1) + 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.3: + resolution: {integrity: sha512-pV2GLscYHdOYNbQ1jgC+s99CGYFHegT/B+uRWVomL6+2mCdm9mP/KDSzGjkLZpL7PeXDlfPMsx/vSqAvDBGE2A==} + dependencies: + '@umijs/openapi': 1.8.3 + rimraf: 4.4.1 + serve-static: 1.15.0 + swagger-ui-dist: 4.19.0 + transitivePeerDependencies: + - chokidar + - encoding + - postcss-jsx + - postcss-markdown + - supports-color + dev: true + + /@umijs/max@4.0.69(@babel/core@7.22.1)(@types/node@20.2.5)(@types/react-dom@18.2.4)(@types/react@18.2.7)(dva@2.5.0-beta.2)(jest@29.5.0)(postcss@8.4.24)(prettier@2.8.8)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.11)(typescript@5.0.2)(webpack@5.84.1): + resolution: {integrity: sha512-S6V27+g1NR6NjawRvAX596WwY68UBFPw76uydBv4QjdXGkMnSVIXLU8/zySf3ZWRLkchG3VcNH8PlBIIPkpgCQ==} + hasBin: true + dependencies: + '@umijs/lint': 4.0.69(eslint@8.35.0)(jest@29.5.0)(styled-components@5.3.11)(stylelint@14.8.2)(typescript@5.0.2) + '@umijs/plugins': 4.0.69(@types/react-dom@18.2.4)(@types/react@18.2.7)(antd@4.24.10)(dva@2.5.0-beta.2)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + antd: 4.24.10(react-dom@18.2.0)(react@18.2.0) + eslint: 8.35.0 + stylelint: 14.8.2 + umi: 4.0.69(@babel/core@7.22.1)(@types/node@20.2.5)(@types/react@18.2.7)(eslint@8.35.0)(jest@29.5.0)(postcss@8.4.24)(prettier@2.8.8)(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.11)(stylelint@14.8.2)(typescript@5.0.2)(webpack@5.84.1) + transitivePeerDependencies: + - '@babel/core' + - '@types/lodash.merge' + - '@types/node' + - '@types/react' + - '@types/react-dom' + - '@types/webpack' + - '@volar/vue-language-plugin-pug' + - '@volar/vue-typescript' + - babel-plugin-styled-components + - debug + - dva + - jest + - postcss + - postcss-html + - postcss-jsx + - postcss-less + - postcss-markdown + - postcss-scss + - prettier + - rc-field-form + - react + - react-dom + - react-native + - rollup + - sass + - sockjs-client + - styled-components + - stylus + - sugarss + - supports-color + - terser + - type-fest + - typescript + - webpack + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: true + + /@umijs/mfsu@4.0.69: + resolution: {integrity: sha512-ITLKw1DGAOMSeiQicXXO5nQh9FLMaf0/lxaZtAPYboq9DcodfJIG+J4xHYTjE+Ns5/9TQjkqMqTsKUCGCN6SIw==} + dependencies: + '@umijs/bundler-esbuild': 4.0.69 + '@umijs/bundler-utils': 4.0.69 + '@umijs/utils': 4.0.69 + enhanced-resolve: 5.9.3 + is-equal: 1.6.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@umijs/openapi@1.8.3: + resolution: {integrity: sha512-17xgd/x2aouxl/cITy0YD3TJ+kPf/rX+zXLJYg/Cf1DavMLntoqalcUQeh5/VtVO2+rSGtEepC3Ppl54LHqSUA==} + dependencies: + '@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.11 + nunjucks: 3.2.4 + openapi3-ts: 2.0.2 + prettier: 2.8.8 + 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.69: + resolution: {integrity: sha512-GzdbWdTUZt4/ZtxOn7AdPffrLXIaBp6ZiT5zJIugRuWnKLwJyNSmrAy1iD3ks4ZyEGfAqRd9Ou0Q+clmLGR7FA==} + dependencies: + tsx: 3.12.7 + dev: true + + /@umijs/plugins@4.0.59(@types/react-dom@18.2.4)(@types/react@18.2.7)(antd@5.5.1)(dva@2.5.0-beta.2)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Sa0CI09Ewu1r4p+CQxMpCf6HYjaAVf2OtvW7z3J5CLe7hDo45KQ5/9iYKCXV5GEoSVXvYkiDJyDjCerEkfU/gw==} + 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(react-dom@18.2.0)(react@18.2.0) + '@ant-design/pro-components': 2.6.29(antd@5.5.1)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@tanstack/react-query': 4.29.11(react-dom@18.2.0)(react@18.2.0) + '@tanstack/react-query-devtools': 4.29.11(@tanstack/react-query@4.29.11)(react-dom@18.2.0)(react@18.2.0) + '@umijs/bundler-utils': 4.0.59 + '@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.1) + dva-immer: 1.0.1(dva@2.5.0-beta.2) + dva-loading: 3.0.24(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.10.8 + react-intl: 3.12.1(react@18.2.0) + react-redux: 8.0.5(@types/react-dom@18.2.4)(@types/react@18.2.7)(react-dom@18.2.0)(react@18.2.0)(redux@4.2.1) + redux: 4.2.1 + styled-components: 6.0.0-beta.9(react-dom@18.2.0)(react@18.2.0)(tslib@2.5.2) + tslib: 2.5.2 + warning: 4.0.3 + transitivePeerDependencies: + - '@types/lodash.merge' + - '@types/react' + - '@types/react-dom' + - antd + - babel-plugin-styled-components + - debug + - dva + - rc-field-form + - react + - react-dom + - react-native + - shallowequal + - stylis + - supports-color + dev: true + + /@umijs/plugins@4.0.69(@types/react-dom@18.2.4)(@types/react@18.2.7)(antd@4.24.10)(dva@2.5.0-beta.2)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-tPDO816TFrE+UJ1293n+TytSGw53VexP6pZREPTwKZNdHgAgV/WdnKV0rsWsyUouiDXXbFCPwnoc1HNK+ve34w==} + 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(react-dom@18.2.0)(react@18.2.0) + '@ant-design/moment-webpack-plugin': 0.0.3 + '@ant-design/pro-components': 2.6.29(antd@4.24.10)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@tanstack/react-query': 4.29.11(react-dom@18.2.0)(react@18.2.0) + '@tanstack/react-query-devtools': 4.29.11(@tanstack/react-query@4.29.11)(react-dom@18.2.0)(react@18.2.0) + '@umijs/bundler-utils': 4.0.69 + '@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.1) + dva-immer: 1.0.1(dva@2.5.0-beta.2) + dva-loading: 3.0.24(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.10.8 + react-intl: 3.12.1(react@18.2.0) + react-redux: 8.0.5(@types/react-dom@18.2.4)(@types/react@18.2.7)(react-dom@18.2.0)(react@18.2.0)(redux@4.2.1) + redux: 4.2.1 + styled-components: 6.0.0-rc.0(react-dom@18.2.0)(react@18.2.0) + tslib: 2.5.2 + warning: 4.0.3 + transitivePeerDependencies: + - '@types/lodash.merge' + - '@types/react' + - '@types/react-dom' + - antd + - babel-plugin-styled-components + - debug + - dva + - rc-field-form + - react + - react-dom + - react-native + - supports-color + dev: true + + /@umijs/plugins@4.0.69(@types/react-dom@18.2.4)(@types/react@18.2.7)(antd@5.5.1)(dva@2.5.0-beta.2)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-tPDO816TFrE+UJ1293n+TytSGw53VexP6pZREPTwKZNdHgAgV/WdnKV0rsWsyUouiDXXbFCPwnoc1HNK+ve34w==} + 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(react-dom@18.2.0)(react@18.2.0) + '@ant-design/moment-webpack-plugin': 0.0.3 + '@ant-design/pro-components': 2.6.29(antd@5.5.1)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@tanstack/react-query': 4.29.11(react-dom@18.2.0)(react@18.2.0) + '@tanstack/react-query-devtools': 4.29.11(@tanstack/react-query@4.29.11)(react-dom@18.2.0)(react@18.2.0) + '@umijs/bundler-utils': 4.0.69 + '@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.1) + dva-immer: 1.0.1(dva@2.5.0-beta.2) + dva-loading: 3.0.24(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.10.8 + react-intl: 3.12.1(react@18.2.0) + react-redux: 8.0.5(@types/react-dom@18.2.4)(@types/react@18.2.7)(react-dom@18.2.0)(react@18.2.0)(redux@4.2.1) + redux: 4.2.1 + styled-components: 6.0.0-rc.0(react-dom@18.2.0)(react@18.2.0) + tslib: 2.5.2 + warning: 4.0.3 + transitivePeerDependencies: + - '@types/lodash.merge' + - '@types/react' + - '@types/react-dom' + - antd + - babel-plugin-styled-components + - debug + - dva + - rc-field-form + - react + - react-dom + - react-native + - supports-color + dev: true + + /@umijs/preset-umi@4.0.69(@types/node@20.2.5)(@types/react@18.2.7)(postcss@8.4.24)(styled-components@5.3.11)(typescript@5.0.2)(webpack@5.84.1): + resolution: {integrity: sha512-W/Olv2ldPtGnPa+mbsFZwoyEhykCcWTbkmowf/4AewHe0n5CJEyqjeo1cOlD7fr8RbpIqzoxdlMrlMi/bBqbNQ==} + dependencies: + '@iconify/utils': 2.1.1 + '@svgr/core': 6.5.1 + '@umijs/ast': 4.0.69 + '@umijs/babel-preset-umi': 4.0.69(styled-components@5.3.11) + '@umijs/bundler-utils': 4.0.69 + '@umijs/bundler-vite': 4.0.69(@types/node@20.2.5)(postcss@8.4.24) + '@umijs/bundler-webpack': 4.0.69(styled-components@5.3.11)(typescript@5.0.2)(webpack@5.84.1) + '@umijs/core': 4.0.69 + '@umijs/did-you-know': 1.0.3 + '@umijs/es-module-parser': 0.0.7 + '@umijs/history': 5.3.1 + '@umijs/mfsu': 4.0.69 + '@umijs/plugin-run': 4.0.69 + '@umijs/renderer-react': 4.0.69(react-dom@18.1.0)(react@18.1.0) + '@umijs/server': 4.0.69 + '@umijs/ui': 3.0.1 + '@umijs/utils': 4.0.69 + '@umijs/zod2ts': 4.0.69 + babel-plugin-dynamic-import-node: 2.3.3 + click-to-react-component: 1.0.8(@types/react@18.2.7)(react-dom@18.1.0)(react@18.1.0) + core-js: 3.28.0 + current-script-polyfill: 1.0.0 + enhanced-resolve: 5.9.3 + fast-glob: 3.2.12 + html-webpack-plugin: 5.5.0(webpack@5.84.1) + path-to-regexp: 1.7.0 + postcss-prefix-selector: 1.16.0(postcss@8.4.24) + 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(react-dom@18.1.0)(react@18.1.0) + 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 + - webpack + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: true + + /@umijs/renderer-react@4.0.69(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-7jD97cXoesulvqESJipTV3KJ0eEvtp94Kk/nUH82vYysHQlCS+P/WeWXqKo7nC4fvDCDGMz4aUV16r6Is7ZL8A==} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + '@babel/runtime': 7.21.0 + '@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(react-dom@18.1.0)(react@18.1.0) + react-router-dom: 6.3.0(react-dom@18.1.0)(react@18.1.0) + dev: true + + /@umijs/renderer-react@4.0.69(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-7jD97cXoesulvqESJipTV3KJ0eEvtp94Kk/nUH82vYysHQlCS+P/WeWXqKo7nC4fvDCDGMz4aUV16r6Is7ZL8A==} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + '@babel/runtime': 7.21.0 + '@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(react-dom@18.2.0)(react@18.2.0) + react-router-dom: 6.3.0(react-dom@18.2.0)(react@18.2.0) + dev: true + + /@umijs/request-record@1.1.4(umi@4.0.69): + resolution: {integrity: sha512-GFfAxgqbOMlhFpqGLNxizA4ywmPK+mxfJ53IdBw1IDd2Vzp5qLzlelbx0X1X+2v4dh9KE57YtjT9H7us66uw7Q==} + peerDependencies: + umi: '>=3' + dependencies: + chokidar: 3.5.3 + express: 4.18.2 + lodash: 4.17.21 + prettier: 2.8.8 + umi: 4.0.69(@babel/core@7.22.1)(@types/node@20.2.5)(@types/react@18.2.7)(eslint@8.41.0)(jest@29.5.0)(postcss@8.4.24)(prettier@2.8.8)(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.11)(stylelint@14.16.1)(typescript@5.0.2)(webpack@5.84.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 + dev: false + + /@umijs/route-utils@4.0.1: + resolution: {integrity: sha512-+1ixf1BTOLuH+ORb4x8vYMPeIt38n9q0fJDwhv9nSxrV46mxbLF0nmELIo9CKQB2gHfuC4+hww6xejJ6VYnBHQ==} + + /@umijs/server@4.0.69: + resolution: {integrity: sha512-znL4i6XC1dLmDCHk7fw3cKlehB4qKUqJeIao6j/eSzlfm6mCFzygsGqxzN8obrjCV0ohe/F/4WIRJDkEqwHleQ==} + dependencies: + '@umijs/bundler-utils': 4.0.69 + history: 5.3.0 + react: 18.1.0 + react-dom: 18.1.0(react@18.1.0) + react-router-dom: 6.3.0(react-dom@18.1.0)(react@18.1.0) + transitivePeerDependencies: + - supports-color + dev: true + + /@umijs/test@4.0.69(@babel/core@7.22.1): + resolution: {integrity: sha512-xkTNawfhz2xC0qqR2Q+JDJPoLNosSBNDAuna86YxNZK/WCvJ7n3/jehz2l9S6wxmstDW06yrXNM+IPoipUBAmg==} + dependencies: + '@babel/plugin-transform-modules-commonjs': 7.21.2(@babel/core@7.22.1) + '@jest/types': 27.5.1 + '@umijs/bundler-utils': 4.0.69 + '@umijs/utils': 4.0.69 + babel-jest: 29.5.0(@babel/core@7.22.1) + esbuild: 0.16.17 + identity-obj-proxy: 3.0.0 + isomorphic-unfetch: 4.0.2 + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + + /@umijs/ui@3.0.1: + resolution: {integrity: sha512-zcz37AJH0xt/6XVVbyO/hmsK9Hq4vH23HZ4KYVi5A8rbM9KeJkJigTS7ELOdArawZhVNGe+h3a5Oixs4a2QsWw==} + 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.59: + resolution: {integrity: sha512-NLRoZArsQArQyzIM/I3isWlRAYSpEh8lQ4JTqdIZQmyjRlNw1Lp80kDxlTcsmEpEa3ZkpHKKZNLJNpI99JdqTA==} + dependencies: + chokidar: 3.5.3 + pino: 7.11.0 + dev: true + + /@umijs/utils@4.0.69: + resolution: {integrity: sha512-lLUsceXtNWBFb+A6/Sw/BRBrBCJMGCurkkuwFsPjVxuiHtJrI3X7RBUMH0uFilhG78dhQdHGN2tc+NH7Z1YXKw==} + dependencies: + chokidar: 3.5.3 + pino: 7.11.0 + dev: true + + /@umijs/valtio@1.0.3(react@18.2.0): + resolution: {integrity: sha512-fjr1UMZLFOO+uy5YtLVcmvr+m2ZlU9rp04yXlCaPrKkdBg/UNPBVo6YS9TBx2v0a62gYaztLL3Put3dcNGH5tQ==} + dependencies: + valtio: 1.9.0(react@18.2.0) + transitivePeerDependencies: + - react + dev: true + + /@umijs/zod2ts@4.0.69: + resolution: {integrity: sha512-whXJSz9vm8cuU+qUSGtcacuPGUG7Vp2yv1fiJ726mukb/bJS4uG/3tcCOOlkztV5cvkRB4QtZ6IEMaqvxtt7xw==} + dev: true + + /@videojs/http-streaming@3.5.3(video.js@8.5.2): + resolution: {integrity: sha512-dty8lsZk9QPc0i4It79tjWsmPiaC3FpgARFM0vJGko4k3yKNZIYkAk8kjiDRfkAQH/HZ3rYi5dDTriFNzwSsIg==} + engines: {node: '>=8', npm: '>=5'} + peerDependencies: + video.js: ^7 || ^8 + dependencies: + '@babel/runtime': 7.22.3 + '@videojs/vhs-utils': 4.0.0 + aes-decrypter: 4.0.1 + global: 4.4.0 + m3u8-parser: 7.1.0 + mpd-parser: 1.3.0 + mux.js: 7.0.0 + video.js: 8.5.2 + dev: false + + /@videojs/vhs-utils@3.0.5: + resolution: {integrity: sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==} + engines: {node: '>=8', npm: '>=5'} + dependencies: + '@babel/runtime': 7.22.3 + global: 4.4.0 + url-toolkit: 2.2.5 + dev: false + + /@videojs/vhs-utils@4.0.0: + resolution: {integrity: sha512-xJp7Yd4jMLwje2vHCUmi8MOUU76nxiwII3z4Eg3Ucb+6rrkFVGosrXlMgGnaLjq724j3wzNElRZ71D/CKrTtxg==} + engines: {node: '>=8', npm: '>=5'} + dependencies: + '@babel/runtime': 7.22.3 + global: 4.4.0 + url-toolkit: 2.2.5 + dev: false + + /@videojs/xhr@2.6.0: + resolution: {integrity: sha512-7J361GiN1tXpm+gd0xz2QWr3xNWBE+rytvo8J3KuggFaLg+U37gZQ2BuPLcnkfGffy2e+ozY70RHC8jt7zjA6Q==} + dependencies: + '@babel/runtime': 7.22.3 + global: 4.4.0 + is-function: 1.0.2 + dev: false + + /@vitejs/plugin-react@4.0.0(vite@4.3.1): + resolution: {integrity: sha512-HX0XzMjL3hhOYm+0s95pb0Z7F8O81G7joUHgfDd/9J/ZZf5k4xX6QAMFkKsHFxaHlf6X7GD7+XuaZ66ULiJuhQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 + dependencies: + '@babel/core': 7.22.1 + '@babel/plugin-transform-react-jsx-self': 7.21.0(@babel/core@7.22.1) + '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.22.1) + react-refresh: 0.14.0 + vite: 4.3.1(@types/node@20.2.5)(less@4.1.3) + transitivePeerDependencies: + - supports-color + dev: true + + /@webassemblyjs/ast@1.11.6: + resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + + /@webassemblyjs/floating-point-hex-parser@1.11.6: + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + + /@webassemblyjs/helper-api-error@1.11.6: + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + + /@webassemblyjs/helper-buffer@1.11.6: + resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + + /@webassemblyjs/helper-numbers@1.11.6: + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + + /@webassemblyjs/helper-wasm-bytecode@1.11.6: + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + + /@webassemblyjs/helper-wasm-section@1.11.6: + resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + + /@webassemblyjs/ieee754@1.11.6: + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + dependencies: + '@xtuc/ieee754': 1.2.0 + + /@webassemblyjs/leb128@1.11.6: + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + dependencies: + '@xtuc/long': 4.2.2 + + /@webassemblyjs/utf8@1.11.6: + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + + /@webassemblyjs/wasm-edit@1.11.6: + resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-opt': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/wast-printer': 1.11.6 + + /@webassemblyjs/wasm-gen@1.11.6: + resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + /@webassemblyjs/wasm-opt@1.11.6: + resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-buffer': 1.11.6 + '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + + /@webassemblyjs/wasm-parser@1.11.6: + resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + /@webassemblyjs/wast-printer@1.11.6: + resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + dependencies: + '@webassemblyjs/ast': 1.11.6 + '@xtuc/long': 4.2.2 + + /@webgpu/glslang@0.0.15: + resolution: {integrity: sha512-niT+Prh3Aff8Uf1MVBVUsaNjFj9rJAKDXuoHIKiQbB+6IUP/3J3JIhBNyZ7lDhytvXxw6ppgnwKZdDJ08UMj4Q==} + dev: false + + /@webgpu/types@0.0.31: + resolution: {integrity: sha512-cvvCMSZBT4VsRNtt0lI6XQqvOIIWw6+NRUtnPUMDVDgsI4pCZColz3qzF5QcP9wIYOHEc3jssIBse8UWONKhlQ==} + dev: false + + /@webgpu/types@0.1.40: + resolution: {integrity: sha512-/BBkHLS6/eQjyWhY2H7Dx5DHcVrS2ICj9owvSRdgtQT6KcafLZA86tPze0xAOsd4FbsYKCUBUQyNi87q7gV7kw==} + dev: false + + /@xmldom/xmldom@0.8.10: + resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==} + engines: {node: '>=10.0.0'} + dev: false + + /@xmldom/xmldom@0.8.7: + resolution: {integrity: sha512-sI1Ly2cODlWStkINzqGrZ8K6n+MTSbAeQnAipGyL+KZCXuHaRlj2gyyy8B/9MvsFFqN7XHryQnB2QwhzvJXovg==} + engines: {node: '>=10.0.0'} + requiresBuild: true + dev: false + optional: true + + /@xobotyi/scrollbar-width@1.9.5: + resolution: {integrity: sha512-N8tkAACJx2ww8vFMneJmaAgmjAG1tnVBZJRLRcx061tmsLRZHSEZSLuGWnwPtunsSLvSqXQ2wfp7Mgqg1I+2dQ==} + dev: false + + /@xtuc/ieee754@1.2.0: + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + /@xtuc/long@4.2.2: + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + /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==} + deprecated: Use your platform's native atob() and btoa() methods instead + + /abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: false + optional: 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@6.0.0: + resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + dev: false + + /acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + dependencies: + acorn: 8.8.2 + acorn-walk: 8.2.0 + dev: true + + /acorn-import-assertions@1.9.0(acorn@8.8.2): + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + dependencies: + acorn: 8.8.2 + + /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.2): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.2 + + /acorn-walk@7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + dev: false + + /acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + + /acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + /acorn@8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + 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.2: + resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} + engines: {node: '>= 10.0.0'} + dev: false + + /aes-decrypter@4.0.1: + resolution: {integrity: sha512-H1nh/P9VZXUf17AA5NQfJML88CFjVBDuGkp5zDHa7oEhYN9TTpNLJknRY1ie0iSKWlDf6JRnJKaZVDSQdPy6Cg==} + dependencies: + '@babel/runtime': 7.22.3 + '@videojs/vhs-utils': 3.0.5 + global: 4.4.0 + pkcs7: 1.0.4 + 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(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + + /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.7(react@18.2.0): + resolution: {integrity: sha512-5e5WlPq81Y84UnTLOKIQeq2cJw4aa7yj8fR2Nb/oMmXPrWMjIMCbPS1o+fpxSfCaNA3AzOnnMc8AehWRZltkJQ==} + engines: {node: '>=8.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@babel/runtime': 7.22.3 + '@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 + tslib: 2.5.2 + 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.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + 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 + + /align-text@0.1.4: + resolution: {integrity: sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg==} + engines: {node: '>=0.10.0'} + dependencies: + kind-of: 3.2.2 + longest: 1.0.1 + repeat-string: 1.6.1 + dev: false + + /amdefine@1.0.1: + resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} + engines: {node: '>=0.4.2'} + dev: false + + /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@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + dev: false + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + /ansi-styles@2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + dev: false + + /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(react-dom@18.2.0)(react@18.2.0): + 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(react-dom@18.2.0)(react@18.2.0) + rc-slider: 8.2.0(react-dom@18.2.0)(react@18.2.0) + rc-swipeout: 2.0.11 + rmc-calendar: 1.1.4(react-dom@18.2.0)(react@18.2.0) + rmc-cascader: 5.0.3(react-dom@18.2.0)(react@18.2.0) + rmc-date-picker: 6.0.10(react-dom@18.2.0)(react@18.2.0) + rmc-dialog: 1.1.1(react-dom@18.2.0)(react@18.2.0) + 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(react-dom@18.2.0)(react@18.2.0) + rmc-nuka-carousel: 3.0.1 + rmc-picker: 5.0.10(react-dom@18.2.0)(react@18.2.0) + rmc-pull-to-refresh: 1.0.13 + rmc-steps: 1.0.1 + rmc-tabs: 1.2.29 + rmc-tooltip: 1.0.1(react-dom@18.2.0)(react@18.2.0) + 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.10(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-GihdwTGFW0dUaWjcvSIfejFcT63HjEp2EbYd+ojEXayldhey230KrHDJ+C53rkrkzLvymrPBfSxlLxJzyFIZsg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/colors': 6.0.0 + '@ant-design/icons': 4.8.0(react-dom@18.2.0)(react@18.2.0) + '@ant-design/react-slick': 0.29.2(react@18.2.0) + '@babel/runtime': 7.22.3 + '@ctrl/tinycolor': 3.6.0 + classnames: 2.3.2 + copy-to-clipboard: 3.3.3 + lodash: 4.17.21 + moment: 2.29.4 + rc-cascader: 3.7.2(react-dom@18.2.0)(react@18.2.0) + rc-checkbox: 3.0.1(react-dom@18.2.0)(react@18.2.0) + rc-collapse: 3.4.2(react-dom@18.2.0)(react@18.2.0) + rc-dialog: 9.0.2(react-dom@18.2.0)(react@18.2.0) + rc-drawer: 6.1.6(react-dom@18.2.0)(react@18.2.0) + rc-dropdown: 4.0.1(react-dom@18.2.0)(react@18.2.0) + rc-field-form: 1.27.4(react-dom@18.2.0)(react@18.2.0) + rc-image: 5.13.0(react-dom@18.2.0)(react@18.2.0) + rc-input: 0.1.4(react-dom@18.2.0)(react@18.2.0) + rc-input-number: 7.3.11(react-dom@18.2.0)(react@18.2.0) + rc-mentions: 1.13.1(react-dom@18.2.0)(react@18.2.0) + rc-menu: 9.8.4(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-notification: 4.6.1(react-dom@18.2.0)(react@18.2.0) + rc-pagination: 3.2.0(react-dom@18.2.0)(react@18.2.0) + rc-picker: 2.7.2(react-dom@18.2.0)(react@18.2.0) + rc-progress: 3.4.1(react-dom@18.2.0)(react@18.2.0) + rc-rate: 2.9.2(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-segmented: 2.1.2(react-dom@18.2.0)(react@18.2.0) + rc-select: 14.1.17(react-dom@18.2.0)(react@18.2.0) + rc-slider: 10.0.1(react-dom@18.2.0)(react@18.2.0) + rc-steps: 5.0.0(react-dom@18.2.0)(react@18.2.0) + rc-switch: 3.2.2(react-dom@18.2.0)(react@18.2.0) + rc-table: 7.26.0(react-dom@18.2.0)(react@18.2.0) + rc-tabs: 12.5.10(react-dom@18.2.0)(react@18.2.0) + rc-textarea: 0.4.7(react-dom@18.2.0)(react@18.2.0) + rc-tooltip: 5.2.2(react-dom@18.2.0)(react@18.2.0) + rc-tree: 5.7.4(react-dom@18.2.0)(react@18.2.0) + rc-tree-select: 5.5.5(react-dom@18.2.0)(react@18.2.0) + rc-trigger: 5.3.4(react-dom@18.2.0)(react@18.2.0) + rc-upload: 4.3.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + 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.5.1(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-H9vPVGQ/8fT9Zidl4fzMSVAOCDIe/ZQtiU2hDzrN2tqAbaxOet+1HqfoKv7dfy+e0ttKIFvs6Y2yWw/ign1MwQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@ant-design/colors': 7.0.0 + '@ant-design/cssinjs': 1.9.1(react-dom@18.2.0)(react@18.2.0) + '@ant-design/icons': 5.1.3(react-dom@18.2.0)(react@18.2.0) + '@ant-design/react-slick': 1.0.1(react@18.2.0) + '@babel/runtime': 7.22.3 + '@ctrl/tinycolor': 3.6.0 + '@rc-component/color-picker': 1.1.1(react-dom@18.2.0)(react@18.2.0) + '@rc-component/mutate-observer': 1.0.0(react-dom@18.2.0)(react@18.2.0) + '@rc-component/tour': 1.8.0(react-dom@18.2.0)(react@18.2.0) + '@rc-component/trigger': 1.13.3(react-dom@18.2.0)(react@18.2.0) + 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.12.0(react-dom@18.2.0)(react@18.2.0) + rc-checkbox: 3.0.1(react-dom@18.2.0)(react@18.2.0) + rc-collapse: 3.5.2(react-dom@18.2.0)(react@18.2.0) + rc-dialog: 9.1.0(react-dom@18.2.0)(react@18.2.0) + rc-drawer: 6.1.6(react-dom@18.2.0)(react@18.2.0) + rc-dropdown: 4.1.0(react-dom@18.2.0)(react@18.2.0) + rc-field-form: 1.31.0(react-dom@18.2.0)(react@18.2.0) + rc-image: 5.16.0(react-dom@18.2.0)(react@18.2.0) + rc-input: 1.0.4(react-dom@18.2.0)(react@18.2.0) + rc-input-number: 7.4.2(react-dom@18.2.0)(react@18.2.0) + rc-mentions: 2.2.0(react-dom@18.2.0)(react@18.2.0) + rc-menu: 9.8.4(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-notification: 5.0.4(react-dom@18.2.0)(react@18.2.0) + rc-pagination: 3.4.2(react-dom@18.2.0)(react@18.2.0) + rc-picker: 3.7.6(dayjs@1.11.7)(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0) + rc-progress: 3.4.1(react-dom@18.2.0)(react@18.2.0) + rc-rate: 2.10.0(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-segmented: 2.2.2(react-dom@18.2.0)(react@18.2.0) + rc-select: 14.5.1(react-dom@18.2.0)(react@18.2.0) + rc-slider: 10.1.1(react-dom@18.2.0)(react@18.2.0) + rc-steps: 6.0.0(react-dom@18.2.0)(react@18.2.0) + rc-switch: 4.1.0(react-dom@18.2.0)(react@18.2.0) + rc-table: 7.32.1(react-dom@18.2.0)(react@18.2.0) + rc-tabs: 12.6.0(react-dom@18.2.0)(react@18.2.0) + rc-textarea: 1.2.3(react-dom@18.2.0)(react@18.2.0) + rc-tooltip: 6.0.1(react-dom@18.2.0)(react@18.2.0) + rc-tree: 5.7.4(react-dom@18.2.0)(react@18.2.0) + rc-tree-select: 5.9.0(react-dom@18.2.0)(react@18.2.0) + rc-upload: 4.3.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + scroll-into-view-if-needed: 3.0.10 + throttle-debounce: 5.0.0 + transitivePeerDependencies: + - date-fns + - luxon + - 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 + + /aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + dev: false + optional: true + + /are-we-there-yet@2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + dev: false + optional: true + + /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.3: + resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} + engines: {node: '>=10'} + dependencies: + tslib: 2.5.2 + dev: true + + /aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + dependencies: + deep-equal: 2.2.1 + dev: true + + /arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + dev: false + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.5 + is-array-buffer: 3.0.2 + + /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.2.0 + es-abstract: 1.21.2 + get-intrinsic: 1.2.1 + 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.2.0 + es-abstract: 1.21.2 + 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.2.0 + es-abstract: 1.21.2 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.1 + dev: true + + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.0 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: false + + /arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + dev: true + + /as-number@1.0.0: + resolution: {integrity: sha512-HkI/zLo2AbSRO4fqVkmyf3hms0bJDs3iboHqTrNuwTiCRvdYXM7HFhfhB6Dk51anV2LM/IMB83mtK9mHw4FlAg==} + dev: false + + /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 + + /assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + dev: false + + /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 + + /async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + dev: false + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + /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.14(postcss@8.4.24): + resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.6 + caniuse-lite: 1.0.30001489 + fraction.js: 4.2.0 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /autoprefixer@9.8.8: + resolution: {integrity: sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==} + hasBin: true + dependencies: + browserslist: 4.21.6 + caniuse-lite: 1.0.30001489 + 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'} + + /aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + dev: true + + /aws4@1.12.0: + resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} + 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@29.5.0(@babel/core@7.22.1): + resolution: {integrity: sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.8.0 + dependencies: + '@babel/core': 7.22.1 + '@jest/transform': 29.5.0 + '@types/babel__core': 7.20.1 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 29.5.0(@babel/core@7.22.1) + chalk: 4.1.2 + graceful-fs: 4.2.11 + 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.6: + resolution: {integrity: sha512-N7FYnGh0DFsvDRkAPsvFq/metVfVD7P2h1rokOPpEH4cZbdRHCW+2jbXt0nnuqowkm/xhh2ww1anIdEpfYa7ZA==} + dependencies: + '@babel/helper-module-imports': 7.21.4 + 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.21.5 + '@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@29.5.0: + resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/template': 7.21.9 + '@babel/types': 7.22.3 + '@types/babel__core': 7.20.1 + '@types/babel__traverse': 7.20.0 + dev: true + + /babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + dependencies: + '@babel/runtime': 7.22.3 + cosmiconfig: 7.1.0 + resolve: 1.22.2 + dev: false + + /babel-plugin-polyfill-corejs2@0.4.3(@babel/core@7.22.1): + resolution: {integrity: sha512-bM3gHc337Dta490gg+/AseNB9L4YLHxq1nGKZZSHbhXv4aTYU2MD2cjza1Ru4S6975YLTaL1K8uJf6ukJhhmtw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.3 + '@babel/core': 7.22.1 + '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.1) + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3@0.8.1(@babel/core@7.22.1): + resolution: {integrity: sha512-ikFrZITKg1xH6pLND8zT14UPgjKHiGLqex7rGEZCH2EvhsneJaJPemmpQaIZV5AL03II+lXylw3UmddDK8RU5Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.1) + core-js-compat: 3.30.2 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-regenerator@0.5.0(@babel/core@7.22.1): + resolution: {integrity: sha512-hDJtKjMLVa7Z+LwnTCxoDLQj6wdc+B8dun7ayF2fYieI6OzfuvcLMB32ihJZ4UhCBwNYGl5bg/x/P9cMdnkc2g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.1 + '@babel/helper-define-polyfill-provider': 0.4.0(@babel/core@7.22.1) + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-styled-components@2.1.1(styled-components@5.3.11): + resolution: {integrity: sha512-c8lJlszObVQPguHkI+akXv8+Jgb9Ccujx0EetL7oIvwU100LxO6XAGe45qry37wUL40a5U9f23SYrivro2XKhA==} + peerDependencies: + styled-components: '>= 2' + dependencies: + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.21.4 + babel-plugin-syntax-jsx: 6.18.0 + lodash: 4.17.21 + picomatch: 2.3.1 + styled-components: 5.3.11(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + dev: true + + /babel-plugin-styled-components@2.1.3(styled-components@5.3.11): + resolution: {integrity: sha512-jBioLwBVHpOMU4NsueH/ADcHrjS0Y/WTpt2eGVmmuSFNEv2DF3XhcMncuZlbbjxQ4vzxg+yEr6E6TNjrIQbsJQ==} + peerDependencies: + styled-components: '>= 2' + dependencies: + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.21.4 + babel-plugin-syntax-jsx: 6.18.0 + lodash: 4.17.21 + picomatch: 2.3.1 + styled-components: 5.3.11(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) + dev: true + + /babel-plugin-syntax-jsx@6.18.0: + resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} + dev: true + + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.1): + resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.1 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.1) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.1) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.1) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.1) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.1) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.1) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.1) + dev: true + + /babel-preset-jest@29.5.0(@babel/core@7.22.1): + resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.1 + babel-plugin-jest-hoist: 29.5.0 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.1) + 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-integer@1.6.51: + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + engines: {node: '>=0.6'} + 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.2 + 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.5 + 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 + + /bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + dependencies: + big-integer: 1.6.51 + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /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 + + /browser-process-hrtime@1.0.0: + resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + dev: false + + /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.2 + 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.6: + resolution: {integrity: sha512-PF07dKGXKR+/bljJzCB6rAYtHEu21TthLxmJagtQizx+rwiqdRDBO5971Xu1N7MgcMLi4+mr4Cnl76x7O3DHtA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001489 + electron-to-chromium: 1.4.411 + node-releases: 2.0.12 + update-browserslist-db: 1.0.11(browserslist@4.21.6) + + /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==} + + /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 + + /bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + dependencies: + run-applescript: 5.0.0 + dev: true + + /bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + dev: true + + /bytewise-core@1.2.3: + resolution: {integrity: sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==} + dependencies: + typewise-core: 1.2.0 + dev: false + + /bytewise@1.1.0: + resolution: {integrity: sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==} + dependencies: + bytewise-core: 1.2.3 + typewise: 1.0.3 + dev: false + + /call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.1 + + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.1.1 + + /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.5.2 + 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@1.2.1: + resolution: {integrity: sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==} + engines: {node: '>=0.10.0'} + dev: false + + /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.30001489: + resolution: {integrity: sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==} + + /canvas@2.11.2: + resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==} + engines: {node: '>=6'} + requiresBuild: true + dependencies: + '@mapbox/node-pre-gyp': 1.0.11 + nan: 2.18.0 + simple-get: 3.1.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: false + optional: true + + /carlo@0.9.46: + resolution: {integrity: sha512-FwZ/wxjqe+5RgzF2SRsPSWsVB9+McAVRWW0tRkmbh7fBjrf3HFZZbcr8vr61p1K+NBaAPv57DRjxgIyfbHmd7g==} + engines: {node: '>=7.6.0'} + dependencies: + debug: 4.3.4(supports-color@5.5.0) + 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 + + /center-align@0.1.3: + resolution: {integrity: sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ==} + engines: {node: '>=0.10.0'} + dependencies: + align-text: 0.1.4 + lazy-cache: 1.0.4 + dev: false + + /chalk@1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + dev: false + + /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 + + /chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + dev: false + optional: true + + /chrome-trace-event@1.0.3: + resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==} + engines: {node: '>=6.0'} + + /ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + dev: true + + /ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + 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 + + /clamp@1.0.1: + resolution: {integrity: sha512-kgMuFyE78OC6Dyu3Dy7vcx4uy97EIbVxJB/B0eJ3bUNAkwdNcxYzgKltnyADiYwsR7SEqkkUPsEUT//OVS6XMA==} + dev: false + + /classnames@2.3.2: + resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} + + /clean-css@5.3.2: + resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==} + 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.9.0: + resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} + 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(@types/react@18.2.7)(react-dom@18.1.0)(react@18.1.0): + resolution: {integrity: sha512-YBNYOp00udy+NBEnUmM/3Df0Yco1iHNQ8k0ltlJVcDYK9AuYt14xPoJicBh/BokLqbzkci1p+pbdY5r4JXZC4g==} + peerDependencies: + react: '>=16.8.0' + dependencies: + '@floating-ui/react-dom-interactions': 0.3.1(@types/react@18.2.7)(react-dom@18.1.0)(react@18.1.0) + htm: 3.1.1 + react: 18.1.0 + react-merge-refs: 1.1.0 + transitivePeerDependencies: + - '@types/react' + - react-dom + dev: true + + /cliui@2.1.0: + resolution: {integrity: sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA==} + dependencies: + center-align: 0.1.3 + right-align: 0.1.3 + wordwrap: 0.0.2 + dev: false + + /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==} + + /color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: false + + /color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + dev: false + optional: true + + /color@3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + dev: false + + /colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + dev: true + + /colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + dev: true + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + dev: true + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + /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'} + + /commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + 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==} + dev: true + + /compute-scroll-into-view@3.0.3: + resolution: {integrity: sha512-nadqwNxghAGTamwIqQSG433W6OADZx2vCo3UXHNrzTRHK/htu+7+L0zhjEoaeaQVNAi3YgqWDv8+tzf0hRfR+A==} + + /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.8 + typedarray: 0.0.6 + dev: true + + /console-browserify@1.2.0: + resolution: {integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==} + dev: true + + /console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + dev: false + optional: 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.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + dev: true + + /contour_plot@0.0.1: + resolution: {integrity: sha512-Nil2HI76Xux6sVGORvhSS8v66m+/h5CwFkBJDO+U5vWaMdNC0yXNCsGDPbzPhvqOEU5koebhdEvD372LI+IyLw==} + dev: false + + /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.3.1: + resolution: {integrity: sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==} + engines: {node: '>= 0.6'} + dev: false + + /cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + 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.5: + resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} + engines: {node: '>=12.13'} + dependencies: + is-what: 4.1.11 + dev: true + + /copy-to-clipboard@3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + dependencies: + toggle-selection: 1.0.6 + + /core-js-compat@3.30.2: + resolution: {integrity: sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA==} + dependencies: + browserslist: 4.21.6 + dev: true + + /core-js-pure@3.30.2: + resolution: {integrity: sha512-p/npFUJXXBkCCTIlEGBdghofn00jWG6ZOtdoIXSJmAu2QBvN0IqpZXWweOytcwE6cfx8ZvVUy1vw8zxhe4Y2vg==} + 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.28.0: + resolution: {integrity: sha512-GiZn9D4Z/rSYvTeg1ljAIsEqFm0LaN9gVtwDCrKL80zHtS31p9BAjmTxVqTQDMpwlMolJZOFntUG2uwyj7DAqw==} + 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(postcss@8.4.24): + resolution: {integrity: sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.24 + postcss-selector-parser: 6.0.13 + 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(postcss@8.4.24): + resolution: {integrity: sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.24 + postcss-selector-parser: 6.0.13 + dev: true + + /css-in-js-utils@3.1.0: + resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} + dependencies: + hyphenate-style-name: 1.0.4 + dev: false + + /css-loader@6.7.1(webpack@5.84.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.24) + postcss: 8.4.24 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.24) + postcss-modules-local-by-default: 4.0.3(postcss@8.4.24) + postcss-modules-scope: 3.0.0(postcss@8.4.24) + postcss-modules-values: 4.0.0(postcss@8.4.24) + postcss-value-parser: 4.2.0 + semver: 7.5.1 + webpack: 5.84.1 + dev: true + + /css-prefers-color-scheme@6.0.3(postcss@8.4.24): + resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.24 + 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.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + 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 + + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true + + /csscolorparser@1.0.3: + resolution: {integrity: sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==} + dev: false + + /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==} + + /cssom@0.4.4: + resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} + dev: false + + /cssom@0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + + /cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + dependencies: + cssom: 0.3.8 + + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + + /current-script-polyfill@1.0.0: + resolution: {integrity: sha512-qv8s+G47V6Hq+g2kRE5th+ASzzrL7b6l+tap1DHKK25ZQJv3yIFhH96XaQ7NGL+zRW3t/RDbweJf/dJDe5Z5KA==} + dev: true + + /d3-array@1.2.4: + resolution: {integrity: sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==} + dev: false + + /d3-collection@1.0.7: + resolution: {integrity: sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==} + dev: false + + /d3-color@1.4.1: + resolution: {integrity: sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==} + dev: false + + /d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + dev: false + + /d3-dispatch@2.0.0: + resolution: {integrity: sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==} + dev: false + + /d3-dsv@1.2.0: + resolution: {integrity: sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==} + hasBin: true + dependencies: + commander: 2.20.3 + iconv-lite: 0.4.24 + rw: 1.3.3 + dev: false + + /d3-ease@1.0.7: + resolution: {integrity: sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==} + dev: false + + /d3-force@2.1.1: + resolution: {integrity: sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==} + dependencies: + d3-dispatch: 2.0.0 + d3-quadtree: 2.0.0 + d3-timer: 2.0.0 + dev: false + + /d3-format@1.4.5: + resolution: {integrity: sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==} + dev: false + + /d3-hexbin@0.2.2: + resolution: {integrity: sha512-KS3fUT2ReD4RlGCjvCEm1RgMtp2NFZumdMu4DBzQK8AZv3fXRM6Xm8I4fSU07UXvH4xxg03NwWKWdvxfS/yc4w==} + dev: false + + /d3-hierarchy@2.0.0: + resolution: {integrity: sha512-SwIdqM3HxQX2214EG9GTjgmCc/mbSx4mQBn+DuEETubhOw6/U3fmnji4uCVrmzOydMHSO1nZle5gh6HB/wdOzw==} + dev: false + + /d3-interpolate@1.4.0: + resolution: {integrity: sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==} + dependencies: + d3-color: 1.4.1 + dev: false + + /d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + dependencies: + d3-color: 3.1.0 + dev: false + + /d3-quadtree@2.0.0: + resolution: {integrity: sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw==} + dev: false + + /d3-regression@1.3.10: + resolution: {integrity: sha512-PF8GWEL70cHHWpx2jUQXc68r1pyPHIA+St16muk/XRokETzlegj5LriNKg7o4LR0TySug4nHYPJNNRz/W+/Niw==} + dev: false + + /d3-scale@2.2.2: + resolution: {integrity: sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==} + dependencies: + d3-array: 1.2.4 + d3-collection: 1.0.7 + d3-format: 1.4.5 + d3-interpolate: 1.4.0 + d3-time: 1.1.0 + d3-time-format: 2.3.0 + dev: false + + /d3-time-format@2.3.0: + resolution: {integrity: sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==} + dependencies: + d3-time: 1.1.0 + dev: false + + /d3-time@1.1.0: + resolution: {integrity: sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==} + dev: false + + /d3-timer@1.0.10: + resolution: {integrity: sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==} + dev: false + + /d3-timer@2.0.0: + resolution: {integrity: sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==} + dev: false + + /d@1.0.1: + resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + dependencies: + es5-ext: 0.10.62 + type: 1.2.0 + dev: true + + /dagre-compound@0.0.11(dagre@0.8.5): + resolution: {integrity: sha512-UrSgRP9LtOZCYb9e5doolZXpc7xayyszgyOs7uakTK4n4KsLegLVTRRtq01GpQd/iZjYw5fWMapx9ed+c80MAQ==} + engines: {node: '>=6.0.0'} + peerDependencies: + dagre: ^0.8.5 + dependencies: + dagre: 0.8.5 + dev: false + + /dagre@0.8.5: + resolution: {integrity: sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==} + dependencies: + graphlib: 2.1.8 + lodash: 4.17.21 + dev: false + + /dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + dependencies: + 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@2.0.0: + resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} + engines: {node: '>=10'} + dependencies: + abab: 2.0.6 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + dev: false + + /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 + + /date-fns@2.30.0: + resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} + engines: {node: '>=0.11'} + dependencies: + '@babel/runtime': 7.22.3 + 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.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + + /dayjs@1.11.7: + resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} + + /debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + dev: false + + /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(supports-color@5.5.0): + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + supports-color: 5.5.0 + + /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'} + + /decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + + /decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + dev: true + + /decompress-response@4.2.1: + resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==} + engines: {node: '>=8'} + dependencies: + mimic-response: 2.1.0 + dev: false + optional: true + + /dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + dev: true + + /deep-equal@1.1.2: + resolution: {integrity: sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==} + engines: {node: '>= 0.4'} + dependencies: + is-arguments: 1.1.1 + is-date-object: 1.0.5 + is-regex: 1.1.4 + object-is: 1.1.5 + object-keys: 1.1.1 + regexp.prototype.flags: 1.5.1 + dev: false + + /deep-equal@2.2.1: + resolution: {integrity: sha512-lKdkdV6EOGoVn65XaOsPdH4rMxTZOnmFyuIkMjM1i5HHCbfjC97dawgTAy0deYNfuqUqW+Q5VrVaQYtUpSd6yQ==} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.2 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.1 + is-arguments: 1.1.1 + is-array-buffer: 3.0.2 + 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 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.0 + 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.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + /default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + dev: true + + /default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.1.1 + titleize: 3.0.0 + dev: true + + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + dev: true + + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + gopd: 1.0.1 + has-property-descriptors: 1.0.0 + + /define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + /define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + dev: true + + /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 + object-keys: 1.1.1 + + /defined@1.0.1: + resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} + dev: false + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + /delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + dev: false + optional: 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-browser@5.3.0: + resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} + dev: false + + /detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true + + /detect-indent@7.0.1: + resolution: {integrity: sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==} + engines: {node: '>=12.20'} + dev: true + + /detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + dev: true + + /detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} + dev: false + optional: true + + /detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + dev: true + + /detect-newline@4.0.0: + resolution: {integrity: sha512-1aXUEPdfGdzVPFpzGJJNgq9o81bGg1s09uxTWsqBlo9PI332uyJRQq13+LK/UN4JfxJbFdCXonUFQ9R/p7yCtw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + 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.2 + debug: 2.6.9 + transitivePeerDependencies: + - supports-color + dev: false + + /diff-sequences@29.4.3: + resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} + 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.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + 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==} + + /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@2.0.1: + resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} + engines: {node: '>=8'} + deprecated: Use your platform's native DOMException instead + dependencies: + webidl-conversions: 5.0.0 + dev: false + + /domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead + dependencies: + webidl-conversions: 7.0.0 + + /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.5.2 + dev: true + + /dotenv@8.6.0: + resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + engines: {node: '>=10'} + dev: true + + /dotignore@0.1.2: + resolution: {integrity: sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==} + hasBin: true + dependencies: + minimatch: 3.1.2 + dev: false + + /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.2 + stream-shift: 1.0.1 + dev: true + + /dva-core@1.5.0-beta.2(redux@3.7.2): + resolution: {integrity: sha512-xmtr/J63EZXBdVXNBW+QCD7p9CaE8kAo2U1faRyv3PIGcy0G3Y6IBDNtoBB/Cj3nzk/jvX0dv96Hnh1kpSnI7Q==} + peerDependencies: + redux: 3.x + dependencies: + '@babel/runtime': 7.22.3 + flatten: 1.0.3 + global: 4.4.0 + invariant: 2.2.4 + is-plain-object: 2.0.4 + redux: 3.7.2 + redux-saga: 0.16.2 + warning: 3.0.0 + dev: true + + /dva-core@2.0.4(redux@3.7.2): + resolution: {integrity: sha512-Zh39llFyItu9HKXKfCZVf9UFtDTcypdAjGBew1S+wK8BGVzFpm1GPTdd6uIMeg7O6STtCvt2Qv+RwUut1GFynA==} + peerDependencies: + redux: 4.x + dependencies: + '@babel/runtime': 7.22.3 + flatten: 1.0.3 + global: 4.4.0 + invariant: 2.2.4 + is-plain-object: 2.0.4 + redux: 3.7.2 + redux-saga: 0.16.2 + warning: 3.0.0 + dev: true + + /dva-core@2.0.4(redux@4.2.1): + resolution: {integrity: sha512-Zh39llFyItu9HKXKfCZVf9UFtDTcypdAjGBew1S+wK8BGVzFpm1GPTdd6uIMeg7O6STtCvt2Qv+RwUut1GFynA==} + peerDependencies: + redux: 4.x + dependencies: + '@babel/runtime': 7.22.3 + flatten: 1.0.3 + global: 4.4.0 + invariant: 2.2.4 + is-plain-object: 2.0.4 + redux: 4.2.1 + redux-saga: 0.16.2 + warning: 3.0.0 + dev: true + + /dva-immer@1.0.1(dva@2.5.0-beta.2): + resolution: {integrity: sha512-Oe+yFTtu2UMNcMoBLLTa/ms1RjUry38Yf0ClN8LiHbF+gT2QAdLYLk3miu1dDtm3Sxl9nk+DH1edKX0Hy49uQg==} + peerDependencies: + dva: ^2.5.0-0 + dependencies: + '@babel/runtime': 7.22.3 + dva: 2.5.0-beta.2(react-dom@18.2.0)(react@18.2.0) + immer: 8.0.4 + dev: true + + /dva-loading@3.0.24(dva-core@2.0.4): + resolution: {integrity: sha512-3j4bmuXOYH93xe+CC//z3Si8XMx6DLJveep+UbzKy0jhA7oQrCCZTdKxu0UPYXeAMYXpCO25pG4JOnVhzmC7ug==} + peerDependencies: + dva-core: ^1.1.0 || ^1.5.0-0 || ^1.6.0-0 + dependencies: + '@babel/runtime': 7.22.3 + dva-core: 2.0.4(redux@4.2.1) + dev: true + + /dva@2.5.0-beta.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-kc2+CHhF1cNIU3Rg1miMhHgOKJ/VDrq9d6ynVBZf1EN2YKWU3MVFq/uTTBqMr2qkR0m9f8VKHOFmfKLtfMI93Q==} + peerDependencies: + react: 15.x || ^16.0.0-0 + react-dom: 15.x || ^16.0.0-0 + dependencies: + '@babel/runtime': 7.22.3 + '@types/isomorphic-fetch': 0.0.34 + '@types/react-router-dom': 4.3.5 + '@types/react-router-redux': 5.0.22 + dva-core: 1.5.0-beta.2(redux@3.7.2) + global: 4.4.0 + history: 4.10.1 + invariant: 2.2.4 + isomorphic-fetch: 2.2.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-redux: 5.1.2(react@18.2.0)(redux@3.7.2) + react-router-dom: 4.3.1(react@18.2.0) + react-router-redux: 5.0.0-alpha.9(react@18.2.0) + redux: 3.7.2 + dev: true + + /earcut@2.2.4: + resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==} + dev: false + + /ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: true + + /echarts-for-react@3.0.2(echarts@5.4.3)(react@18.2.0): + resolution: {integrity: sha512-DRwIiTzx8JfwPOVgGttDytBqdp5VzCSyMRIxubgU/g2n9y3VLUmF2FK7Icmg/sNVkv4+rktmrLN9w22U2yy3fA==} + peerDependencies: + echarts: ^3.0.0 || ^4.0.0 || ^5.0.0 + react: ^15.0.0 || >=16.0.0 + dependencies: + echarts: 5.4.3 + fast-deep-equal: 3.1.3 + react: 18.2.0 + size-sensor: 1.0.2 + dev: false + + /echarts@5.4.3: + resolution: {integrity: sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==} + dependencies: + tslib: 2.3.0 + zrender: 5.4.4 + dev: false + + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: true + + /electron-to-chromium@1.4.411: + resolution: {integrity: sha512-5VXLW4Qw89vM2WTICHua/y8v7fKGDRVa2VPOtBB9IpLvW316B+xd8yD1wTmLPY2ot/00P/qt87xdolj4aG/Lzg==} + + /element-resize-event@3.0.6: + resolution: {integrity: sha512-sSeXY9rNDp86bJODW68pxLcy3A5FrPZfIgOrJHzqgYzX513Zq6/ytdBigp7KeJEpZZopBBSiO1cVuiRkZpNxLw==} + dev: false + + /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==} + + /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.14.1: + resolution: {integrity: sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + /enhanced-resolve@5.9.3: + resolution: {integrity: sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + 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.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + 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: + is-arrayish: 0.2.1 + + /error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + dependencies: + stackframe: 1.3.4 + + /es-abstract@1.21.2: + resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.2.1 + 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.5 + is-array-buffer: 3.0.2 + 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.3 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.0 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.7 + 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-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.2 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 + 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.12 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.0.1 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.13 + dev: false + + /es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + 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 + stop-iteration-iterator: 1.0.0 + dev: true + + /es-module-lexer@1.2.1: + resolution: {integrity: sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==} + + /es-set-tostringtag@2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + has: 1.0.3 + has-tostringtag: 1.0.0 + + /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 + + /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.82: + resolution: {integrity: sha512-Y4vitTOiUyvIHPMcj6yrLaS2Un1SLlH9opeHZmpF68e8CFL173XeDkSA2UOVnDDB9WRi2+wztzbcIXRhIeQVnA==} + 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@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 + + /esbuild@0.17.19: + resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.19 + '@esbuild/android-arm64': 0.17.19 + '@esbuild/android-x64': 0.17.19 + '@esbuild/darwin-arm64': 0.17.19 + '@esbuild/darwin-x64': 0.17.19 + '@esbuild/freebsd-arm64': 0.17.19 + '@esbuild/freebsd-x64': 0.17.19 + '@esbuild/linux-arm': 0.17.19 + '@esbuild/linux-arm64': 0.17.19 + '@esbuild/linux-ia32': 0.17.19 + '@esbuild/linux-loong64': 0.17.19 + '@esbuild/linux-mips64el': 0.17.19 + '@esbuild/linux-ppc64': 0.17.19 + '@esbuild/linux-riscv64': 0.17.19 + '@esbuild/linux-s390x': 0.17.19 + '@esbuild/linux-x64': 0.17.19 + '@esbuild/netbsd-x64': 0.17.19 + '@esbuild/openbsd-x64': 0.17.19 + '@esbuild/sunos-x64': 0.17.19 + '@esbuild/win32-arm64': 0.17.19 + '@esbuild/win32-ia32': 0.17.19 + '@esbuild/win32-x64': 0.17.19 + 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 + + /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.8.0(eslint@7.32.0): + resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} + 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(@typescript-eslint/eslint-plugin@5.59.7)(eslint@7.32.0)(typescript@4.9.5): + 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.59.7(@typescript-eslint/parser@5.59.7)(eslint@7.32.0)(typescript@4.9.5) + '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@4.9.5) + eslint: 7.32.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@5.48.1)(eslint@8.35.0)(jest@29.5.0)(typescript@5.0.2): + resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 + eslint: ^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(@typescript-eslint/parser@5.48.1)(eslint@8.35.0)(typescript@5.0.2) + '@typescript-eslint/utils': 5.59.7(eslint@8.35.0)(typescript@5.0.2) + eslint: 8.35.0 + jest: 29.5.0(@types/node@20.2.5)(ts-node@10.9.1) + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /eslint-plugin-jest@27.2.1(@typescript-eslint/eslint-plugin@5.48.1)(eslint@8.41.0)(jest@29.5.0)(typescript@5.0.2): + resolution: {integrity: sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 + eslint: ^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(@typescript-eslint/parser@5.48.1)(eslint@8.41.0)(typescript@5.0.2) + '@typescript-eslint/utils': 5.59.7(eslint@8.41.0)(typescript@5.0.2) + eslint: 8.41.0 + jest: 29.5.0(@types/node@20.2.5)(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.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-hooks@4.6.0(eslint@8.35.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: 8.35.0 + dev: true + + /eslint-plugin-react-hooks@4.6.0(eslint@8.41.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: 8.41.0 + dev: true + + /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 + 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-react@7.32.2(eslint@8.35.0): + resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} + 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: 8.35.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.32.2(eslint@8.41.0): + resolution: {integrity: sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==} + 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: 8.41.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.27 + reserved-words: 0.1.2 + safe-regex: 2.1.1 + semver: 7.5.1 + 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 + + /eslint-scope@7.2.0: + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} + 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.22.1 + '@babel/eslint-parser': 7.21.8(@babel/core@7.22.1)(eslint@7.32.0) + eslint: 7.32.0 + eslint-visitor-keys: 2.1.0 + esquery: 1.5.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.35.0): + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.35.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-utils@3.0.0(eslint@8.41.0): + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.41.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /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'} + dev: true + + /eslint-visitor-keys@3.4.1: + resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} + 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(supports-color@5.5.0) + 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.5.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.20.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.5.1 + 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.35.0: + resolution: {integrity: sha512-BxAf1fVL7w+JLRQhWl2pzGeSiGqbWumV4WNvc9Rhp6tiCtm4oHnyPBSEtMGZwrQgudFQ+otqzWoPB7x+hxoWsw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': 2.0.3 + '@eslint/js': 8.35.0 + '@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(supports-color@5.5.0) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.0 + eslint-utils: 3.0.0(eslint@8.35.0) + eslint-visitor-keys: 3.4.1 + espree: 9.5.2 + esquery: 1.5.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.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.4.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.41.0: + resolution: {integrity: sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.41.0) + '@eslint-community/regexpp': 4.5.1 + '@eslint/eslintrc': 2.0.3 + '@eslint/js': 8.41.0 + '@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(supports-color@5.5.0) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.0 + eslint-visitor-keys: 3.4.1 + espree: 9.5.2 + esquery: 1.5.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.20.0 + graphemer: 1.4.0 + 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-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 + 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.5.2: + resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.2 + acorn-jsx: 5.3.2(acorn@8.8.2) + eslint-visitor-keys: 3.4.1 + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + 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'} + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + /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 + + /eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + dev: false + + /eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + dev: false + + /events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + /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 + + /execa@7.1.1: + resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.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.5.0: + resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/expect-utils': 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + 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.5 + 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-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + dependencies: + is-extendable: 0.1.1 + dev: false + + /extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + dev: false + + /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 + + /extrude-polyline@1.0.6: + resolution: {integrity: sha512-fcKIanU/v+tcdgG0+xMbS0C2VZ0/CF3qqxSjHiWfWICh0yFBezPr3SsOhgdzwE5E82plG6p1orEsfSqgldpxVg==} + dependencies: + as-number: 1.0.0 + gl-vec2: 1.3.0 + polyline-miter-util: 1.0.1 + dev: false + + /extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + dev: true + + /fabric@5.3.0: + resolution: {integrity: sha512-AVayKuzWoXM5cTn7iD3yNWBlfEa8r1tHaOe2g8NsZrmWKAHjryTxT/j6f9ncRfOWOF0I1Ci1AId3y78cC+GExQ==} + engines: {node: '>=14.0.0'} + optionalDependencies: + canvas: 2.11.2 + jsdom: 19.0.0(canvas@2.11.2) + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /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-loops@1.1.3: + resolution: {integrity: sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==} + dev: false + + /fast-redact@3.2.0: + resolution: {integrity: sha512-zaTadChr+NekyzallAMXATXLOR8MNx3zqpZ0MUF2aGf4EathnG0f32VLODNlY8IuGY3HoRO2L6/6fSzNsLaHIw==} + engines: {node: '>=6'} + dev: true + + /fast-safe-stringify@2.1.1: + resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + dev: true + + /fast-shallow-equal@1.0.0: + resolution: {integrity: sha512-HPtaa38cPgWvaCFmRNhlc6NG7pv6NUHqjPgVAkWGoB9mQMwYB27/K0CvOM5Czy+qpT3e8XJ6Q4aPAnzpNpzNaw==} + dev: false + + /fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + dev: true + + /fastest-stable-stringify@2.0.2: + resolution: {integrity: sha512-bijHueCGd0LqqNK9b5oCMHc0MluJAx0cwqASgbWMvkO01lCYgIhacVRLcaDz3QnyYIRNJRDwMb41VuT6pHJ91Q==} + dev: false + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + 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.35 + dev: true + + /fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + dependencies: + pend: 1.2.0 + dev: true + + /fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + dev: false + + /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} + 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 + + /flru@1.0.2: + resolution: {integrity: sha512-kWyh8ADvHBFz6ua5xYOPnUroZTT/bwWfrCeL0Wj1dzG4/YOmOcfJ99W8dOVyyynJN35rZ9aCOtHChqQovV7yog==} + engines: {node: '>=6'} + dev: false + + /fmin@0.0.2: + resolution: {integrity: sha512-sSi6DzInhl9d8yqssDfGZejChO8d2bAGIpysPsvYsxFe898z89XhCZg6CPNV3nhUhFefeC/AXZK2bAJxlBjN6A==} + dependencies: + contour_plot: 0.0.1 + json2module: 0.0.3 + rollup: 0.25.8 + tape: 4.17.0 + uglify-js: 2.8.29 + dev: false + + /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 + + /forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + dev: true + + /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.41.0)(typescript@5.0.2)(webpack@5.84.1): + resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} + 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.21.4 + '@types/json-schema': 7.0.12 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 6.0.0 + deepmerge: 4.3.1 + eslint: 8.41.0 + fs-extra: 9.1.0 + glob: 7.2.3 + memfs: 3.5.1 + minimatch: 3.1.2 + schema-utils: 2.7.0 + semver: 7.5.1 + tapable: 1.1.3 + typescript: 5.0.2 + webpack: 5.84.1 + dev: false + + /fork-ts-checker-webpack-plugin@8.0.0(typescript@5.0.2)(webpack@5.84.1): + resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} + engines: {node: '>=12.13.0', yarn: '>=1.0.0'} + peerDependencies: + typescript: '>3.6.0' + webpack: ^5.11.0 + dependencies: + '@babel/code-frame': 7.21.4 + chalk: 4.1.2 + chokidar: 3.5.3 + cosmiconfig: 7.1.0 + deepmerge: 4.3.1 + fs-extra: 10.1.0 + memfs: 3.5.1 + minimatch: 3.1.2 + node-abort-controller: 3.1.1 + schema-utils: 3.1.2 + semver: 7.5.1 + tapable: 2.2.1 + typescript: 5.0.2 + webpack: 5.84.1 + 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@3.0.1: + resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /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 + + /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'} + 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.11 + 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.11 + 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.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: false + + /fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + dev: false + optional: true + + /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-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + /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.2.0 + es-abstract: 1.21.2 + functions-have-names: 1.2.3 + dev: true + + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.0 + es-abstract: 1.22.3 + functions-have-names: 1.2.3 + dev: false + + /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==} + + /gauge@3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + dev: false + optional: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + /geojson-vt@3.2.1: + resolution: {integrity: sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==} + dev: false + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-intrinsic@1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-proto: 1.0.1 + has-symbols: 1.0.3 + + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + dependencies: + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + + /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'} + + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + + /get-tsconfig@4.5.0: + resolution: {integrity: sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==} + dev: true + + /get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + dev: false + + /getnpmregistry@1.0.1: + resolution: {integrity: sha512-OZRQ1RmRC0JduSLlQrHAaBLLrB23D3gaREsMBtM7aV8pxKB3duPs+a7iH7662b8zu1G9H6wiOvZc814g/bcHVg==} + dependencies: + node-fetch: 2.6.11 + 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 + + /git-hooks-list@3.1.0: + resolution: {integrity: sha512-LF8VeHeR7v+wAbXqfgRlTSX/1BJR9Q1vEMR8JAz1cEg6GX07+zyj3sAdDvYjj/xnlIfVuGgj4qBei1K3hKH+PA==} + dev: true + + /gl-matrix@3.4.3: + resolution: {integrity: sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==} + dev: false + + /gl-vec2@1.3.0: + resolution: {integrity: sha512-YiqaAuNsheWmUV0Sa8k94kBB0D6RWjwZztyO+trEYS8KzJ6OQB/4686gdrf59wld4hHFIvaxynO3nRxpk1Ij/A==} + dev: false + + /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-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + /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 + + /glob@9.3.5: + resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + fs.realpath: 1.0.0 + minimatch: 8.0.4 + minipass: 4.2.8 + path-scurry: 1.9.2 + dev: true + + /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 + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + /globals@13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + 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.2.0 + + /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.4 + 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.4 + merge2: 1.4.1 + slash: 3.0.0 + + /globby@13.1.4: + resolution: {integrity: sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.2.12 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 4.0.0 + dev: true + + /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.8 + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.1 + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + /grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + /graphlib@2.1.8: + resolution: {integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==} + dependencies: + lodash: 4.17.21 + dev: false + + /grid-index@1.1.0: + resolution: {integrity: sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==} + dev: false + + /gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + dependencies: + duplexer: 0.1.2 + dev: false + + /hammerjs@2.0.8: + resolution: {integrity: sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==} + engines: {node: '>=0.8.0'} + 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-ansi@2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: false + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + /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.2.1 + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + + /has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + dev: false + optional: 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.2 + 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 + + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /history@4.10.1: + resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} + dependencies: + '@babel/runtime': 7.22.3 + loose-envify: 1.4.0 + resolve-pathname: 3.0.0 + tiny-invariant: 1.3.1 + tiny-warning: 1.0.3 + value-equal: 1.0.1 + dev: true + + /history@5.3.0: + resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} + dependencies: + '@babel/runtime': 7.22.3 + 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@2.5.5: + resolution: {integrity: sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==} + 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.2: + resolution: {integrity: sha512-Z6vLmJTYzkbZZXlBkhrYB962Q/rZGc/WHQiyEGu9ZZVF7bAeFDjjDa31grWREuw9Ygb4zmlov2bTkPYqj0aFnQ==} + 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.8 + wbuf: 1.7.3 + dev: true + + /htm@3.1.1: + resolution: {integrity: sha512-983Vyg8NwUE7JkZ6NmOqpCZ+sh1bKv2iYTlUkzlWmA5JD2acKoxd4KVxbMmxX/85mtfdnDmTFoNKcg5DGAvxNQ==} + dev: true + + /html-encoding-sniffer@2.0.1: + resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} + engines: {node: '>=10'} + dependencies: + whatwg-encoding: 1.0.5 + dev: false + + /html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + dependencies: + whatwg-encoding: 2.0.0 + + /html-entities@2.3.3: + resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} + dev: true + + /html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + /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.2 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.17.6 + dev: true + + /html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + dev: true + + /html-webpack-plugin@5.5.0(webpack@5.84.1): + 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 + webpack: 5.84.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.2 + 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@4.0.1: + resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + engines: {node: '>= 6'} + dependencies: + '@tootallnate/once': 1.1.2 + agent-base: 6.0.2 + debug: 4.3.4(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + dev: false + + /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(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + + /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(supports-color@5.5.0) + transitivePeerDependencies: + - supports-color + + /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 + + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: true + + /husky@7.0.4: + resolution: {integrity: sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==} + engines: {node: '>=12'} + hasBin: true + dev: true + + /hyphenate-style-name@1.0.4: + resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} + dev: false + + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + + /icss-utils@5.1.0(postcss@8.4.24): + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.24 + 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==} + + /ignore@4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + dev: true + + /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.21: + resolution: {integrity: sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==} + 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.6: + resolution: {integrity: sha512-5MQkbwIr8n/bXOoE05M5/Nm0lnHO46vnb3D6svSvtVwpDqwhd/X14zjLcU31QWZ6gL8rUXNzj6vKHx4yOUL6gQ==} + dependencies: + '@babel/runtime': 7.22.3 + 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 + + /individual@2.0.0: + resolution: {integrity: sha512-pWt8hBCqJsUWI/HtcfWod7+N9SgAqyPEaF7JQjwzjn5vGrpg6aQ5qeAFQ7dx//UH4J1O+7xqew+gCeeFt6xN/g==} + dev: false + + /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==} + + /inline-style-prefixer@7.0.0: + resolution: {integrity: sha512-I7GEdScunP1dQ6IM2mQWh6v0mOYdYmH3Bp31UecKdrcUgcURTcctSe1IECdUznSHKSmsHtjrT3CwCPI1pyxfUQ==} + dependencies: + css-in-js-utils: 3.1.0 + fast-loops: 1.1.3 + dev: false + + /insert-css@2.0.0: + resolution: {integrity: sha512-xGq5ISgcUP5cvGkS2MMFLtPDBtrtQPSFfC6gA6U8wHKqfjTIMZLZNxOItQnoSjdOzlXOLU/yD32RKC4SvjNbtA==} + dev: false + + /internal-slot@1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + has: 1.0.3 + side-channel: 1.0.4 + + /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.5.2 + 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 + + /inversify-inject-decorators@3.1.0: + resolution: {integrity: sha512-/seBlVp5bXrLQS3DpKEmlgeZL6C7Tf/QITd+IMQrbBBGuCbxb7k3hRAWu9XSreNpFzLgSboz3sClLSEmGwHphw==} + dev: false + + /inversify@5.1.1: + resolution: {integrity: sha512-j8grHGDzv1v+8T1sAQ+3boTCntFPfvxLCkNcxB1J8qA0lUN+fAlSyYd+RXKvaPRL4AGyPxViutBEJHNXOyUdFQ==} + dev: false + + /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.5.0: + resolution: {integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==} + 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-any-array@2.0.1: + resolution: {integrity: sha512-UtilS7hLRu++wb/WBAw9bNuP1Eg04Ivn1vERJck8zJthEvXCBEBpGR/33u/xLKWEQf95803oalHrVDptcAvFdQ==} + dev: false + + /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 + + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + /is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: false + + /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 + + /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.5 + has-tostringtag: 1.0.0 + + /is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + dev: false + + /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'} + + /is-core-module@2.12.1: + resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} + dependencies: + has: 1.0.3 + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.0 + dev: false + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + + /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-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: true + + /is-equal@1.6.4: + resolution: {integrity: sha512-NiPOTBb5ahmIOYkJ7mVTvvB1bydnTzixvfO+59AjJKBpyjPBIULL3EHGxySyZijlVpewveJyhiLQThcivkkAtw==} + engines: {node: '>= 0.4'} + dependencies: + es-get-iterator: 1.1.3 + 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.3 + object.entries: 1.1.6 + object.getprototypeof: 1.0.4 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + dev: true + + /is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + dev: false + + /is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + dependencies: + is-plain-object: 2.0.4 + dev: false + + /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'} + + /is-function@1.0.2: + resolution: {integrity: sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==} + dev: false + + /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-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: 3.0.0 + 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'} + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + + /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-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + 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 + + /is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + /is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + /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 + + /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.5 + + /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-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + + /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-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.13 + + /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.5 + + /is-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + dev: true + + /is-what@3.14.1: + resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} + dev: true + + /is-what@4.1.11: + resolution: {integrity: sha512-gr9+qDrJvdwT4+N2TAACsZQIB4Ow9j2eefqlh3m9JUV41M1LoKhcE+/j+IVni/r6U8Jnc1PwhjdjVJr+Xmtb0A==} + engines: {node: '>=12.13'} + 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==} + + /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'} + + /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@4.0.2: + resolution: {integrity: sha512-1Yd+CF/7al18/N2BDbsLBcp6RO3tucSW+jcLq24dqdX5MNbCNTw1z4BsGsp4zNmjr/Izm2cs/cEqZPp4kvWSCA==} + dependencies: + node-fetch: 3.3.1 + unfetch: 5.0.0 + 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.22.1 + '@babel/parser': 7.22.3 + '@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(supports-color@5.5.0) + 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.5.0: + resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} + 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.5.0: + resolution: {integrity: sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/expect': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.2.5 + chalk: 4.1.2 + co: 4.6.0 + dedent: 0.7.0 + is-generator-fn: 2.1.0 + jest-each: 29.5.0 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-runtime: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + p-limit: 3.1.0 + pretty-format: 29.5.0 + pure-rand: 6.0.2 + slash: 3.0.0 + stack-utils: 2.0.6 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-cli@29.5.0(@types/node@20.2.5)(ts-node@10.9.1): + resolution: {integrity: sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==} + 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.5.0(ts-node@10.9.1) + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.1.0 + jest-config: 29.5.0(@types/node@20.2.5)(ts-node@10.9.1) + jest-util: 29.5.0 + jest-validate: 29.5.0 + prompts: 2.4.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + + /jest-config@29.5.0(@types/node@20.2.5)(ts-node@10.9.1): + resolution: {integrity: sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==} + 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.22.1 + '@jest/test-sequencer': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.2.5 + babel-jest: 29.5.0(@babel/core@7.22.1) + chalk: 4.1.2 + ci-info: 3.8.0 + deepmerge: 4.3.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-circus: 29.5.0 + jest-environment-node: 29.5.0 + jest-get-type: 29.4.3 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-runner: 29.5.0 + jest-util: 29.5.0 + jest-validate: 29.5.0 + micromatch: 4.0.5 + parse-json: 5.2.0 + pretty-format: 29.5.0 + slash: 3.0.0 + strip-json-comments: 3.1.1 + ts-node: 10.9.1(@types/node@20.2.5)(typescript@5.0.2) + transitivePeerDependencies: + - supports-color + dev: true + + /jest-diff@29.5.0: + resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + diff-sequences: 29.4.3 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + + /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.5.0: + resolution: {integrity: sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + chalk: 4.1.2 + jest-get-type: 29.4.3 + jest-util: 29.5.0 + pretty-format: 29.5.0 + dev: true + + /jest-environment-jsdom@29.5.0: + resolution: {integrity: sha512-/KG8yEK4aN8ak56yFVdqFDzKNHgF4BAymCx2LbPNPsUshUlfAl0eX402Xm1pt+eoG9SLZEUVifqXtX8SK74KCw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/jsdom': 20.0.1 + '@types/node': 20.2.5 + jest-mock: 29.5.0 + jest-util: 29.5.0 + jsdom: 20.0.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jest-environment-node@29.5.0: + resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.2.5 + jest-mock: 29.5.0 + jest-util: 29.5.0 + dev: true + + /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.5.0: + resolution: {integrity: sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/graceful-fs': 4.1.6 + '@types/node': 20.2.5 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.4.3 + jest-util: 29.5.0 + jest-worker: 29.5.0 + micromatch: 4.0.5 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /jest-leak-detector@29.5.0: + resolution: {integrity: sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + + /jest-matcher-utils@29.5.0: + resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + pretty-format: 29.5.0 + dev: true + + /jest-message-util@29.5.0: + resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.21.4 + '@jest/types': 29.5.0 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.5.0 + slash: 3.0.0 + stack-utils: 2.0.6 + dev: true + + /jest-mock@29.5.0: + resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/node': 20.2.5 + jest-util: 29.5.0 + dev: true + + /jest-pnp-resolver@1.2.3(jest-resolve@29.5.0): + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + dependencies: + jest-resolve: 29.5.0 + dev: true + + /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.5.0: + resolution: {integrity: sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + jest-regex-util: 29.4.3 + jest-snapshot: 29.5.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-resolve@29.5.0: + resolution: {integrity: sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-pnp-resolver: 1.2.3(jest-resolve@29.5.0) + jest-util: 29.5.0 + jest-validate: 29.5.0 + resolve: 1.22.2 + resolve.exports: 2.0.2 + slash: 3.0.0 + dev: true + + /jest-runner@29.5.0: + resolution: {integrity: sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/console': 29.5.0 + '@jest/environment': 29.5.0 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.2.5 + chalk: 4.1.2 + emittery: 0.13.1 + graceful-fs: 4.2.11 + jest-docblock: 29.4.3 + jest-environment-node: 29.5.0 + jest-haste-map: 29.5.0 + jest-leak-detector: 29.5.0 + jest-message-util: 29.5.0 + jest-resolve: 29.5.0 + jest-runtime: 29.5.0 + jest-util: 29.5.0 + jest-watcher: 29.5.0 + jest-worker: 29.5.0 + p-limit: 3.1.0 + source-map-support: 0.5.13 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-runtime@29.5.0: + resolution: {integrity: sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/globals': 29.5.0 + '@jest/source-map': 29.4.3 + '@jest/test-result': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.2.5 + chalk: 4.1.2 + cjs-module-lexer: 1.2.2 + collect-v8-coverage: 1.0.1 + glob: 7.2.3 + graceful-fs: 4.2.11 + jest-haste-map: 29.5.0 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-regex-util: 29.4.3 + jest-resolve: 29.5.0 + jest-snapshot: 29.5.0 + jest-util: 29.5.0 + slash: 3.0.0 + strip-bom: 4.0.0 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-snapshot@29.5.0: + resolution: {integrity: sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/core': 7.22.1 + '@babel/generator': 7.22.3 + '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.22.1) + '@babel/plugin-syntax-typescript': 7.21.4(@babel/core@7.22.1) + '@babel/traverse': 7.22.1(supports-color@5.5.0) + '@babel/types': 7.22.3 + '@jest/expect-utils': 29.5.0 + '@jest/transform': 29.5.0 + '@jest/types': 29.5.0 + '@types/babel__traverse': 7.20.0 + '@types/prettier': 2.7.2 + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.1) + chalk: 4.1.2 + expect: 29.5.0 + graceful-fs: 4.2.11 + jest-diff: 29.5.0 + jest-get-type: 29.4.3 + jest-matcher-utils: 29.5.0 + jest-message-util: 29.5.0 + jest-util: 29.5.0 + natural-compare: 1.4.0 + pretty-format: 29.5.0 + semver: 7.5.1 + transitivePeerDependencies: + - supports-color + dev: true + + /jest-util@29.5.0: + resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/node': 20.2.5 + chalk: 4.1.2 + ci-info: 3.8.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + dev: true + + /jest-validate@29.5.0: + resolution: {integrity: sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.4.3 + leven: 3.1.0 + pretty-format: 29.5.0 + dev: true + + /jest-watcher@29.5.0: + resolution: {integrity: sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/test-result': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 20.2.5 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + emittery: 0.13.1 + jest-util: 29.5.0 + 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': 20.2.5 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + /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': 20.2.5 + jest-util: 29.5.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest-worker@29.5.0: + resolution: {integrity: sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@types/node': 20.2.5 + jest-util: 29.5.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + dev: true + + /jest@29.5.0(@types/node@20.2.5)(ts-node@10.9.1): + resolution: {integrity: sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==} + 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.5.0(ts-node@10.9.1) + '@jest/types': 29.5.0 + import-local: 3.1.0 + jest-cli: 29.5.0(@types/node@20.2.5)(ts-node@10.9.1) + transitivePeerDependencies: + - '@types/node' + - supports-color + - ts-node + dev: true + + /jquery-mousewheel@3.1.13: + resolution: {integrity: sha512-GXhSjfOPyDemM005YCEHvzrEALhKDIswtxSHSR2e4K/suHVJKJxxRCGz3skPjNxjJjQa9AVSGGlYjv1M3VLIPg==} + dev: false + + /jquery@3.7.1: + resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==} + dev: false + + /js-cookie@2.2.1: + resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} + + /js-sdsl@4.4.0: + resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} + dev: true + + /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@16.7.0: + resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} + engines: {node: '>=10'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.6 + acorn: 8.8.2 + acorn-globals: 6.0.0 + cssom: 0.4.4 + cssstyle: 2.3.0 + data-urls: 2.0.0 + decimal.js: 10.4.3 + domexception: 2.0.1 + escodegen: 2.0.0 + form-data: 3.0.1 + html-encoding-sniffer: 2.0.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.4 + parse5: 6.0.1 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 4.1.2 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 2.0.0 + webidl-conversions: 6.1.0 + whatwg-encoding: 1.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + ws: 7.5.9 + xml-name-validator: 3.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + + /jsdom@19.0.0(canvas@2.11.2): + resolution: {integrity: sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==} + engines: {node: '>=12'} + requiresBuild: true + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + abab: 2.0.6 + acorn: 8.8.2 + acorn-globals: 6.0.0 + canvas: 2.11.2 + 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.4 + parse5: 6.0.1 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 4.1.2 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 3.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 10.0.0 + ws: 8.13.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + optional: 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.2 + 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.4 + 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.13.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-pretty-compact@3.0.0: + resolution: {integrity: sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA==} + dev: false + + /json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + dev: true + + /json2module@0.0.3: + resolution: {integrity: sha512-qYGxqrRrt4GbB8IEOy1jJGypkNsjWoIMlZt4bAsmUScCA507Hbc2p1JOhBzqn45u3PWafUgH2OnzyNU7udO/GA==} + hasBin: true + dependencies: + rw: 1.3.3 + dev: false + + /json2mq@0.2.0: + resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==} + dependencies: + string-convert: 0.2.1 + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 + + /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 + + /kdbush@3.0.0: + resolution: {integrity: sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==} + dev: false + + /kdbush@4.0.2: + resolution: {integrity: sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==} + dev: false + + /keycode@2.2.0: + resolution: {integrity: sha512-ps3I9jAdNtRpJrbBvQjpzyFbss/skHqzS+eu4RxKLaEAtFqkjZaB6TZMSivPbLxf4K7VI4SjR0P5mRCX5+Q25A==} + dev: false + + /kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + dependencies: + is-buffer: 1.1.6 + dev: false + + /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 + + /known-css-properties@0.26.0: + resolution: {integrity: sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==} + dev: true + + /kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + dev: true + + /lazy-cache@1.0.4: + resolution: {integrity: sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==} + engines: {node: '>=0.10.0'} + dev: false + + /lcid@3.1.1: + resolution: {integrity: sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==} + engines: {node: '>=8'} + dependencies: + 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.5.2 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + 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'} + 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 + + /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 + + /lightningcss-darwin-arm64@1.19.0: + resolution: {integrity: sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /lightningcss-darwin-x64@1.19.0: + resolution: {integrity: sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /lightningcss-linux-arm-gnueabihf@1.19.0: + resolution: {integrity: sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /lightningcss-linux-arm64-gnu@1.19.0: + resolution: {integrity: sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /lightningcss-linux-arm64-musl@1.19.0: + resolution: {integrity: sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /lightningcss-linux-x64-gnu@1.19.0: + resolution: {integrity: sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /lightningcss-linux-x64-musl@1.19.0: + resolution: {integrity: sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /lightningcss-win32-x64-msvc@1.19.0: + resolution: {integrity: sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /lightningcss@1.19.0: + resolution: {integrity: sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==} + engines: {node: '>= 12.0.0'} + dependencies: + detect-libc: 1.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.19.0 + lightningcss-darwin-x64: 1.19.0 + lightningcss-linux-arm-gnueabihf: 1.19.0 + lightningcss-linux-arm64-gnu: 1.19.0 + lightningcss-linux-arm64-musl: 1.19.0 + lightningcss-linux-x64-gnu: 1.19.0 + lightningcss-linux-x64-musl: 1.19.0 + lightningcss-win32-x64-msvc: 1.19.0 + dev: true + + /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(supports-color@5.5.0) + 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.20 + enquirer: 2.3.6 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.3.0 + rxjs: 7.8.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + dev: true + + /loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + /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.3 + + /loader-utils@3.2.1: + resolution: {integrity: sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==} + engines: {node: '>= 12.13.0'} + dev: false + + /local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + dev: true + + /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-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + /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==} + dev: false + + /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 + + /longest@1.0.1: + resolution: {integrity: sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==} + engines: {node: '>=0.10.0'} + dev: false + + /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.5.2 + 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'} + dependencies: + yallist: 4.0.0 + + /lru-cache@9.1.1: + resolution: {integrity: sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==} + engines: {node: 14 || >=16.14} + dev: true + + /lru-queue@0.1.0: + resolution: {integrity: sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==} + dependencies: + es5-ext: 0.10.62 + dev: true + + /lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + dev: true + + /m3u8-parser@6.2.0: + resolution: {integrity: sha512-qlC00JTxYOxawcqg+RB8jbyNwL3foY/nCY61kyWP+RCuJE9APLeqB/nSlTjb4Mg0yRmyERgjswpdQxMvkeoDrg==} + dependencies: + '@babel/runtime': 7.22.3 + '@videojs/vhs-utils': 3.0.5 + global: 4.4.0 + dev: false + + /m3u8-parser@7.1.0: + resolution: {integrity: sha512-7N+pk79EH4oLKPEYdgRXgAsKDyA/VCo0qCHlUwacttQA0WqsjZQYmNfywMvjlY9MpEBVZEt0jKFd73Kv15EBYQ==} + dependencies: + '@babel/runtime': 7.22.3 + '@videojs/vhs-utils': 3.0.5 + global: 4.4.0 + dev: false + + /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 + + /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 + + /mana-common@0.3.2: + resolution: {integrity: sha512-1oylLR9CcyshQcTiBdM96HxIoaA413eudpo1INiOCwyZE554TDJNUD0zrIjmeBvw8CBAjukzaAHn2gn0hZphIg==} + dev: false + + /mana-syringe@0.2.2: + resolution: {integrity: sha512-Sv5r0/PrQRq4pW+9lDicGsEPzPLkd1PwjTs5zHUV1I293S3alkBNyuSjktVeBploofH8MAMLd4DS2crwct48wg==} + dependencies: + inversify: 5.1.1 + dev: false + + /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 + + /mapbox-gl@1.13.3: + resolution: {integrity: sha512-p8lJFEiqmEQlyv+DQxFAOG/XPWN0Wp7j/Psq93Zywz7qt9CcUKFYDBOoOEKzqe6gudHVJY8/Bhqw6VDpX2lSBg==} + engines: {node: '>=6.4.0'} + dependencies: + '@mapbox/geojson-rewind': 0.5.2 + '@mapbox/geojson-types': 1.0.2 + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/mapbox-gl-supported': 1.5.0(mapbox-gl@1.13.3) + '@mapbox/point-geometry': 0.1.0 + '@mapbox/tiny-sdf': 1.2.5 + '@mapbox/unitbezier': 0.0.0 + '@mapbox/vector-tile': 1.3.1 + '@mapbox/whoots-js': 3.1.0 + csscolorparser: 1.0.3 + earcut: 2.2.4 + geojson-vt: 3.2.1 + gl-matrix: 3.4.3 + grid-index: 1.1.0 + murmurhash-js: 1.0.0 + pbf: 3.2.1 + potpack: 1.0.2 + quickselect: 2.0.0 + rw: 1.3.3 + supercluster: 7.1.5 + tinyqueue: 2.0.3 + vt-pbf: 3.1.3 + dev: false + + /maplibre-gl@3.6.2: + resolution: {integrity: sha512-krg2KFIdOpLPngONDhP6ixCoWl5kbdMINP0moMSJFVX7wX1Clm2M9hlNKXS8vBGlVWwR5R3ZfI6IPrYz7c+aCQ==} + engines: {node: '>=16.14.0', npm: '>=8.1.0'} + dependencies: + '@mapbox/geojson-rewind': 0.5.2 + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/point-geometry': 0.1.0 + '@mapbox/tiny-sdf': 2.0.6 + '@mapbox/unitbezier': 0.0.1 + '@mapbox/vector-tile': 1.3.1 + '@mapbox/whoots-js': 3.1.0 + '@maplibre/maplibre-gl-style-spec': 19.3.3 + '@types/geojson': 7946.0.13 + '@types/mapbox__point-geometry': 0.1.4 + '@types/mapbox__vector-tile': 1.3.4 + '@types/pbf': 3.0.5 + '@types/supercluster': 7.1.3 + earcut: 2.2.4 + geojson-vt: 3.2.1 + gl-matrix: 3.4.3 + global-prefix: 3.0.0 + kdbush: 4.0.2 + murmurhash-js: 1.0.0 + pbf: 3.2.1 + potpack: 2.0.0 + quickselect: 2.0.0 + supercluster: 8.0.1 + tinyqueue: 2.0.3 + vt-pbf: 3.1.3 + dev: false + + /material-colors@1.2.6: + resolution: {integrity: sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==} + dev: false + + /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.11 + 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==} + + /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.5.1: + resolution: {integrity: sha512-UWbFJKvj5k+nETdteFndTpYxdeTMox/ULeqX5k/dpaQJCCFmj5EeKv3dBcyO2xmkRAx2vppRu5dVG7SOtsGOzA==} + 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==} + 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==} + + /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(supports-color@5.5.0) + 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'} + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + + /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 + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + + /mimic-response@2.1.0: + resolution: {integrity: sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==} + engines: {node: '>=8'} + dev: false + optional: true + + /min-document@2.19.0: + resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} + dependencies: + dom-walk: 0.1.2 + + /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 + + /minimatch@8.0.4: + resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /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.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + /minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + dependencies: + yallist: 4.0.0 + dev: false + optional: true + + /minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + dev: true + + /minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + dev: false + optional: true + + /minipass@6.0.2: + resolution: {integrity: sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + dev: false + optional: true + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: false + optional: true + + /ml-array-max@1.2.4: + resolution: {integrity: sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ==} + dependencies: + is-any-array: 2.0.1 + dev: false + + /ml-array-min@1.2.3: + resolution: {integrity: sha512-VcZ5f3VZ1iihtrGvgfh/q0XlMobG6GQ8FsNyQXD3T+IlstDv85g8kfV0xUG1QPRO/t21aukaJowDzMTc7j5V6Q==} + dependencies: + is-any-array: 2.0.1 + dev: false + + /ml-array-rescale@1.3.7: + resolution: {integrity: sha512-48NGChTouvEo9KBctDfHC3udWnQKNKEWN0ziELvY3KG25GR5cA8K8wNVzracsqSW1QEkAXjTNx+ycgAv06/1mQ==} + dependencies: + is-any-array: 2.0.1 + ml-array-max: 1.2.4 + ml-array-min: 1.2.3 + dev: false + + /ml-matrix@6.11.0: + resolution: {integrity: sha512-7jr9NmFRkaUxbKslfRu3aZOjJd2LkSitCGv+QH9PF0eJoEG7jIpjXra1Vw8/kgao8+kHCSsJONG6vfWmXQ+/Eg==} + dependencies: + is-any-array: 2.0.1 + ml-array-rescale: 1.3.7 + dev: false + + /ml-matrix@6.5.0: + resolution: {integrity: sha512-sms732Dge+rs5dU4mnjE0oqLWm1WujvR2fr38LgUHRG2cjXjWlO3WJupLYaSz3++2iYr0UrGDK72OAivr3J8dg==} + dependencies: + ml-array-rescale: 1.3.7 + dev: false + + /mock-property@1.0.3: + resolution: {integrity: sha512-2emPTb1reeLLYwHxyVx993iYyCHEiRRO+y8NFXFPL5kl5q14sgTK76cXyEKkeKCHeRw35SfdkUJ10Q1KfHuiIQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.0 + hasown: 2.0.0 + isarray: 2.0.5 + dev: false + + /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: 10.0.1 + dev: true + + /moment@2.29.4: + resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} + + /mousetrap@1.6.5: + resolution: {integrity: sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==} + dev: false + + /mpd-parser@1.3.0: + resolution: {integrity: sha512-WgeIwxAqkmb9uTn4ClicXpEQYCEduDqRKfmUdp4X8vmghKfBNXZLYpREn9eqrDx/Tf5LhzRcJLSpi4ohfV742Q==} + hasBin: true + dependencies: + '@babel/runtime': 7.22.3 + '@videojs/vhs-utils': 4.0.0 + '@xmldom/xmldom': 0.8.10 + global: 4.4.0 + dev: false + + /mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + dev: false + + /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 + + /murmurhash-js@1.0.0: + resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==} + dev: false + + /mux.js@6.3.0: + resolution: {integrity: sha512-/QTkbSAP2+w1nxV+qTcumSDN5PA98P0tjrADijIzQHe85oBK3Akhy9AHlH0ne/GombLMz1rLyvVsmrgRxoPDrQ==} + engines: {node: '>=8', npm: '>=5'} + hasBin: true + dependencies: + '@babel/runtime': 7.22.3 + global: 4.4.0 + dev: false + + /mux.js@7.0.0: + resolution: {integrity: sha512-DeZmr+3NDrO02k4SREtl4VB5GyGPCz2fzMjDxBIlamkxffSTLge97rtNMoonnmFHTp96QggDucUtKv3fmyObrA==} + engines: {node: '>=8', npm: '>=5'} + hasBin: true + dependencies: + '@babel/runtime': 7.22.3 + global: 4.4.0 + dev: false + + /nan@2.18.0: + resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} + dev: false + optional: true + + /nano-css@5.6.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-T2Mhc//CepkTa3X4pUhKgbEheJHYAxD0VptuqFhDbGMUWVV2m+lkNiW/Ieuj35wrfC8Zm0l7HvssQh7zcEttSw==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + css-tree: 1.1.3 + csstype: 3.1.2 + fastest-stable-stringify: 2.0.2 + inline-style-prefixer: 7.0.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + rtl-css-js: 1.16.1 + stacktrace-js: 2.0.2 + stylis: 4.3.0 + dev: false + + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + 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==} + + /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'} + dev: true + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + /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.5.2 + dev: true + + /node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + 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} + 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.11: + resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + + /node-fetch@3.3.1: + resolution: {integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==} + 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: + '@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.8 + 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.12: + resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} + + /nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: false + optional: true + + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.2 + 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.12.1 + semver: 7.5.1 + 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 + + /npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + + /npmlog@5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + dependencies: + are-we-there-yet: 2.0.0 + console-control-strings: 1.1.0 + gauge: 3.0.2 + set-blocking: 2.0.0 + dev: false + optional: 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.4: + resolution: {integrity: sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==} + 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.4: + resolution: {integrity: sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g==} + + /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.1 + 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.7.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.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + + /object-is@1.1.5: + resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + /object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.0 + has-symbols: 1.0.3 + object-keys: 1.1.1 + + /object.entries@1.1.6: + resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + 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.2.0 + es-abstract: 1.21.2 + 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.2.0 + es-abstract: 1.21.2 + reflect.getprototypeof: 1.0.3 + dev: true + + /object.hasown@1.1.2: + resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} + dependencies: + define-properties: 1.2.0 + es-abstract: 1.21.2 + 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.2.0 + es-abstract: 1.21.2 + 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 + + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + + /open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + /open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + dev: true + + /openapi3-ts@2.0.2: + resolution: {integrity: sha512-TxhYBMoqx9frXyOgnRHufjQfPXomTIHYKhSKJ6jHfj13kS8OEIhvmE8CTuQyKtjjWttAjX5DPxM1vmalEpo8Qw==} + dependencies: + yaml: 1.10.2 + dev: true + + /opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + dev: false + + /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 + + /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.9.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.5.2 + 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.21.4 + error-ex: 1.3.2 + 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@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + dev: false + + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.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.5.2 + 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-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-scurry@1.9.2: + resolution: {integrity: sha512-qSDLy2aGFPm8i4rsbHd4MNyTcrzHFsLQykrtbuGRknZZCBBVXSv2tSCDN2Cg6Rt/GFRw8GoW9y9Ecw5rIPG1sg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 9.1.1 + minipass: 6.0.2 + dev: true + + /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@1.8.0: + resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} + 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'} + + /pbf@3.2.1: + resolution: {integrity: sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==} + hasBin: true + dependencies: + ieee754: 1.2.1 + resolve-protobuf-schema: 2.1.0 + dev: false + + /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 + + /pdfast@0.2.0: + resolution: {integrity: sha512-cq6TTu6qKSFUHwEahi68k/kqN2mfepjkGrG9Un70cgdRRKLKY6Rf8P8uvP2NvZktaQZNF3YE7agEkLj0vGK9bA==} + dev: false + + /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.2.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.2.0 + 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.3 + 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 + + /pkcs7@1.0.4: + resolution: {integrity: sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==} + hasBin: true + dependencies: + '@babel/runtime': 7.22.3 + dev: false + + /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.5.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 + + /polygon-clipping@0.15.7: + resolution: {integrity: sha512-nhfdr83ECBg6xtqOAJab1tbksbBAOMUltN60bU+llHVOL0e5Onm1WpAXXWXVB39L8AJFssoIhEVuy/S90MmotA==} + dependencies: + robust-predicates: 3.0.2 + splaytree: 3.1.2 + dev: false + + /polyline-miter-util@1.0.1: + resolution: {integrity: sha512-/3u91zz6mBerBZo6qnOJOTjv7EfPhKtsV028jMyj86YpzLRNmCCFfrX7IO9tCEQ2W4x45yc+vKOezjf7u2Nd6Q==} + dependencies: + gl-vec2: 1.3.0 + dev: false + + /polyline-normals@2.0.2: + resolution: {integrity: sha512-dpHrAi61ymhsB4N0XlNb3YpkKJeTFnXBXDWpeH8Ucstq0TUZrCN3YK4Jlgk8ofMWN25lhGC4wnxLMv+TUK8rig==} + dependencies: + polyline-miter-util: 1.0.1 + dev: false + + /postcss-attribute-case-insensitive@5.0.2(postcss@8.4.24): + resolution: {integrity: sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.24 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-clamp@4.1.0(postcss@8.4.24): + resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} + engines: {node: '>=7.6.0'} + peerDependencies: + postcss: ^8.4.6 + dependencies: + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-color-functional-notation@4.2.4(postcss@8.4.24): + resolution: {integrity: sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-color-hex-alpha@8.0.4(postcss@8.4.24): + resolution: {integrity: sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-color-rebeccapurple@7.1.1(postcss@8.4.24): + resolution: {integrity: sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-custom-media@8.0.2(postcss@8.4.24): + resolution: {integrity: sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-custom-properties@12.1.11(postcss@8.4.24): + resolution: {integrity: sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-custom-selectors@6.0.3(postcss@8.4.24): + resolution: {integrity: sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.24 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-dir-pseudo-class@6.0.5(postcss@8.4.24): + resolution: {integrity: sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.24 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-double-position-gradients@3.1.2(postcss@8.4.24): + 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.24) + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-env-function@4.0.6(postcss@8.4.24): + resolution: {integrity: sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-flexbugs-fixes@5.0.2(postcss@8.4.24): + resolution: {integrity: sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==} + peerDependencies: + postcss: ^8.1.4 + dependencies: + postcss: 8.4.24 + dev: true + + /postcss-focus-visible@6.0.4(postcss@8.4.24): + resolution: {integrity: sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.24 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-focus-within@5.0.4(postcss@8.4.24): + resolution: {integrity: sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.24 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-font-variant@5.0.0(postcss@8.4.24): + resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.24 + dev: true + + /postcss-gap-properties@3.0.5(postcss@8.4.24): + resolution: {integrity: sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.24 + dev: true + + /postcss-html@0.36.0(postcss-syntax@0.36.2)(postcss@7.0.39): + 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(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39) + dev: true + + /postcss-image-set-function@4.0.7(postcss@8.4.24): + resolution: {integrity: sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-initial@4.0.1(postcss@8.4.24): + resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.24 + dev: true + + /postcss-lab-function@4.2.1(postcss@8.4.24): + 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.24) + postcss: 8.4.24 + 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.24 + dev: true + + /postcss-logical@5.0.4(postcss@8.4.24): + resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.24 + dev: true + + /postcss-media-minmax@5.0.0(postcss@8.4.24): + resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.24 + 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.24): + resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.24 + dev: true + + /postcss-modules-local-by-default@4.0.3(postcss@8.4.24): + resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + icss-utils: 5.1.0(postcss@8.4.24) + postcss: 8.4.24 + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-modules-scope@3.0.0(postcss@8.4.24): + resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.24 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-modules-values@4.0.0(postcss@8.4.24): + 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.24) + postcss: 8.4.24 + dev: true + + /postcss-nesting@10.2.0(postcss@8.4.24): + resolution: {integrity: sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13) + postcss: 8.4.24 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-opacity-percentage@1.1.3(postcss@8.4.24): + resolution: {integrity: sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.24 + dev: true + + /postcss-overflow-shorthand@3.0.4(postcss@8.4.24): + resolution: {integrity: sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-page-break@3.0.4(postcss@8.4.24): + resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} + peerDependencies: + postcss: ^8 + dependencies: + postcss: 8.4.24 + dev: true + + /postcss-place@7.0.5(postcss@8.4.24): + resolution: {integrity: sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.24 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-prefix-selector@1.16.0(postcss@8.4.24): + resolution: {integrity: sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==} + peerDependencies: + postcss: '>4 <9' + dependencies: + postcss: 8.4.24 + dev: true + + /postcss-preset-env@7.5.0(postcss@8.4.24): + 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.24) + '@csstools/postcss-font-format-keywords': 1.0.1(postcss@8.4.24) + '@csstools/postcss-hwb-function': 1.0.2(postcss@8.4.24) + '@csstools/postcss-ic-unit': 1.0.1(postcss@8.4.24) + '@csstools/postcss-is-pseudo-class': 2.0.7(postcss@8.4.24) + '@csstools/postcss-normalize-display-values': 1.0.1(postcss@8.4.24) + '@csstools/postcss-oklab-function': 1.1.1(postcss@8.4.24) + '@csstools/postcss-progressive-custom-properties': 1.3.0(postcss@8.4.24) + '@csstools/postcss-stepped-value-functions': 1.0.1(postcss@8.4.24) + '@csstools/postcss-unset-value': 1.0.2(postcss@8.4.24) + autoprefixer: 10.4.14(postcss@8.4.24) + browserslist: 4.21.6 + css-blank-pseudo: 3.0.3(postcss@8.4.24) + css-has-pseudo: 3.0.4(postcss@8.4.24) + css-prefers-color-scheme: 6.0.3(postcss@8.4.24) + cssdb: 6.6.3 + postcss: 8.4.24 + postcss-attribute-case-insensitive: 5.0.2(postcss@8.4.24) + postcss-clamp: 4.1.0(postcss@8.4.24) + postcss-color-functional-notation: 4.2.4(postcss@8.4.24) + postcss-color-hex-alpha: 8.0.4(postcss@8.4.24) + postcss-color-rebeccapurple: 7.1.1(postcss@8.4.24) + postcss-custom-media: 8.0.2(postcss@8.4.24) + postcss-custom-properties: 12.1.11(postcss@8.4.24) + postcss-custom-selectors: 6.0.3(postcss@8.4.24) + postcss-dir-pseudo-class: 6.0.5(postcss@8.4.24) + postcss-double-position-gradients: 3.1.2(postcss@8.4.24) + postcss-env-function: 4.0.6(postcss@8.4.24) + postcss-focus-visible: 6.0.4(postcss@8.4.24) + postcss-focus-within: 5.0.4(postcss@8.4.24) + postcss-font-variant: 5.0.0(postcss@8.4.24) + postcss-gap-properties: 3.0.5(postcss@8.4.24) + postcss-image-set-function: 4.0.7(postcss@8.4.24) + postcss-initial: 4.0.1(postcss@8.4.24) + postcss-lab-function: 4.2.1(postcss@8.4.24) + postcss-logical: 5.0.4(postcss@8.4.24) + postcss-media-minmax: 5.0.0(postcss@8.4.24) + postcss-nesting: 10.2.0(postcss@8.4.24) + postcss-opacity-percentage: 1.1.3(postcss@8.4.24) + postcss-overflow-shorthand: 3.0.4(postcss@8.4.24) + postcss-page-break: 3.0.4(postcss@8.4.24) + postcss-place: 7.0.5(postcss@8.4.24) + postcss-pseudo-class-any-link: 7.1.6(postcss@8.4.24) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.4.24) + postcss-selector-not: 5.0.0(postcss@8.4.24) + postcss-value-parser: 4.2.0 + dev: true + + /postcss-pseudo-class-any-link@7.1.6(postcss@8.4.24): + resolution: {integrity: sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.2 + dependencies: + postcss: 8.4.24 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-replace-overflow-wrap@4.0.0(postcss@8.4.24): + resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} + peerDependencies: + postcss: ^8.0.3 + dependencies: + postcss: 8.4.24 + 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.24): + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + dependencies: + postcss: 8.4.24 + 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(postcss@8.4.24): + resolution: {integrity: sha512-/2K3A4TCP9orP4TNS7u3tGdRFVKqz/E6pX3aGnriPG0jU78of8wsUcqE4QAhWEU0d+WnMSF93Ah3F//vUtK+iQ==} + peerDependencies: + postcss: ^8.1.0 + dependencies: + balanced-match: 1.0.2 + postcss: 8.4.24 + dev: true + + /postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-sorting@6.0.0(postcss@8.4.24): + resolution: {integrity: sha512-bYJ0vgAiGbjCBKi7B07CzsBc9eM84nLEbavUmwNp8rAa+PNyrgdH+6PpnqTtciLuUs99c4rFQQmCaYgeBQYmSQ==} + peerDependencies: + postcss: ^8.0.4 + dependencies: + lodash: 4.17.21 + postcss: 8.4.24 + dev: true + + /postcss-syntax@0.36.2(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39): + 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(postcss-syntax@0.36.2)(postcss@7.0.39) + postcss-less: 3.1.4 + postcss-scss: 2.1.1 + dev: true + + /postcss-syntax@0.36.2(postcss@8.4.24): + 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.24 + 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.24: + resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /potpack@1.0.2: + resolution: {integrity: sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==} + dev: false + + /potpack@2.0.0: + resolution: {integrity: sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==} + dev: false + + /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'} + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + /prettier-plugin-organize-imports@3.2.2(prettier@2.8.8)(typescript@5.0.2): + resolution: {integrity: sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA==} + 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.8 + typescript: 5.0.2 + dev: true + + /prettier-plugin-packagejson@2.3.0(prettier@2.8.8): + resolution: {integrity: sha512-2SAPMMk1UDkqsB7DifWKcwCm6VC52JXMrzLHfbcQHJRWhRCj9zziOy+s+2XOyPBeyqFqS+A/1IKzOrxKFTo6pw==} + peerDependencies: + prettier: '>= 1.16.0' + peerDependenciesMeta: + prettier: + optional: true + dependencies: + prettier: 2.8.8 + sort-package-json: 1.57.0 + dev: true + + /prettier-plugin-packagejson@2.4.3(prettier@2.8.8): + resolution: {integrity: sha512-kPeeviJiwy0BgOSk7No8NmzzXfW4R9FYWni6ziA5zc1kGVVrKnBzMZdu2TUhI+I7h8/5Htt3vARYOk7KKJTTNQ==} + peerDependencies: + prettier: '>= 1.16.0' + peerDependenciesMeta: + prettier: + optional: true + dependencies: + prettier: 2.8.8 + sort-package-json: 2.4.1 + synckit: 0.8.5 + dev: true + + /prettier-plugin-two-style-order@1.0.1(prettier@2.8.8): + resolution: {integrity: sha512-ETltO2FRR/Pxc7bsgz2XwuzWSPwafl7/v5+5Rria4S579CTas7dya+xsmbkix0q1tYQiuRjVVdfGnCKlH/aOuQ==} + peerDependencies: + prettier: '>= 2.0.0' + dependencies: + postcss: 8.4.24 + postcss-less: 4.0.1 + postcss-sorting: 6.0.0(postcss@8.4.24) + prettier: 2.8.8 + dev: true + + /prettier@1.15.3: + resolution: {integrity: sha512-gAU9AGAPMaKb3NNSUUuhhFAS7SCO4ALTN4nRIn6PJ075Qd28Yn2Ig2ahEJWdJwJmlEBTUfC7mMUSFy8MwsOCfg==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + 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.5.0: + resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.4.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + + /probe.gl@3.6.0: + resolution: {integrity: sha512-19JydJWI7+DtR4feV+pu4Mn1I5TAc0xojuxVgZdXIyfmTLfUaFnk4OloWK1bKbPtkgGKLr2lnbnCXmpZEcEp9g==} + dependencies: + '@babel/runtime': 7.22.3 + '@probe.gl/env': 3.6.0 + '@probe.gl/log': 3.6.0 + '@probe.gl/stats': 3.6.0 + dev: false + + /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'} + + /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 + + /protocol-buffers-schema@3.6.0: + resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==} + dev: false + + /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.4.0: + resolution: {integrity: sha512-FD8KmQUQD6Mfpd0hywCOzcon/dbkFP8XBd9F1ycbKtvVsfv6TsFUKJ2eC0Iz2y+KzlkdT1Z8SY6ZSgm07zOyqg==} + dev: true + + /proxy-from-env@1.1.0: + 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==} + + /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.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + 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(supports-color@5.5.0) + 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 + + /pure-rand@6.0.2: + resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} + dev: true + + /qiankun@2.10.8: + resolution: {integrity: sha512-5w6QeM1INFavJdIWfSoDIVv2InV8MEojauvY5tY9Biu8hhE5Rml/HM2t/Y60kZcuOpgy/HGX+tcc6NkQuzDoCg==} + dependencies: + '@babel/runtime': 7.22.3 + import-html-entry: 1.14.6 + 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'} + dependencies: + side-channel: 1.0.4 + dev: true + + /qs@6.11.2: + resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + 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==} + + /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 + + /quickselect@2.0.0: + resolution: {integrity: sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==} + dev: false + + /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 + + /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.15(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wqJtVH60pka/nOX7/IspElA8gjPNQKIx/ZqJ6heATCkXpe1Zg4cPVrMD2vC96wjsFFL8WsmhPbx9tdMo1qqlIA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + dom-align: 1.12.4 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + resize-observer-polyfill: 1.5.1 + + /rc-animate@2.11.1(react-dom@18.2.0)(react@18.2.0): + 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.12.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-QTeGPTNYX33alozNy9lYg7YKpvYVwquai/mrFRR8mHlHnK7QlqJyMqbs2p7rc5eeKARKMRTUeoN5CfO+Gr9UBw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + array-tree-filter: 2.1.0 + classnames: 2.3.2 + rc-select: 14.5.1(react-dom@18.2.0)(react@18.2.0) + rc-tree: 5.7.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-cascader@3.7.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-5nPEM76eMyikd0NFiy1gjwiB9m+bOzjY6Lnd5bVC6Ar3XLlOpOnlCcV3oBFWLN3f7B18tAGpaAVlT2uyEDCv9w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + array-tree-filter: 2.1.0 + classnames: 2.3.2 + rc-select: 14.1.17(react-dom@18.2.0)(react@18.2.0) + rc-tree: 5.7.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /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@3.0.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-k7nxDWxYF+jDI0ZcCvuvj71xONmWRVe5+1MKcERRR9MRyP3tZ69b+yUCSXXh+sik4/Hc9P5wHr2nnUoGS2zBjA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-collapse@1.9.3(react-dom@18.2.0)(react@18.2.0): + 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(react-dom@18.2.0)(react@18.2.0) + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rc-collapse@3.4.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-jpTwLgJzkhAgp2Wpi3xmbTbbYExg6fkptL67Uu5LCRVEj6wqmy0DHTjjeynsjOLsppHGHu41t1ELntZ0lEvS/Q==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + shallowequal: 1.1.0 + dev: true + + /rc-collapse@3.5.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-/TNiT3DW1t3sUCiVD/DPUYooJZ3BLA93/2rZsB3eM2bGJCCla2X9D2E4tgm7LGMQGy5Atb2lMUn2FQuvQNvavQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-dialog@9.0.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-s3U+24xWUuB6Bn2Lk/Qt6rufy+uT+QvWkiFhNBcO9APLxcFFczWamaq7x9h8SCuhfc1nHcW4y8NbMsnAjNnWyg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + '@rc-component/portal': 1.1.1(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /rc-dialog@9.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-5ry+JABAWEbaKyYsmITtrJbZbJys8CtMyzV8Xn4LYuXMeUx5XVHNyJRoqLFE4AzBuXXzOWeaC49cg+XkxK6kHA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + '@rc-component/portal': 1.1.1(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-drawer@6.1.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-EBRFM9o3lPU5kYh8sFoXYA9KxpdT765HDqj/AbZWicXkhwEYUH7MjUH0ctenPCiHBxXQUgIUvK14+6rPuURd6w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + '@rc-component/portal': 1.1.1(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-dropdown@3.6.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Wsw7GkVbUXADEs8FPL0v8gd+3mWQiydPFXBlr2imMScQaf8hh79pG9KrBc1DwK+nqHmYOpQfK2gn6jG2AQw9Pw==} + peerDependencies: + react: '>=16.11.0' + react-dom: '>=16.11.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-trigger: 5.3.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-dropdown@4.0.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-OdpXuOcme1rm45cR0Jzgfl1otzmU4vuBVb+etXM8vcaULGokAKVpKlw8p6xzspG7jGd/XxShvq+N3VNEfk/l5g==} + peerDependencies: + react: '>=16.11.0' + react-dom: '>=16.11.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-trigger: 5.3.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /rc-dropdown@4.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-VZjMunpBdlVzYpEdJSaV7WM7O0jf8uyDjirxXLZRNZ+tAC+NzD3PXPEtliFwGzVwBBdCmGuSqiS9DWcOLxQ9tw==} + peerDependencies: + react: '>=16.11.0' + react-dom: '>=16.11.0' + dependencies: + '@babel/runtime': 7.22.3 + '@rc-component/trigger': 1.13.3(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-field-form@1.27.4(react-dom@18.2.0)(react@18.2.0): + 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.22.3 + async-validator: 4.2.5 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /rc-field-form@1.31.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-3u6crithuSQMfHaDL3rMvzjG5oXJQIgCTxDfT0pJL9kI/C2LWuR8GrApzOvB9gKcf8VvvnejzmSPnsUJz4YGmQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + async-validator: 4.2.5 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-field-form@1.32.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-vr5pA0/gWiBZf0HKdevQJcWSsAac10Z8Nj1Brs3OOCnExk7l+u8GtsW+4cRSqJLug5fxV11dOGXpxf7+aHT/2A==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + async-validator: 4.2.5 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + 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.13.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-iZTOmw5eWo2+gcrJMMcnd7SsxVHl3w5xlyCgsULUdJhJbnuI8i/AL0tVOsE7aLn9VfOh1qgDT3mC2G75/c7mqg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + '@rc-component/portal': 1.1.1(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-dialog: 9.0.2(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /rc-image@5.16.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-11DOye57IgTXh2yTsmxFNynZJG3tdx8RZnnaqb38eYWrBPPyhVHIuURxyiSZ8B68lEUAggR7SBA0Zb95KP/CyQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + '@rc-component/portal': 1.1.1(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-dialog: 9.1.0(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-input-number@7.3.11(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-aMWPEjFeles6PQnMqP5eWpxzsvHm9rh1jQOWXExUEIxhX62Fyl/ptifLHOn17+waDG1T/YUb6flfJbvwRhHrbA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /rc-input-number@7.4.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-yGturTw7WGP+M1GbJ+UTAO7L4buxeW6oilhL9Sq3DezsRS8/9qec4UiXUbeoiX9bzvRXH11JvgskBtxSp4YSNg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + '@rc-component/mini-decimal': 1.0.1 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-input@0.1.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-FqDdNz+fV2dKNgfXzcSLKvC+jEs1709t7nD+WdfjrdSaOcefpgc7BUJYadc3usaING+b7ediMTfKxuJBsEFbXA==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /rc-input@1.0.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-clY4oneVHRtKHYf/HCxT/MO+4BGzCIywSNLosXWOm7fcQAS0jQW7n0an8Raa8JMB8kpxc8m28p7SNwFZmlMj6g==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-mentions@1.13.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-FCkaWw6JQygtOz0+Vxz/M/NWqrWHB9LwqlY2RtcuFqWJNFK9njijOOzTSsBGANliGufVUzx/xuPHmZPBV0+Hgw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-menu: 9.8.4(react-dom@18.2.0)(react@18.2.0) + rc-textarea: 0.4.7(react-dom@18.2.0)(react@18.2.0) + rc-trigger: 5.3.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /rc-mentions@2.2.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-R7ncCldr02uKgJBBPlXdtnOGQIjZ9C3uoIMi4fabU3CPFdmefYlNF6QM4u2AzgcGt8V0KkoHTN5T6HPdUpet8g==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + '@rc-component/trigger': 1.13.3(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-input: 1.0.4(react-dom@18.2.0)(react@18.2.0) + rc-menu: 9.8.4(react-dom@18.2.0)(react@18.2.0) + rc-textarea: 1.2.3(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-menu@9.8.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-lmw2j8I2fhdIzHmC9ajfImfckt0WDb2KVJJBBRIsxPEw2kGkEfjLMUoB1NgiNT/Q5cC8PdjGOGQjHJIJMwyNMw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-overflow: 1.3.0(react-dom@18.2.0)(react@18.2.0) + rc-trigger: 5.3.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-menu@9.9.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-kVJwaQn5VUu6DIddxd/jz3QupTPg0tNYq+mpFP8wYsRF5JgzPA9fPVw+CfwlTPwA1w7gzEY42S8pj6M3uev5CQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + '@rc-component/trigger': 1.13.3(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-overflow: 1.3.0(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /rc-motion@2.7.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-2xUvo8yGHdOHeQbdI8BtBsCIrWKchEmFEIskf0nmHtJsou+meLd/JE+vnvSX2JxcBrJtXY2LuBpxAOxrbY/wMQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-notification@4.6.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-NSmFYwrrdY3+un1GvDAJQw62Xi9LNMSsoQyo95tuaYrcad5Bn9gJUL8AREufRxSQAQnr64u3LtP3EUyLYT6bhw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /rc-notification@5.0.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-3535oellIRlt1LspERfK8yvCqb8Gio3R02rULciaSc1xe3H7ArTU/khlUTv1ddGzua4HhmF4D4Rwz/+mBxETvg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-overflow@1.3.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-p2Qt4SWPTHAYl4oAao1THy669Fm5q8pYBDBHRaFOekCvcdcrgIx0ByXQMEkyPm8wUDX4BK6aARWecvCRc/7CTA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-pagination@3.2.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-5tIXjB670WwwcAJzAqp2J+cOBS9W3cH/WU1EiYwXljuZ4vtZXKlY2Idq8FZrnYBz8KhN3vwPo9CoV/SJS6SL1w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /rc-pagination@3.4.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-arFQKD15h26+rSXRnQNA8b/tHy98/853W/leXkas2WlViOYG5A2qgEg7CRX64GKb9TqJjdqnDzaMAvl0qF4Tig==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-picker@2.7.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-KbUKgbzgWVN5L+V9xhZDKSmseHIyFneBlmuMtMrZ9fU7Oypw6D+owS5kuUicIEV08Y17oXt8dUqauMeC5IFBPg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + date-fns: 2.30.0 + dayjs: 1.11.7 + moment: 2.29.4 + rc-trigger: 5.3.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + shallowequal: 1.1.0 + dev: true + + /rc-picker@3.7.6(dayjs@1.11.7)(moment@2.29.4)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-v84wVXjgx5hQ5vTLjMeMMtj6+gn480Gqzwur2A2+o8+eFnhY4jKmuqzHmD8sEevrz0WT/j1pLHFxAV8/lksI2A==} + engines: {node: '>=8.x'} + peerDependencies: + date-fns: '>= 2.x' + dayjs: '>= 1.x' + luxon: '>= 3.x' + moment: '>= 2.x' + react: '>=16.9.0' + react-dom: '>=16.9.0' + peerDependenciesMeta: + date-fns: + optional: true + dayjs: + optional: true + luxon: + optional: true + moment: + optional: true + dependencies: + '@babel/runtime': 7.22.3 + '@rc-component/trigger': 1.13.3(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + dayjs: 1.11.7 + moment: 2.29.4 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-progress@3.4.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-eAFDHXlk8aWpoXl0llrenPMt9qKHQXphxcVsnKs0FHC6eCSk1ebJtyaVjJUzKe0233ogiLDeEFK1Uihz3s67hw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-rate@2.10.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-TCjEpKPeN1m0EnGDDbb1KyxjNTJRzoReiPdtbrBJEey4Ryf/UGOQ6vqmz2yC6DJdYVDVUoZPdoz043ryh0t/nQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-rate@2.9.2(react-dom@18.2.0)(react@18.2.0): + 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.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /rc-resize-observer@0.2.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-YX6nYnd6fk7zbuvT6oSDMKiZjyngjHoy+fz+vL3Tez38d/G5iGdaDJa2yE7345G6sc4Mm1IGRUIwclvltddhmA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + resize-observer-polyfill: 1.5.1 + + /rc-resize-observer@1.3.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-iFUdt3NNhflbY3mwySv5CA1TC06zdJ+pfo0oc27xpf4PIOvfZwZGtD9Kz41wGYqC4SLio93RVAirSSpYlV/uYg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + resize-observer-polyfill: 1.5.1 + + /rc-segmented@2.1.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-qGo1bCr83ESXpXVOCXjFe1QJlCAQXyi9KCiy8eX3rIMYlTeJr/ftySIaTnYsitL18SvWf5ZEHsfqIWoX0EMfFQ==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /rc-segmented@2.2.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Mq52M96QdHMsNdE/042ibT5vkcGcD5jxKp7HgPC2SRofpia99P5fkfHy1pEaajLMF/kj0+2Lkq1UZRvqzo9mSA==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-select@14.1.17(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-6qQhMqtoUkkboRqXKKFRR5Nu1mrnw2mC1uxIBIczg7aiJ94qCZBg4Ww8OLT9f4xdyCgbFSGh6r3yB9EBsjoHGA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-overflow: 1.3.0(react-dom@18.2.0)(react@18.2.0) + rc-trigger: 5.3.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + rc-virtual-list: 3.5.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /rc-select@14.5.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-RQ3yiguq6yJ+kbtip7/6RTq2hOotS/s00nyZL2nxyz5194C6uOtSB8Kgsw3c6ZXII1EDjuJX3zLI1pkxkNWyww==} + engines: {node: '>=8.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.22.3 + '@rc-component/trigger': 1.13.3(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-overflow: 1.3.0(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + rc-virtual-list: 3.5.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-slider@10.0.1(react-dom@18.2.0)(react@18.2.0): + 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.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + shallowequal: 1.1.0 + dev: true + + /rc-slider@10.1.1(react-dom@18.2.0)(react@18.2.0): + 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.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-slider@8.2.0(react-dom@18.2.0)(react@18.2.0): + 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(react-dom@18.2.0)(react@18.2.0) + rc-util: 4.21.1 + shallowequal: 1.1.0 + warning: 3.0.0 + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rc-steps@5.0.0(react-dom@18.2.0)(react@18.2.0): + 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.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /rc-steps@6.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-+KfMZIty40mYCQSDvYbZ1jwnuObLauTiIskT1hL4FFOBHP6ZOr8LK0m143yD3kEN5XKHSEX1DIwCj3AYZpoeNQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + 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(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /rc-switch@4.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-table@7.26.0(react-dom@18.2.0)(react@18.2.0): + 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.22.3 + classnames: 2.3.2 + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + shallowequal: 1.1.0 + dev: true + + /rc-table@7.32.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-fHMQteKMocUC9I9Vex3eBLH7QsiaMR/qtzh3B1Ty2PoNGwVTwVdDFyRL05zch+JU3KnNNczgQeVvtf/p//gdrQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + '@rc-component/context': 1.3.0(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-tabs@12.5.10(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Ay0l0jtd4eXepFH9vWBvinBjqOpqzcsJTerBGwJy435P2S90Uu38q8U/mvc1sxUEVOXX5ZCFbxcWPnfG3dH+tQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-dropdown: 4.0.1(react-dom@18.2.0)(react@18.2.0) + rc-menu: 9.8.4(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /rc-tabs@12.6.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-L9yIptdrmft573MEsc+xKoGbXzfg3V6NYvgT0sNh+PSzWaeF34W7CIPi98lcWjtsYB80oFMOcAXRilUFxLHTaA==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-dropdown: 4.1.0(react-dom@18.2.0)(react@18.2.0) + rc-menu: 9.8.4(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-textarea@0.4.7(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-IQPd1CDI3mnMlkFyzt2O4gQ2lxUsnBAeJEoZGJnkkXgORNqyM9qovdrCj9NzcRfpHgLdzaEbU3AmobNFGUznwQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + shallowequal: 1.1.0 + dev: true + + /rc-textarea@1.2.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-YvN8IskIVBRRzcS4deT0VAMim31+T3IoVX4yoCJ+b/iVCvw7yf0usR7x8OaHiUOUoURKcn/3lfGjmtzplcy99g==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-input: 1.0.4(react-dom@18.2.0)(react@18.2.0) + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-tooltip@3.7.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-dE2ibukxxkrde7wH9W8ozHKUO4aQnPZ6qBHtrTH9LoO836PjDdiaWO73fgPB05VfJs9FbZdmGPVEbXCeOP99Ww==} + dependencies: + babel-runtime: 6.26.0 + prop-types: 15.8.1 + rc-trigger: 2.6.5(react-dom@18.2.0)(react@18.2.0) + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rc-tooltip@5.2.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-jtQzU/18S6EI3lhSGoDYhPqNpWajMtS5VV/ld1LwyfrDByQpYmw/LW6U7oFXXLukjfDHQ7Ju705A82PRNFWYhg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-trigger: 5.3.4(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /rc-tooltip@6.0.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-MdvPlsD1fDSxKp9+HjXrc/CxLmA/s11QYIh1R7aExxfodKP7CZA++DG1AjrW80F8IUdHYcR43HAm0Y2BYPelHA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + '@rc-component/trigger': 1.13.3(react-dom@18.2.0)(react@18.2.0) + classnames: 2.3.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-tree-select@5.5.5(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-k2av7jF6tW9bIO4mQhaVdV4kJ1c54oxV3/hHVU+oD251Gb5JN+m1RbJFTMf1o0rAFqkvto33rxMdpafaGKQRJw==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-select: 14.1.17(react-dom@18.2.0)(react@18.2.0) + rc-tree: 5.7.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /rc-tree-select@5.9.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-oh3blESzLfLCBPSiVDtZ2irzrWWZUMeHvnSwRvFo79br8Z+K/1OhXhXBZmROvfKwaH8YUugAQy8B2j5EGQbdyA==} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-select: 14.5.1(react-dom@18.2.0)(react@18.2.0) + rc-tree: 5.7.4(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-tree@5.7.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-7VfDq4jma+6fvlzfDXvUJ34SaO2EWkcXGBmPgeFmVKsLNNXcKGl4cRAhs6Ts1zqnX994vu/hb3f1dyTjn43RFg==} + engines: {node: '>=10.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + rc-virtual-list: 3.5.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-trigger@2.6.5(react-dom@18.2.0)(react@18.2.0): + 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(react-dom@18.2.0)(react@18.2.0) + rc-util: 4.21.1 + react-lifecycles-compat: 3.0.4 + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rc-trigger@5.3.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-mQv+vas0TwKcjAO2izNPkqR4j86OemLRmvL2nOzdP9OWNWA1ivoTt5hzFqYNW9zACwmTezRiN8bttrC7cZzYSw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-align: 4.0.15(react-dom@18.2.0)(react@18.2.0) + rc-motion: 2.7.3(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /rc-upload@4.3.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-uVbtHFGNjHG/RyAfm9fluXB6pvArAGyAx8z7XzXXyorEgVIWj6mOlriuDm0XowDHYz4ycNK0nE0oP3cbFnzxiQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + 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.32.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-nfwctiglkgaRjJAnWp0W6BH9Am0cuLOz5HbcBrswQVeLDwnuoholdGex/vZjwug/oq5H1wBwao12DpP61FI1yA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 16.13.1 + + /rc-util@5.38.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-e4ZMs7q9XqwTuhIK7zBIVFltUtMSjphuPPQXHoHlzRzNdOwUxDejo0Zls5HYaJfRKNURcsS/ceKVULlhjBrxng==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + dependencies: + '@babel/runtime': 7.22.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 18.2.0 + + /rc-virtual-list@3.5.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-sE2G9hTPjVmatQni8OP2Kx33+Oth6DMKm67OblBBmgMBJDJQOOFpSGH7KZ6Pm85rrI2IGxDRXZCr0QhYOH2pfQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '*' + react-dom: '*' + dependencies: + '@babel/runtime': 7.22.3 + classnames: 2.3.2 + rc-resize-observer: 1.3.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 5.32.2(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /react-color@2.17.1(react@18.2.0): + resolution: {integrity: sha512-S+I6TkUKJaqfALLkAIfiCZ/MANQyy7dKkf7g9ZU5GTUy2rf8c2Rx62otyvADAviWR+6HRkzdf2vL1Qvz9goCLQ==} + peerDependencies: + react: '*' + dependencies: + '@icons/material': 0.2.4(react@18.2.0) + lodash: 4.17.21 + material-colors: 1.2.6 + prop-types: 15.8.1 + react: 18.2.0 + reactcss: 1.2.3(react@18.2.0) + tinycolor2: 1.6.0 + dev: false + + /react-color@2.17.3(react@18.2.0): + resolution: {integrity: sha512-1dtO8LqAVotPIChlmo6kLtFS1FP89ll8/OiA8EcFRDR+ntcK+0ukJgByuIQHRtzvigf26dV5HklnxDIvhON9VQ==} + peerDependencies: + react: '*' + dependencies: + '@icons/material': 0.2.4(react@18.2.0) + lodash: 4.17.21 + material-colors: 1.2.6 + prop-types: 15.8.1 + react: 18.2.0 + reactcss: 1.2.3(react@18.2.0) + tinycolor2: 1.6.0 + dev: false + + /react-content-loader@5.1.4(react@18.2.0): + resolution: {integrity: sha512-hTq7pZi2GKCK6a9d3u6XStozm0QGCEjw8cSqQReiWnh2up6IwCha5R5TF0o6SY5qUDpByloEZEZtnFxpJyENFw==} + engines: {node: '>=10'} + peerDependencies: + react: '>=16.0.0' + dependencies: + react: 18.2.0 + dev: false + + /react-cookies@0.1.1: + resolution: {integrity: sha512-PP75kJ4vtoHuuTdq0TAD3RmlAv7vuDQh9fkC4oDlhntgs9vX1DmREomO0Y1mcQKR9nMZ6/zxoflaMJ3MAmF5KQ==} + dependencies: + cookie: 0.3.1 + object-assign: 4.1.1 + dev: false + + /react-dev-inspector@1.8.4(eslint@8.41.0)(react@18.2.0)(typescript@5.0.2)(webpack@5.84.1): + resolution: {integrity: sha512-+MpF43RHTKjkilQ4TgUfSgpVlJFKpL4uPc/0FBJAMNPICYxw27q81++AcBIThfxFmBgsFbMj3EKZwkaPZ43V7w==} + engines: {node: '>=12.0.0'} + peerDependencies: + react: '>=16.8.0' + dependencies: + '@babel/core': 7.22.1 + '@babel/generator': 7.22.3 + '@babel/parser': 7.22.3 + '@babel/traverse': 7.22.1(supports-color@5.5.0) + '@babel/types': 7.22.3 + hotkeys-js: 3.10.2 + loader-utils: 2.0.4 + querystring: 0.2.1 + react: 18.2.0 + react-dev-utils: 12.0.1(eslint@8.41.0)(typescript@5.0.2)(webpack@5.84.1) + transitivePeerDependencies: + - eslint + - supports-color + - typescript + - vue-template-compiler + - webpack + dev: false + + /react-dev-utils@12.0.1(eslint@8.41.0)(typescript@5.0.2)(webpack@5.84.1): + 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.21.4 + address: 1.2.2 + browserslist: 4.21.6 + 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.3(eslint@8.41.0)(typescript@5.0.2)(webpack@5.84.1) + global-modules: 2.0.0 + globby: 11.1.0 + gzip-size: 6.0.0 + immer: 9.0.21 + is-root: 2.1.0 + loader-utils: 3.2.1 + open: 8.4.2 + pkg-up: 3.1.0 + prompts: 2.4.2 + react-error-overlay: 6.0.11 + recursive-readdir: 2.2.3 + shell-quote: 1.8.1 + strip-ansi: 6.0.1 + text-table: 0.2.0 + typescript: 5.0.2 + webpack: 5.84.1 + 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.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + + /react-helmet-async@1.3.0(react-dom@18.1.0)(react@18.1.0): + 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.22.3 + 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.2 + shallowequal: 1.1.0 + dev: true + + /react-helmet-async@1.3.0(react-dom@18.2.0)(react@18.2.0): + 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.22.3 + 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.2 + shallowequal: 1.1.0 + + /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==} + + /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@5.1.2(react@18.2.0)(redux@3.7.2): + resolution: {integrity: sha512-Ns1G0XXc8hDyH/OcBHOxNgQx9ayH3SPxBnFCOidGKSle8pKihysQw2rG/PmciUQRoclhVBO8HMhiRmGXnDja9Q==} + peerDependencies: + react: ^0.14.0 || ^15.0.0-0 || ^16.0.0-0 + redux: ^2.0.0 || ^3.0.0 || ^4.0.0-0 + dependencies: + '@babel/runtime': 7.22.3 + hoist-non-react-statics: 3.3.2 + invariant: 2.2.4 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.2.0 + react-is: 16.13.1 + react-lifecycles-compat: 3.0.4 + redux: 3.7.2 + dev: true + + /react-redux@7.2.9(react-dom@18.2.0)(react@18.2.0): + 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.22.3 + '@types/react-redux': 7.1.25 + 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(@types/react-dom@18.2.4)(@types/react@18.2.7)(react-dom@18.2.0)(react@18.2.0)(redux@4.2.1): + 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.22.3 + '@types/hoist-non-react-statics': 3.3.1 + '@types/react': 18.2.7 + '@types/react-dom': 18.2.4 + '@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.1 + use-sync-external-store: 1.2.0(react@18.2.0) + dev: true + + /react-refresh@0.14.0: + resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} + engines: {node: '>=0.10.0'} + dev: true + + /react-resize-detector@7.1.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-zXnPJ2m8+6oq9Nn8zsep/orts9vQv3elrpA+R8XTcW7DVVUJ9vwDwMXaBtykAYjMnkCIaOoK9vObyR7ZgFNlOw==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + dependencies: + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /react-router-dom@4.3.1(react@18.2.0): + resolution: {integrity: sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA==} + peerDependencies: + react: '>=15' + dependencies: + history: 4.10.1 + invariant: 2.2.4 + loose-envify: 1.4.0 + prop-types: 15.8.1 + react: 18.2.0 + react-router: 4.3.1(react@18.2.0) + warning: 4.0.3 + dev: true + + /react-router-dom@6.11.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-JNbKtAeh1VSJQnH6RvBDNhxNwemRj7KxCzc5jb7zvDSKRnPWIFj9pO+eXqjM69gQJ0r46hSz1x4l9y0651DKWw==} + engines: {node: '>=14'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + dependencies: + '@remix-run/router': 1.6.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-router: 6.11.2(react@18.2.0) + dev: true + + /react-router-dom@6.3.0(react-dom@18.1.0)(react@18.1.0): + 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.3.0(react-dom@18.2.0)(react@18.2.0): + 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-redux@5.0.0-alpha.9(react@18.2.0): + resolution: {integrity: sha512-euSgNIANnRXr4GydIuwA7RZCefrLQzIw5WdXspS8NPYbV+FxrKSS9MKG7U9vb6vsKHONnA4VxrVNWfnMUnUQAw==} + deprecated: This project is no longer maintained. + peerDependencies: + react: '>=15' + dependencies: + history: 4.10.1 + prop-types: 15.8.1 + react: 18.2.0 + react-router: 4.3.1(react@18.2.0) + dev: true + + /react-router@4.3.1(react@18.2.0): + resolution: {integrity: sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg==} + peerDependencies: + react: '>=15' + dependencies: + history: 4.10.1 + hoist-non-react-statics: 2.5.5 + invariant: 2.2.4 + loose-envify: 1.4.0 + path-to-regexp: 1.8.0 + prop-types: 15.8.1 + react: 18.2.0 + warning: 4.0.3 + dev: true + + /react-router@6.11.2(react@18.2.0): + resolution: {integrity: sha512-74z9xUSaSX07t3LM+pS6Un0T55ibUE/79CzfZpy5wsPDZaea1F8QkrsiyRnA2YQ7LwE/umaydzXZV80iDCPkMg==} + engines: {node: '>=14'} + peerDependencies: + react: '>=16.8' + dependencies: + '@remix-run/router': 1.6.2 + 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-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-universal-interface@0.6.2(react@18.2.0)(tslib@2.5.2): + resolution: {integrity: sha512-dg8yXdcQmvgR13RIlZbTRQOoUrDciFVoSBZILwjE2LFISxZZ8loVJKAkuzswl5js8BHda79bIb2b84ehU8IjXw==} + peerDependencies: + react: '*' + tslib: '*' + dependencies: + react: 18.2.0 + tslib: 2.5.2 + dev: false + + /react-use@17.3.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-hs7+tS4rRm1QLHPfanLCqXIi632tP4V7Sai1ENUP2WTufU6am++tU9uSw9YrNCFqbABiEv0ndKU1XCUcfu2tXA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + dependencies: + '@types/js-cookie': 2.2.7 + '@xobotyi/scrollbar-width': 1.9.5 + copy-to-clipboard: 3.3.3 + fast-deep-equal: 3.1.3 + fast-shallow-equal: 1.0.0 + js-cookie: 2.2.1 + nano-css: 5.6.1(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-universal-interface: 0.6.2(react@18.2.0)(tslib@2.5.2) + resize-observer-polyfill: 1.5.1 + screenfull: 5.2.0 + set-harmonic-interval: 1.0.1 + throttle-debounce: 3.0.1 + ts-easing: 0.2.0 + tslib: 2.5.2 + dev: false + + /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.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + 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.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + /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@3.7.2: + resolution: {integrity: sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==} + dependencies: + lodash: 4.17.21 + lodash-es: 4.17.21 + loose-envify: 1.4.0 + symbol-observable: 1.2.0 + dev: true + + /redux@4.2.1: + resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} + dependencies: + '@babel/runtime': 7.22.3 + dev: true + + /reflect-metadata@0.1.14: + resolution: {integrity: sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==} + dev: false + + /reflect-metadata@0.2.1: + resolution: {integrity: sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==} + dev: false + + /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.2.0 + es-abstract: 1.21.2 + get-intrinsic: 1.2.1 + 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.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-transform@0.15.1: + resolution: {integrity: sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==} + dependencies: + '@babel/runtime': 7.22.3 + dev: true + + /regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + dev: true + + /regexp.prototype.flags@1.5.0: + resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + functions-have-names: 1.2.3 + dev: true + + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + set-function-name: 2.0.1 + dev: false + + /regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true + + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.0 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + dev: true + + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + dev: true + + /regl@1.6.1: + resolution: {integrity: sha512-7Z9rmpEqmLNwC9kCYCyfyu47eWZaQWeNpwZfwz99QueXN8B/Ow40DB0N+OeUeM/yu9pZAB01+JgJ+XghGveVoA==} + dev: false + + /regl@1.7.0: + resolution: {integrity: sha512-bEAtp/qrtKucxXSJkD4ebopFZYP0q1+3Vb2WECWv/T8yQEgKxDxJ7ztO285tAMaYZVR6mM1GgI6CCn8FROtL1w==} + dev: false + + /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 + + /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: + 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'} + + /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.12.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==} + + /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-pathname@3.0.0: + resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} + dev: true + + /resolve-protobuf-schema@2.1.0: + resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} + dependencies: + protocol-buffers-schema: 3.6.0 + dev: false + + /resolve.exports@2.0.2: + resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} + engines: {node: '>=10'} + dev: true + + /resolve@1.22.2: + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + hasBin: true + dependencies: + is-core-module: 2.12.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: false + + /resolve@2.0.0-next.4: + resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + hasBin: true + dependencies: + is-core-module: 2.12.1 + 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 + + /right-align@0.1.3: + resolution: {integrity: sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==} + engines: {node: '>=0.10.0'} + dependencies: + align-text: 0.1.4 + dev: false + + /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 + + /rimraf@4.4.1: + resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 9.3.5 + dev: true + + /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(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-xxQZaPFDnpHt4IFO8mukYrXSgC1W8LcNVp+EoX4iyeOJFimungOKB/iP5/cy+st8yXq8lUgk9TXsHNtM6Xo6ZA==} + dependencies: + babel-runtime: 6.26.0 + rc-animate: 2.11.1(react-dom@18.2.0)(react@18.2.0) + rmc-date-picker: 6.0.10(react-dom@18.2.0)(react@18.2.0) + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rmc-cascader@5.0.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-PxDhMjWViDdG4SMZqoXtAthGwgDyYnyxxZEE17IDDYsiCHpWtOhoIL8nsI+/hZ212UT/XF2LpqCsOlMoJiYk+w==} + dependencies: + array-tree-filter: 2.1.0 + babel-runtime: 6.26.0 + rmc-picker: 5.0.10(react-dom@18.2.0)(react@18.2.0) + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rmc-date-picker@6.0.10(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-/9+I6lm3EDEl6M7862V6++zFuxwsM0UEq8wSHbotYIPPmyB/65gx1cviblghOv2QfB0O9+U2w3qEJlRP/WsMrA==} + dependencies: + babel-runtime: 6.26.0 + rmc-picker: 5.0.10(react-dom@18.2.0)(react@18.2.0) + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rmc-dialog@1.1.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-28aJqtPTX6v13Z/aU1WBy1AFIXkE74PxZXde7JvtEIy9hQDTjH8fqOi822BpzAbXCyNE7jF9iFomy3H2ClsDJA==} + dependencies: + babel-runtime: 6.26.0 + rc-animate: 2.11.1(react-dom@18.2.0)(react@18.2.0) + 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(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-9sPxjltFvtRLt2v312Hu7OXwk53pHkBYgINRDmnJ3A5NF1qtJeCCcdN0Xr0fzJ6sbQvtGju822tWHdzYA9u7Vw==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + prop-types: 15.8.1 + rc-animate: 2.11.1(react-dom@18.2.0)(react@18.2.0) + 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(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-KZ70+WjcaZHnG5GyCxWCPFWAZ12s6NqyrbW73LeqH0WEqaTMMs0sOrk2f4mQAZ/CGT0XcFN6VZLw7Ozoxfn7LA==} + dependencies: + babel-runtime: 6.26.0 + classnames: 2.3.2 + rmc-dialog: 1.1.1(react-dom@18.2.0)(react@18.2.0) + 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(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-fSDArf2BlMVrHExmBiqb2TkCRJHshvXFJQ/7tMraLellwaJLNiwrxtWpW329k3S+zTtoVG8UxFS1TjBGEsMzRg==} + dependencies: + babel-runtime: 6.26.0 + rmc-trigger: 1.0.12(react-dom@18.2.0)(react@18.2.0) + transitivePeerDependencies: + - react + - react-dom + dev: true + + /rmc-trigger@1.0.12(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-AccQniX7PX7Pm8hBhHEsnf3JU6CA61Xc7fAt2WbO+oXrGaI/jqN8C3COhhOXG54S5iTOjLS26j858zshwAxR9A==} + dependencies: + babel-runtime: 6.26.0 + rc-animate: 2.11.1(react-dom@18.2.0)(react@18.2.0) + rc-util: 4.21.1 + rmc-align: 1.0.0 + transitivePeerDependencies: + - react + - react-dom + dev: true + + /robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + dev: false + + /rollup-plugin-visualizer@5.9.0: + resolution: {integrity: sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==} + engines: {node: '>=14'} + hasBin: true + peerDependencies: + rollup: 2.x || 3.x + peerDependenciesMeta: + rollup: + optional: true + dependencies: + open: 8.4.2 + picomatch: 2.3.1 + source-map: 0.7.4 + yargs: 17.7.2 + dev: true + + /rollup@0.25.8: + resolution: {integrity: sha512-a2S4Bh3bgrdO4BhKr2E4nZkjTvrJ2m2bWjMTzVYtoqSCn0HnuxosXnaJUHrMEziOWr3CzL9GjilQQKcyCQpJoA==} + hasBin: true + dependencies: + chalk: 1.1.3 + minimist: 1.2.8 + source-map-support: 0.3.3 + dev: false + + /rollup@3.23.0: + resolution: {integrity: sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /rtl-css-js@1.16.1: + resolution: {integrity: sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==} + dependencies: + '@babel/runtime': 7.22.3 + dev: false + + /run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + dependencies: + execa: 5.1.1 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + + /rust-result@1.0.0: + resolution: {integrity: sha512-6cJzSBU+J/RJCF063onnQf0cDUOHs9uZI1oroSGnHOph+CQTIJ5Pp2hK5kEQq1+7yE/EEWfulSNXAQ2jikPthA==} + dependencies: + individual: 2.0.0 + dev: false + + /rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + dev: false + + /rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + dependencies: + tslib: 1.14.1 + dev: false + + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.5.2 + dev: true + + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: false + + /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==} + + /safe-json-parse@4.0.0: + resolution: {integrity: sha512-RjZPPHugjK0TOzFrLZ8inw44s9bKox99/0AZW9o/BEQVrJfhI+fIHMErnPyRa89/yRXUUr93q+tiN6zhoVV4wQ==} + dependencies: + rust-result: 1.0.0 + dev: false + + /safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-regex: 1.1.4 + + /safe-regex@2.1.1: + resolution: {integrity: sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==} + dependencies: + regexp-tree: 0.1.27 + dev: true + + /safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + /sax@1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + dev: true + optional: true + + /saxes@5.0.1: + resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} + engines: {node: '>=10'} + dependencies: + xmlchars: 2.2.0 + dev: false + + /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.12 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + dev: false + + /schema-utils@3.1.2: + resolution: {integrity: sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/json-schema': 7.0.12 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + /screenfull@5.2.0: + resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==} + engines: {node: '>=0.10.0'} + + /scroll-into-view-if-needed@2.2.31: + resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} + dependencies: + compute-scroll-into-view: 1.0.20 + dev: true + + /scroll-into-view-if-needed@3.0.10: + resolution: {integrity: sha512-t44QCeDKAPf1mtQH3fYpWz8IM/DyvHLjs8wUvvwMYxk5moOqCzrMSxK6HQVD0QVmVjXFavoFIPRVrMuJPKAvtg==} + dependencies: + compute-scroll-into-view: 3.0.3 + + /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.5.1: + resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==} + 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 + + /serialize-javascript@6.0.1: + resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + dependencies: + randombytes: 2.1.0 + + /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 + + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + dev: false + optional: true + + /set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.0 + + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.0 + dev: false + + /set-harmonic-interval@1.0.1: + resolution: {integrity: sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==} + engines: {node: '>=6.9'} + dev: false + + /set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + dev: false + + /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.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + 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.5 + get-intrinsic: 1.2.2 + object-inspect: 1.13.1 + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + /simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + dev: false + optional: true + + /simple-get@3.1.1: + resolution: {integrity: sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==} + dependencies: + decompress-response: 4.2.1 + once: 1.4.0 + simple-concat: 1.0.1 + dev: false + optional: true + + /simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + dependencies: + is-arrayish: 0.3.2 + dev: false + + /single-spa@5.9.4: + resolution: {integrity: sha512-QkEoh0AzGuU82qnbUUk0ydF78QbU5wMKqKKJn7uUQfBiOYlRQEfIOpLM4m23Sab+kTOLI1kbYhYeiQ7fX5KVVw==} + dev: true + + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.24 + mrmime: 2.0.0 + totalist: 3.0.1 + dev: false + + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + /size-sensor@1.0.2: + resolution: {integrity: sha512-2NCmWxY7A9pYKGXNBfteo4hy14gWu47rg5692peVMst6lQLPKrVjhY+UTEsPI5ceFRJSl3gVgMYaUi/hKuaiKw==} + dev: false + + /slash2@2.0.0: + resolution: {integrity: sha512-7ElvBydJPi3MHU/KEOblFSbO/skl4Z69jKkFCpYIYVOMSIZsKi4gYU43HGeZPmjxCXrHekoDAAewphPQNnsqtA==} + engines: {node: '>=6'} + dev: true + + /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'} + + /slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + 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-asc@0.2.0: + resolution: {integrity: sha512-umMGhjPeHAI6YjABoSTrFp2zaBtXBej1a0yKkuMUyjjqu6FJsTF+JYwCswWDg+zJfk/5npWUUbd33HH/WLzpaA==} + engines: {node: '>=0.10.0'} + dev: false + + /sort-desc@0.2.0: + resolution: {integrity: sha512-NqZqyvL4VPW+RAxxXnB8gvE1kyikh8+pR+T+CXLksVRN9eiQqkQlPwqWYU0mF9Jm7UnctShlxLyAt1CaBOTL1w==} + engines: {node: '>=0.10.0'} + dev: false + + /sort-object-keys@1.1.3: + resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} + dev: true + + /sort-object@3.0.3: + resolution: {integrity: sha512-nK7WOY8jik6zaG9CRwZTaD5O7ETWDLZYMM12pqY8htll+7dYeqGfEUPcUBHOpSJg2vJOrvFIY2Dl5cX2ih1hAQ==} + engines: {node: '>=0.10.0'} + dependencies: + bytewise: 1.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + sort-asc: 0.2.0 + sort-desc: 0.2.0 + union-value: 1.0.1 + dev: false + + /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 + + /sort-package-json@2.4.1: + resolution: {integrity: sha512-Nd3rgLBJcZ4iw7tpuOhwBupG6SvUDU0Fy1cZGAMorA2JmDUb+29Dg5phJK9gapa2Ak9d15w/RuMl/viwX+nKwQ==} + hasBin: true + dependencies: + detect-indent: 7.0.1 + detect-newline: 4.0.0 + git-hooks-list: 3.1.0 + globby: 13.1.4 + is-plain-obj: 4.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.3.3: + resolution: {integrity: sha512-9O4+y9n64RewmFoKUZ/5Tx9IHIcXM6Q+RTSw6ehnqybUz4a7iwR3Eaw80uLtqqQ5D0C+5H03D4KKGo9PdP33Gg==} + dependencies: + source-map: 0.1.32 + dev: false + + /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 + + /source-map@0.1.32: + resolution: {integrity: sha512-htQyLrrRLkQ87Zfrir4/yN+vAUd6DNjVayEjTSHXu29AYQJw57I4/xEL/M6p6E/woPNJwvZt6rVlzc7gFEJccQ==} + engines: {node: '>=0.8.0'} + dependencies: + amdefine: 1.0.1 + dev: false + + /source-map@0.5.6: + resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} + engines: {node: '>=0.10.0'} + dev: false + + /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'} + + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + dev: true + + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.13 + 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.13 + dev: true + + /spdx-license-ids@3.0.13: + resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + dev: true + + /spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + dependencies: + debug: 4.3.4(supports-color@5.5.0) + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + 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(supports-color@5.5.0) + 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 + + /splaytree@3.1.2: + resolution: {integrity: sha512-4OM2BJgC5UzrhVnnJA4BkHKGtjXNzzUfpQjCO8I05xYPsfS/VuQDwjCGGMi8rYQilHEV4j8NBqTFbls/PZEE7A==} + dev: false + + /split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + dev: true + + /split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + dependencies: + extend-shallow: 3.0.2 + dev: false + + /split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + 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-generator@2.0.10: + resolution: {integrity: sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==} + dependencies: + stackframe: 1.3.4 + dev: false + + /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==} + + /stacktrace-gps@3.1.2: + resolution: {integrity: sha512-GcUgbO4Jsqqg6RxfyTHFiPxdPqF+3LFmQhm7MgCuYQOYuWyqxo5pwRPz5d/u6/WYJdEnWfK4r+jGbyD8TSggXQ==} + dependencies: + source-map: 0.5.6 + stackframe: 1.3.4 + dev: false + + /stacktrace-js@2.0.2: + resolution: {integrity: sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==} + dependencies: + error-stack-parser: 2.1.4 + stack-generator: 2.0.10 + stacktrace-gps: 3.1.2 + dev: false + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + 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.5 + dev: true + + /stream-browserify@2.0.2: + resolution: {integrity: sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==} + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + 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.8 + 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 + + /string.prototype.matchall@4.0.8: + resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + regexp.prototype.flags: 1.5.0 + side-channel: 1.0.4 + dev: true + + /string.prototype.trim@1.2.7: + resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: true + + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.3 + dev: false + + /string.prototype.trimend@1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: true + + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.0 + es-abstract: 1.22.3 + dev: false + + /string.prototype.trimstart@1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: true + + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.0 + es-abstract: 1.22.3 + dev: false + + /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 + + /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@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + dependencies: + ansi-regex: 2.1.1 + dev: false + + /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-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + 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 + + /strophe.jingle@0.0.9: + resolution: {integrity: sha512-6spYc1+69IoTEuoZU36fwH+KOM4xrLOvgUltLIvtCZUr8ANx9AJ900rjbhAKiu14End1akC4knSLhIBkW/T/Pw==} + dependencies: + strophe.js: 1.6.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /strophe.js@1.6.2: + resolution: {integrity: sha512-aS4zkPACypSsmewr54IAVexn+m9RHrnxQEn/kr8eF8jK5lhv+nZTEEcKMaXBRyQ00lpOAEY9lYHbApXwqIjCpA==} + dependencies: + abab: 2.0.6 + optionalDependencies: + '@xmldom/xmldom': 0.8.7 + ws: 8.13.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /strophejs-plugin-caps@1.1.3(strophe.js@1.6.2)(strophejs-plugin-disco@0.0.2): + resolution: {integrity: sha512-TsnZiU7fKFv8J/jU8wFI+7kJv3zlv0Ny0PYg5zIazyprmfVbxjZxNft7GzSo20L1+Gp25Aq/zsw0YAmzhdY+DQ==} + peerDependencies: + strophe.js: '>=1.2' + strophejs-plugin-disco: '>=0.0.1' + dependencies: + strophe.js: 1.6.2 + strophejs-plugin-disco: 0.0.2(strophe.js@1.6.2) + dev: false + + /strophejs-plugin-disco@0.0.2(strophe.js@1.6.2): + resolution: {integrity: sha512-T9pJFzn1ZUqZ/we9+OvI5pFdrjeb4IBMbEjK+ZWEZV036wEl8l8GOtF8AJ3sIqOMtdIiFLdFu99JiGWd7yapAQ==} + peerDependencies: + strophe.js: ^1.2.12 + dependencies: + strophe.js: 1.6.2 + dev: false + + /strophejs-plugin-muc@1.1.0(strophe.js@1.6.2): + resolution: {integrity: sha512-IGMCOSxGIgYwHRDVBRCzjDy8AedHxjz2TuJ0vTuLo6v3DisLeW4d107R/SkbkjVknoX1M42fdpZ9oKb5zRsLxw==} + peerDependencies: + strophe.js: '>=1.2' + dependencies: + strophe.js: 1.6.2 + dev: false + + /style-search@0.1.0: + resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} + dev: true + + /styled-components@5.3.11(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==} + engines: {node: '>=10'} + peerDependencies: + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + react-is: '>= 16.8.0' + dependencies: + '@babel/helper-module-imports': 7.21.4 + '@babel/traverse': 7.22.1(supports-color@5.5.0) + '@emotion/is-prop-valid': 1.2.1 + '@emotion/stylis': 0.8.5 + '@emotion/unitless': 0.7.5 + babel-plugin-styled-components: 2.1.3(styled-components@5.3.11) + css-to-react-native: 3.2.0 + 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 + shallowequal: 1.1.0 + supports-color: 5.5.0 + dev: true + + /styled-components@6.0.0-beta.9(react-dom@18.2.0)(react@18.2.0)(tslib@2.5.2): + resolution: {integrity: sha512-RYtmvWZForwSd24aZgi3iGZM/6HvJkP7zobHK+bwC01vI6QhHK5MX9ayXEnJWaFY7DoEWoAnar5ACiGVkTCoCQ==} + engines: {node: '>= 14'} + peerDependencies: + babel-plugin-styled-components: '>= 2' + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + shallowequal: '>= 1' + stylis: ^4.0.0 + tslib: ^2.0.0 + peerDependenciesMeta: + babel-plugin-styled-components: + optional: true + shallowequal: + optional: true + stylis: + optional: true + tslib: + optional: true + dependencies: + '@babel/cli': 7.21.5(@babel/core@7.22.1) + '@babel/core': 7.22.1 + '@babel/helper-module-imports': 7.21.4 + '@babel/plugin-external-helpers': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.22.1) + '@babel/preset-env': 7.22.2(@babel/core@7.22.1) + '@babel/preset-react': 7.22.3(@babel/core@7.22.1) + '@babel/preset-typescript': 7.21.5(@babel/core@7.22.1) + '@babel/traverse': 7.22.1(supports-color@5.5.0) + '@emotion/unitless': 0.8.1 + css-to-react-native: 3.2.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.5.2 + transitivePeerDependencies: + - supports-color + dev: true + + /styled-components@6.0.0-rc.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-3+Lnu1NC5JuieYi8dV/nhmlK7/yzqZW43u4P7WgIJfu5Dq5AiPU3t4efu0nWLmlMEmWrSXdrinxfbDnqnpP6hg==} + 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.21.5(@babel/core@7.22.1) + '@babel/core': 7.22.1 + '@babel/helper-module-imports': 7.21.4 + '@babel/plugin-external-helpers': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.1) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.22.1) + '@babel/preset-env': 7.22.2(@babel/core@7.22.1) + '@babel/preset-react': 7.22.3(@babel/core@7.22.1) + '@babel/preset-typescript': 7.21.5(@babel/core@7.22.1) + '@babel/traverse': 7.22.1(supports-color@5.5.0) + '@emotion/unitless': 0.8.1 + 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.2.0 + tslib: 2.5.2 + 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(stylelint@14.16.1): + resolution: {integrity: sha512-yGn84Bf/q41J4luis1AZ95gj0EQwRX8lWmGmBwkwBNSkpGSpl66XcPTulxGa/Z91aPoNGuIGBmFkcM1MejMo9Q==} + peerDependencies: + stylelint: ^14.4.0 + dependencies: + stylelint: 14.16.1 + 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(stylelint@14.16.1): + resolution: {integrity: sha512-21HnP3VSpaT1wFjFvv9VjvOGDtAviv47uTp3uFmzcN+3Lt+RYRv6oAplLaV51Kf792JSxJ6svCJh/G18E9VnCA==} + peerDependencies: + stylelint: ^14.4.0 + dependencies: + stylelint: 14.16.1 + stylelint-config-recommended: 7.0.0(stylelint@14.16.1) + 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.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 || ^15.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(postcss-syntax@0.36.2)(postcss@7.0.39) + '@stylelint/postcss-markdown': 0.36.2(postcss-syntax@0.36.2)(postcss@7.0.39) + autoprefixer: 9.8.8 + balanced-match: 2.0.0 + chalk: 4.1.2 + cosmiconfig: 7.1.0 + debug: 4.3.4(supports-color@5.5.0) + 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.3.1 + ignore: 5.2.4 + 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(postcss-syntax@0.36.2)(postcss@7.0.39) + 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.13 + postcss-syntax: 0.36.2(postcss-html@0.36.0)(postcss-less@3.1.4)(postcss-scss@2.1.1)(postcss@7.0.39) + 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.16.1: + resolution: {integrity: sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dependencies: + '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.13) + balanced-match: 2.0.0 + colord: 2.9.3 + cosmiconfig: 7.1.0 + css-functions-list: 3.1.0 + debug: 4.3.4(supports-color@5.5.0) + fast-glob: 3.2.12 + fastest-levenshtein: 1.0.16 + file-entry-cache: 6.0.1 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.3.1 + ignore: 5.2.4 + import-lazy: 4.0.0 + imurmurhash: 0.1.4 + is-plain-object: 5.0.0 + known-css-properties: 0.26.0 + mathml-tag-names: 2.1.3 + meow: 9.0.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.24 + postcss-media-query-parser: 0.2.3 + postcss-resolve-nested-selector: 0.1.1 + postcss-safe-parser: 6.0.0(postcss@8.4.24) + postcss-selector-parser: 6.0.13 + postcss-value-parser: 4.2.0 + resolve-from: 5.0.0 + 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 + + /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(supports-color@5.5.0) + 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.3.1 + ignore: 5.2.4 + 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.24 + postcss-media-query-parser: 0.2.3 + postcss-resolve-nested-selector: 0.1.1 + postcss-safe-parser: 6.0.0(postcss@8.4.24) + postcss-selector-parser: 6.0.13 + 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.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + + /stylis@4.3.0: + resolution: {integrity: sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==} + dev: false + + /sugarss@2.0.0: + resolution: {integrity: sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==} + dependencies: + postcss: 7.0.39 + dev: true + + /supercluster@7.1.5: + resolution: {integrity: sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg==} + dependencies: + kdbush: 3.0.0 + dev: false + + /supercluster@8.0.1: + resolution: {integrity: sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==} + dependencies: + kdbush: 4.0.2 + dev: false + + /superjson@1.12.3: + resolution: {integrity: sha512-0j+U70KUtP8+roVPbwfqkyQI7lBt7ETnuA7KXbTDX3mCKiD/4fXs2ldKSMdt0MCfpTwiMxo20yFU3vu6ewETpQ==} + engines: {node: '>=10'} + dependencies: + copy-anything: 3.0.5 + dev: true + + /supports-color@2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + dev: false + + /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 + + /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.19.0: + resolution: {integrity: sha512-9C9fJGI18gK5AhaU5YRyPY1lXJH4lmWh8h9zFMrJBkYzdRjCbAzYl1ayWPYgwFvag/Luqi3Co599OK/39IS2QQ==} + 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.11 + 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.7.2 + transitivePeerDependencies: + - encoding + dev: true + + /swr@2.1.5(react@18.2.0): + resolution: {integrity: sha512-/OhfZMcEpuz77KavXST5q6XE9nrOBOVcBLWjMT+oAE/kQHyE3PASrevXCtQDZ8aamntOfFkbVJp7Il9tNBQWrw==} + 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-observable@1.2.0: + resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==} + engines: {node: '>=0.10.0'} + dev: true + + /symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + /synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.4.1 + tslib: 2.5.2 + dev: true + + /table@6.8.1: + resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} + engines: {node: '>=10.0.0'} + dependencies: + ajv: 8.12.0 + 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'} + + /tape@4.17.0: + resolution: {integrity: sha512-KCuXjYxCZ3ru40dmND+oCLsXyuA8hoseu2SS404Px5ouyS0A99v8X/mdiLqsR5MTAyamMBN7PRwt2Dv3+xGIxw==} + hasBin: true + dependencies: + '@ljharb/resumer': 0.0.1 + '@ljharb/through': 2.3.11 + call-bind: 1.0.2 + deep-equal: 1.1.2 + defined: 1.0.1 + dotignore: 0.1.2 + for-each: 0.3.3 + glob: 7.2.3 + has: 1.0.3 + inherits: 2.0.4 + is-regex: 1.1.4 + minimist: 1.2.8 + mock-property: 1.0.3 + object-inspect: 1.12.3 + resolve: 1.22.8 + string.prototype.trim: 1.2.8 + dev: false + + /tar@6.2.0: + resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + engines: {node: '>=10'} + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + dev: false + optional: true + + /terser-webpack-plugin@5.3.9(webpack@5.84.1): + resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.18 + jest-worker: 27.5.1 + schema-utils: 3.1.2 + serialize-javascript: 6.0.1 + terser: 5.17.6 + webpack: 5.84.1 + + /terser@5.17.6: + resolution: {integrity: sha512-V8QHcs8YuyLkLHsJO5ucyff1ykrLVsR4dNnS//L5Y3NiSXpbK1J+WMVUs67eI0KTxs9JtHhgEQpXQVHlHI92DQ==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.3 + acorn: 8.8.2 + commander: 2.20.3 + source-map-support: 0.5.21 + + /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 + + /throttle-debounce@3.0.1: + resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==} + engines: {node: '>=10'} + dev: false + + /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 + + /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-invariant@1.3.1: + resolution: {integrity: sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==} + dev: true + + /tiny-pinyin@1.3.2: + resolution: {integrity: sha512-uHNGu4evFt/8eNLldazeAM1M8JrMc1jshhJJfVRARTN3yT8HEEibofeQ7QETWQ5ISBjd6fKtTVBCC/+mGS6FpA==} + dev: true + + /tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + dev: true + + /tinycolor2@1.6.0: + resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} + + /tinyqueue@2.0.3: + resolution: {integrity: sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==} + dev: false + + /titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + dev: true + + /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 + + /topojson-client@3.1.0: + resolution: {integrity: sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==} + hasBin: true + dependencies: + commander: 2.20.3 + dev: false + + /toposort@2.0.2: + resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} + dev: false + + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: false + + /tough-cookie@2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + dependencies: + psl: 1.9.0 + punycode: 2.3.0 + dev: true + + /tough-cookie@4.1.2: + resolution: {integrity: sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==} + engines: {node: '>=6'} + dependencies: + psl: 1.9.0 + punycode: 2.3.0 + universalify: 0.2.0 + url-parse: 1.5.10 + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + /tr46@2.1.0: + resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} + engines: {node: '>=8'} + dependencies: + punycode: 2.3.0 + dev: false + + /tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + dependencies: + punycode: 2.3.0 + + /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-easing@0.2.0: + resolution: {integrity: sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==} + dev: false + + /ts-node@10.9.1(@types/node@20.2.5)(typescript@5.0.2): + 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.4 + '@types/node': 20.2.5 + 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: 5.0.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + /tslib@2.3.0: + resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} + dev: false + + /tslib@2.5.2: + resolution: {integrity: sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==} + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: false + + /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.5 + dev: true + + /tsutils@3.21.0(typescript@5.0.2): + 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: 5.0.2 + dev: true + + /tsx@3.12.7: + resolution: {integrity: sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw==} + hasBin: true + dependencies: + '@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 + + /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 + + /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 + + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: false + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: false + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: false + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + is-typed-array: 1.1.12 + + /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.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /typescript@5.0.2: + resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==} + engines: {node: '>=12.20'} + hasBin: true + + /typewise-core@1.2.0: + resolution: {integrity: sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==} + dev: false + + /typewise@1.0.3: + resolution: {integrity: sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==} + dependencies: + typewise-core: 1.2.0 + dev: false + + /ua-parser-js@0.7.35: + resolution: {integrity: sha512-veRf7dawaj9xaWEu9HoTVn5Pggtc/qj+kqTOFvNiN1l0YdxwC1kvel57UCjThjGa3BHBihE8/UJAHI+uQHmd/g==} + + /uglify-js@2.8.29: + resolution: {integrity: sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w==} + engines: {node: '>=0.8.0'} + hasBin: true + dependencies: + source-map: 0.5.7 + yargs: 3.10.0 + optionalDependencies: + uglify-to-browserify: 1.0.2 + dev: false + + /uglify-to-browserify@1.0.2: + resolution: {integrity: sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==} + requiresBuild: true + dev: false + optional: true + + /umi-presets-pro@2.0.3(@types/react-dom@18.2.4)(@types/react@18.2.7)(antd@5.5.1)(dva@2.5.0-beta.2)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0)(umi@4.0.69): + resolution: {integrity: sha512-sHKynw/fi7UeUftzTRPRsrV5GHV4BWvWYhyvwkg8s+shmt0ROPW/52y4gxBziEvetxl8yWMKUCWk50OUDOcrww==} + dependencies: + '@alita/plugins': 3.2.22(@types/react-dom@18.2.4)(@types/react@18.2.7)(antd@5.5.1)(dva@2.5.0-beta.2)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@umijs/max-plugin-openapi': 2.0.3 + '@umijs/plugins': 4.0.69(@types/react-dom@18.2.4)(@types/react@18.2.7)(antd@5.5.1)(dva@2.5.0-beta.2)(rc-field-form@1.32.0)(react-dom@18.2.0)(react@18.2.0) + '@umijs/request-record': 1.1.4(umi@4.0.69) + swagger-ui-dist: 4.19.0 + transitivePeerDependencies: + - '@types/lodash.merge' + - '@types/react' + - '@types/react-dom' + - antd + - babel-plugin-styled-components + - chokidar + - debug + - dva + - encoding + - postcss-jsx + - postcss-markdown + - rc-field-form + - react + - react-dom + - react-native + - shallowequal + - stylis + - supports-color + - umi + dev: true + + /umi-request@1.4.0: + resolution: {integrity: sha512-OknwtQZddZHi0Ggi+Vr/olJ7HNMx4AzlywyK0W3NZBT7B0stjeZ9lcztA85dBgdAj3KVk8uPJPZSnGaDjELhrA==} + dependencies: + isomorphic-fetch: 2.2.1 + qs: 6.11.2 + 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.69(@babel/core@7.22.1)(@types/node@20.2.5)(@types/react@18.2.7)(eslint@8.35.0)(jest@29.5.0)(postcss@8.4.24)(prettier@2.8.8)(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.11)(stylelint@14.8.2)(typescript@5.0.2)(webpack@5.84.1): + resolution: {integrity: sha512-n6MqLQnJKpCDPzzMptSBa/2yfawNs0yXSWg6yWwKAyVew+IxodqD99+6i9ssGCudXPaC5AnbjIqF4bwa1IjTWw==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@babel/runtime': 7.21.0 + '@umijs/bundler-utils': 4.0.69 + '@umijs/bundler-webpack': 4.0.69(styled-components@5.3.11)(typescript@5.0.2)(webpack@5.84.1) + '@umijs/core': 4.0.69 + '@umijs/lint': 4.0.69(eslint@8.35.0)(jest@29.5.0)(styled-components@5.3.11)(stylelint@14.8.2)(typescript@5.0.2) + '@umijs/preset-umi': 4.0.69(@types/node@20.2.5)(@types/react@18.2.7)(postcss@8.4.24)(styled-components@5.3.11)(typescript@5.0.2)(webpack@5.84.1) + '@umijs/renderer-react': 4.0.69(react-dom@18.2.0)(react@18.2.0) + '@umijs/server': 4.0.69 + '@umijs/test': 4.0.69(@babel/core@7.22.1) + '@umijs/utils': 4.0.69 + prettier-plugin-organize-imports: 3.2.2(prettier@2.8.8)(typescript@5.0.2) + prettier-plugin-packagejson: 2.4.3(prettier@2.8.8) + transitivePeerDependencies: + - '@babel/core' + - '@types/node' + - '@types/react' + - '@types/webpack' + - '@volar/vue-language-plugin-pug' + - '@volar/vue-typescript' + - eslint + - jest + - postcss + - postcss-html + - postcss-jsx + - postcss-less + - postcss-markdown + - postcss-scss + - prettier + - react + - react-dom + - rollup + - sass + - sockjs-client + - styled-components + - stylelint + - stylus + - sugarss + - supports-color + - terser + - type-fest + - typescript + - webpack + - webpack-dev-server + - webpack-hot-middleware + - webpack-plugin-serve + dev: true + + /umi@4.0.69(@babel/core@7.22.1)(@types/node@20.2.5)(@types/react@18.2.7)(eslint@8.41.0)(jest@29.5.0)(postcss@8.4.24)(prettier@2.8.8)(react-dom@18.2.0)(react@18.2.0)(styled-components@5.3.11)(stylelint@14.16.1)(typescript@5.0.2)(webpack@5.84.1): + resolution: {integrity: sha512-n6MqLQnJKpCDPzzMptSBa/2yfawNs0yXSWg6yWwKAyVew+IxodqD99+6i9ssGCudXPaC5AnbjIqF4bwa1IjTWw==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@babel/runtime': 7.21.0 + '@umijs/bundler-utils': 4.0.69 + '@umijs/bundler-webpack': 4.0.69(styled-components@5.3.11)(typescript@5.0.2)(webpack@5.84.1) + '@umijs/core': 4.0.69 + '@umijs/lint': 4.0.69(eslint@8.41.0)(jest@29.5.0)(styled-components@5.3.11)(stylelint@14.16.1)(typescript@5.0.2) + '@umijs/preset-umi': 4.0.69(@types/node@20.2.5)(@types/react@18.2.7)(postcss@8.4.24)(styled-components@5.3.11)(typescript@5.0.2)(webpack@5.84.1) + '@umijs/renderer-react': 4.0.69(react-dom@18.2.0)(react@18.2.0) + '@umijs/server': 4.0.69 + '@umijs/test': 4.0.69(@babel/core@7.22.1) + '@umijs/utils': 4.0.69 + prettier-plugin-organize-imports: 3.2.2(prettier@2.8.8)(typescript@5.0.2) + prettier-plugin-packagejson: 2.4.3(prettier@2.8.8) + transitivePeerDependencies: + - '@babel/core' + - '@types/node' + - '@types/react' + - '@types/webpack' + - '@volar/vue-language-plugin-pug' + - '@volar/vue-typescript' + - eslint + - jest + - postcss + - postcss-html + - postcss-jsx + - postcss-less + - postcss-markdown + - postcss-scss + - prettier + - react + - react-dom + - rollup + - sass + - sockjs-client + - styled-components + - stylelint + - stylus + - sugarss + - supports-color + - terser + - type-fest + - typescript + - 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.5 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + + /underscore@1.7.0: + resolution: {integrity: sha512-cp0oQQyZhUM1kpJDLdGO1jPZHgS/MpzoWYfe9+CM2h/QGDZlqwT2T3YGukuBdaNJ/CAPoeyAZRRHz8JFo176vA==} + dev: true + + /unfetch@5.0.0: + resolution: {integrity: sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg==} + 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 + + /union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + dev: false + + /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'} + + /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 + + /untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + dev: true + + /update-browserslist-db@1.0.11(browserslist@4.21.6): + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.6 + escalade: 3.1.1 + picocolors: 1.0.0 + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.0 + + /url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + /url-toolkit@2.2.5: + resolution: {integrity: sha512-mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg==} + dev: false + + /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(@types/react@18.2.7)(react@18.1.0): + 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': 18.2.7 + react: 18.1.0 + dev: true + + /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 + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + /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 + + /utility-types@3.10.0: + resolution: {integrity: sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==} + engines: {node: '>= 4'} + dev: false + + /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.1.0: + resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} + engines: {node: '>=10.12.0'} + dependencies: + '@jridgewell/trace-mapping': 0.3.18 + '@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.2.0 + spdx-expression-parse: 3.0.1 + dev: true + + /valtio@1.9.0(react@18.2.0): + resolution: {integrity: sha512-mQLFsAlKbYascZygFQh6lXuDjU5WHLoeZ8He4HqMnWfasM96V6rDbeFkw1XeG54xycmDonr/Jb4xgviHtuySrA==} + engines: {node: '>=12.20.0'} + peerDependencies: + react: '>=16.8' + peerDependenciesMeta: + react: + optional: true + dependencies: + proxy-compare: 2.4.0 + react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + dev: true + + /value-equal@1.0.1: + resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} + 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 + + /video.js@8.5.2: + resolution: {integrity: sha512-6/uNXQV3xSaKLpaPf/bVvr7omd+82sKUp0RMBgIt4PxHIe28GtX+O+GcNfI2fuwBvcDRDqk5Ei5AG9bJJOpulA==} + dependencies: + '@babel/runtime': 7.22.3 + '@videojs/http-streaming': 3.5.3(video.js@8.5.2) + '@videojs/vhs-utils': 4.0.0 + '@videojs/xhr': 2.6.0 + aes-decrypter: 4.0.1 + global: 4.4.0 + keycode: 2.2.0 + m3u8-parser: 6.2.0 + mpd-parser: 1.3.0 + mux.js: 6.3.0 + safe-json-parse: 4.0.0 + videojs-contrib-quality-levels: 4.0.0(video.js@8.5.2) + videojs-font: 4.1.0 + videojs-vtt.js: 0.15.5 + dev: false + + /videojs-contrib-quality-levels@4.0.0(video.js@8.5.2): + resolution: {integrity: sha512-u5rmd8BjLwANp7XwuQ0Q/me34bMe6zg9PQdHfTS7aXgiVRbNTb4djcmfG7aeSrkpZjg+XCLezFNenlJaCjBHKw==} + engines: {node: '>=14', npm: '>=6'} + peerDependencies: + video.js: ^8 + dependencies: + global: 4.4.0 + video.js: 8.5.2 + dev: false + + /videojs-font@4.1.0: + resolution: {integrity: sha512-X1LuPfLZPisPLrANIAKCknZbZu5obVM/ylfd1CN+SsCmPZQ3UMDPcvLTpPBJxcBuTpHQq2MO1QCFt7p8spnZ/w==} + dev: false + + /videojs-vtt.js@0.15.5: + resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==} + dependencies: + global: 4.4.0 + dev: false + + /viewport-mercator-project@6.2.3: + resolution: {integrity: sha512-QQb0/qCLlP4DdfbHHSWVYXpghB2wkLIiiZQnoelOB59mXKQSyZVxjreq1S+gaBJFpcGkWEcyVtre0+2y2DTl/Q==} + dependencies: + '@babel/runtime': 7.22.3 + gl-matrix: 3.4.3 + dev: false + + /vite@4.3.1(@types/node@20.2.5)(less@4.1.3): + resolution: {integrity: sha512-EPmfPLAI79Z/RofuMvkIS0Yr091T2ReUoXQqc5ppBX/sjFRhHKiPPF/R46cTdoci/XgeQpB23diiJxq5w30vdg==} + 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: + '@types/node': 20.2.5 + esbuild: 0.17.19 + less: 4.1.3 + postcss: 8.4.24 + rollup: 3.23.0 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vm-browserify@1.1.2: + resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} + dev: true + + /vt-pbf@3.1.3: + resolution: {integrity: sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==} + dependencies: + '@mapbox/point-geometry': 0.1.0 + '@mapbox/vector-tile': 1.3.1 + pbf: 3.2.1 + dev: false + + /w3c-hr-time@1.0.2: + resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} + deprecated: Use your platform's native performance.now() and performance.timeOrigin. + dependencies: + browser-process-hrtime: 1.0.0 + dev: false + + /w3c-xmlserializer@2.0.0: + resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} + engines: {node: '>=10'} + dependencies: + xml-name-validator: 3.0.0 + dev: false + + /w3c-xmlserializer@3.0.0: + resolution: {integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==} + engines: {node: '>=12'} + dependencies: + xml-name-validator: 4.0.0 + dev: false + optional: 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 + + /watchpack@2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + /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 + + /web-streams-polyfill@3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} + dev: true + + /web-worker-helper@0.0.3: + resolution: {integrity: sha512-/TllNPjGenDwjE67M16TD9ALwuY847/zIoH7r+e5rSeG4kEa3HiMTAsUDj80yzIzhtshkv215KfsnQ/RXR3nVA==} + dev: false + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + /webidl-conversions@5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} + dev: false + + /webidl-conversions@6.1.0: + resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} + engines: {node: '>=10.4'} + dev: false + + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + /webpack-bundle-analyzer@4.10.1: + resolution: {integrity: sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==} + engines: {node: '>= 10.13.0'} + hasBin: true + dependencies: + '@discoveryjs/json-ext': 0.5.7 + acorn: 8.8.2 + acorn-walk: 8.2.0 + commander: 7.2.0 + debounce: 1.2.1 + escape-string-regexp: 4.0.0 + gzip-size: 6.0.0 + html-escaper: 2.0.2 + is-plain-object: 5.0.0 + opener: 1.5.2 + picocolors: 1.0.0 + sirv: 2.0.4 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + /webpack@5.84.1: + resolution: {integrity: sha512-ZP4qaZ7vVn/K8WN/p990SGATmrL1qg4heP/MrVneczYtpDGJWlrgZv55vxaV2ul885Kz+25MP2kSXkPe3LZfmg==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + dependencies: + '@types/eslint-scope': 3.7.4 + '@types/estree': 1.0.1 + '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/wasm-edit': 1.11.6 + '@webassemblyjs/wasm-parser': 1.11.6 + acorn: 8.8.2 + acorn-import-assertions: 1.9.0(acorn@8.8.2) + browserslist: 4.21.6 + chrome-trace-event: 1.0.3 + enhanced-resolve: 5.14.1 + es-module-lexer: 1.2.1 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.1.2 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.9(webpack@5.84.1) + watchpack: 2.4.0 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + /webrtc-streamer@0.8.3-4-g2d0afce: + resolution: {integrity: sha512-Wo+tevtZmoYAdJkoOSen76kJNmsSzEcuJvEWy/nuKLniyecKEzlWgWK6QoXjXR/fjEAsomM+saaKMCM51TzD6g==} + dependencies: + jquery: 3.7.1 + jsdom: 16.7.0 + node-fetch: 2.6.11 + strophe.jingle: 0.0.9 + strophe.js: 1.6.2 + strophejs-plugin-caps: 1.1.3(strophe.js@1.6.2)(strophejs-plugin-disco@0.0.2) + strophejs-plugin-disco: 0.0.2(strophe.js@1.6.2) + strophejs-plugin-muc: 1.1.0(strophe.js@1.6.2) + transitivePeerDependencies: + - bufferutil + - canvas + - encoding + - supports-color + - utf-8-validate + dev: false + + /whatwg-encoding@1.0.5: + resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} + dependencies: + iconv-lite: 0.4.24 + dev: false + + /whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + dependencies: + iconv-lite: 0.6.3 + + /whatwg-fetch@3.6.2: + resolution: {integrity: sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==} + dev: true + + /whatwg-mimetype@2.3.0: + resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} + dev: false + + /whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + + /whatwg-url@10.0.0: + resolution: {integrity: sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==} + engines: {node: '>=12'} + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + dev: false + optional: 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 + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + /whatwg-url@8.7.0: + resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} + engines: {node: '>=10'} + dependencies: + lodash: 4.17.21 + tr46: 2.1.0 + webidl-conversions: 6.1.0 + dev: false + + /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 + + /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.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + + /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 + + /wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + dependencies: + string-width: 4.2.3 + dev: false + optional: true + + /window-size@0.1.0: + resolution: {integrity: sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==} + engines: {node: '>= 0.8.0'} + dev: false + + /word-wrap@1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + + /wordwrap@0.0.2: + resolution: {integrity: sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==} + engines: {node: '>=0.4.0'} + dev: false + + /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@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + + /ws@8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + 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 + + /xml-name-validator@3.0.0: + resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} + dev: false + + /xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + /xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + /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@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + /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.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + 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 + + /yargs@3.10.0: + resolution: {integrity: sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A==} + dependencies: + camelcase: 1.2.1 + cliui: 2.1.0 + decamelize: 1.2.0 + window-size: 0.1.0 + dev: false + + /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'} + + /zrender@5.4.4: + resolution: {integrity: sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==} + dependencies: + tslib: 2.3.0 + dev: false + + /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/public/CNAME b/public/CNAME new file mode 100644 index 0000000..30c2d4d --- /dev/null +++ b/public/CNAME @@ -0,0 +1 @@ +preview.pro.ant.design \ No newline at end of file diff --git a/public/bg.png b/public/bg.png new file mode 100644 index 0000000..2b08d4f Binary files /dev/null and b/public/bg.png differ diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..da979d7 Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/icons/avatar.svg b/public/icons/avatar.svg new file mode 100644 index 0000000..e5f148c --- /dev/null +++ b/public/icons/avatar.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/public/icons/fault.svg b/public/icons/fault.svg new file mode 100644 index 0000000..0e8f7fd --- /dev/null +++ b/public/icons/fault.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/public/icons/icon-128x128.png b/public/icons/icon-128x128.png new file mode 100644 index 0000000..48d0e23 Binary files /dev/null and b/public/icons/icon-128x128.png differ diff --git a/public/icons/icon-192x192.png b/public/icons/icon-192x192.png new file mode 100644 index 0000000..938e9b5 Binary files /dev/null and b/public/icons/icon-192x192.png differ diff --git a/public/icons/icon-512x512.png b/public/icons/icon-512x512.png new file mode 100644 index 0000000..21fc108 Binary files /dev/null and b/public/icons/icon-512x512.png differ diff --git a/public/icons/notice.svg b/public/icons/notice.svg new file mode 100644 index 0000000..ef90ded --- /dev/null +++ b/public/icons/notice.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/icons/offline.svg b/public/icons/offline.svg new file mode 100644 index 0000000..72bbe1f --- /dev/null +++ b/public/icons/offline.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/icons/online.svg b/public/icons/online.svg new file mode 100644 index 0000000..9f11163 --- /dev/null +++ b/public/icons/online.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/icons/running.svg b/public/icons/running.svg new file mode 100644 index 0000000..ac23c91 --- /dev/null +++ b/public/icons/running.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/images/computePowerAllocation/icon1.png b/public/images/computePowerAllocation/icon1.png new file mode 100644 index 0000000..2c6a354 Binary files /dev/null and b/public/images/computePowerAllocation/icon1.png differ diff --git a/public/images/computePowerAllocation/slideBtn1.png b/public/images/computePowerAllocation/slideBtn1.png new file mode 100644 index 0000000..65b553e Binary files /dev/null and b/public/images/computePowerAllocation/slideBtn1.png differ diff --git a/public/images/computePowerAllocation/slideBtn2.png b/public/images/computePowerAllocation/slideBtn2.png new file mode 100644 index 0000000..91ab9cd Binary files /dev/null and b/public/images/computePowerAllocation/slideBtn2.png differ diff --git a/public/images/icons/logo.svg b/public/images/icons/logo.svg new file mode 100644 index 0000000..9d46ecd --- /dev/null +++ b/public/images/icons/logo.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/model.png b/public/images/model.png new file mode 100644 index 0000000..9242b28 Binary files /dev/null and b/public/images/model.png differ diff --git a/public/loading.gif b/public/loading.gif new file mode 100644 index 0000000..d980e93 Binary files /dev/null and b/public/loading.gif differ diff --git a/public/loading1.gif b/public/loading1.gif new file mode 100644 index 0000000..03c0ee4 Binary files /dev/null and b/public/loading1.gif differ diff --git a/public/loginBoxLeft.png b/public/loginBoxLeft.png new file mode 100644 index 0000000..eaf3f73 Binary files /dev/null and b/public/loginBoxLeft.png differ diff --git a/public/logo.svg b/public/logo.svg new file mode 100644 index 0000000..c458fad --- /dev/null +++ b/public/logo.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/pro_icon.svg b/public/pro_icon.svg new file mode 100644 index 0000000..e075b78 --- /dev/null +++ b/public/pro_icon.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/public/scripts/loading.js b/public/scripts/loading.js new file mode 100644 index 0000000..c1ced54 --- /dev/null +++ b/public/scripts/loading.js @@ -0,0 +1,202 @@ +/** + * loading 占位 + * 解决首次加载时白屏的问题 + */ + (function () { + const _root = document.querySelector('#root'); + if (_root && _root.innerHTML === '') { + _root.innerHTML = ` + + +
+
+
+ + + + + + +
+
+
+ 正在加载资源 +
+
+ 初次加载资源可能需要较多时间 请耐心等待 +
+
+ `; + } +})(); diff --git a/public/sst.png b/public/sst.png new file mode 100644 index 0000000..2d73161 Binary files /dev/null and b/public/sst.png differ diff --git a/public/sst_logo.png b/public/sst_logo.png new file mode 100644 index 0000000..d85c9bf Binary files /dev/null and b/public/sst_logo.png differ diff --git a/src/access.ts b/src/access.ts new file mode 100644 index 0000000..4209f2e --- /dev/null +++ b/src/access.ts @@ -0,0 +1,22 @@ +import {IRoute} from "@umijs/max"; + +/** + * @see https://umijs.org/zh-CN/plugins/plugin-access + * */ +export default function access(initialState: { currentUser?: API.CurrentUser } | undefined) { + // const { currentUser } = initialState ?? {}; + // const read_paths = currentUser?.read_paths || [] + // const update_paths = currentUser?.update_paths || [] + return { + // canReadMenu: read_paths?.includes(history.location.pathname), + canReadMenu: (route: IRoute)=>{ + // return read_paths?.includes(route.path) + return true + }, + canUpdate: (path: string)=>{ + // return update_paths?.includes(path) + return true + } + }; +} + diff --git a/src/app.tsx b/src/app.tsx new file mode 100644 index 0000000..5141e14 --- /dev/null +++ b/src/app.tsx @@ -0,0 +1,230 @@ +import { AvatarDropdown, AvatarName, Footer, Question, SelectLang, Notice } from '@/components'; +import { LinkOutlined } from '@ant-design/icons'; +import type { Settings as LayoutSettings } from '@ant-design/pro-components'; +import { SettingDrawer } from '@ant-design/pro-components'; +import { Link, RunTimeLayoutConfig, getLocale, history, useIntl } from '@umijs/max'; +import { RequestConfig } from 'umi'; +import defaultSettings from '../config/defaultSettings'; +import { errorConfig } from './requestErrorConfig'; +const isDev = process.env.NODE_ENV === 'development'; +const loginPath = '/user/login'; +// @ts-ignore +import { SelectRole } from '@/components/RightContent'; +import zhCN from '@/locales/zh-CN'; +import { postMenuGetMenu } from '@/services/system/Menu'; +import { getUserGetUserInfo } from '@/services/system/User'; +import fixMenuItemIcon from '@/utils/FixMenuItemIcon'; +import { getAllRouteNameTile } from '@/utils/common'; +import { addLocale } from '@@/plugin-locale'; +import { MenuDataItem } from '@ant-design/pro-layout'; +import cookie from 'react-cookies'; +/** + * @see https://umijs.org/zh-CN/plugins/plugin-initial-state + * */ +// 自定义路由路径集合 +const isCustomPageTitlePaths : string[]= ['/resource/algorithm-model-detail'] + + +export async function getInitialState(): Promise<{ + settings?: Partial; + currentUser?: API.UserView; + loading?: boolean; + fetchUserInfo?: any; + menuData?: MenuDataItem[]; +}> { + const fetchUserInfo = async () => { + try { + const msg = await getUserGetUserInfo(); + return msg.data.userInfo; + } catch (error) { + history.push(loginPath); + } + return undefined; + }; + // 如果不是登录页面,执行 + const { location } = history; + if (location.pathname !== loginPath && localStorage.getItem('access')) { + const currentUser = await fetchUserInfo(); + const menus = await postMenuGetMenu(); + if (getLocale() === 'zh-CN') { + let localData = getAllRouteNameTile(menus.data.routes, ''); + let localRes: any = {}; + localData.forEach((v) => { + // console.log(v.title,'localData_v') + localRes[`menu${v.name}`] = v.title; + }); + console.log(localRes, 'getAllRouteNameTile'); + addLocale('zh-CN', localRes, { + momentLocale: 'zh-CN', + antd: zhCN, + }); + } + + return { + fetchUserInfo, + currentUser, + settings: defaultSettings as Partial, + menuData: menus.data.routes, + }; + } + + return { + fetchUserInfo, + settings: defaultSettings as Partial, + }; +} + +// ProLayout 支持的api https://procomponents.ant.design/components/layout +export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) => { + + return { + actionsRender: () => [ + , + , + , + + ], + avatarProps: { + src: SERVER_HOST + initialState?.currentUser?.avatarUrl, + title: , + render: (_, avatarChildren) => { + console.log(avatarChildren,'111111111') + return {avatarChildren}; + }, + }, + pageTitleRender: () => { + console.log(history, 'pageTitleRender'); + // TODO 目前使用路由path全匹配,后续改成从接口字段读取 + let isCustom: boolean = false + for(let i=0; i { + // console.log(initialState?.menuData,'initialState_menuData') + return initialState?.menuData || []; + }, + }, + footerRender: () =>
+ } + > + + + )} */} + + + + + + + ); +}; + +export default PostList; diff --git a/src/pages/System/PostList/system-en.ts b/src/pages/System/PostList/system-en.ts new file mode 100644 index 0000000..b299e90 --- /dev/null +++ b/src/pages/System/PostList/system-en.ts @@ -0,0 +1 @@ +export const api: {[key: string]: string} = {'system.api.table.list.id': 'id', 'system.api.table.list.path': 'path', 'system.api.table.list.method': 'method', 'system.api.table.list.apiGroup': 'apiGroup', 'system.api.table.list.description': 'description', 'system.api.table.rule.required.path': 'path is required', 'system.api.enum.GET': 'GET', 'system.api.enum.POST': 'POST', 'system.api.enum.DELETE': 'DELETE', 'system.api.enum.PUT': 'PUT', 'system.api.enum.PATCH': 'PATCH'} diff --git a/src/pages/System/PostList/system.ts b/src/pages/System/PostList/system.ts new file mode 100644 index 0000000..f0ec2ae --- /dev/null +++ b/src/pages/System/PostList/system.ts @@ -0,0 +1 @@ +export const api: {[key: string]: string} = {'system.api.table.list.id': 'ID', 'system.api.table.list.path': '接口路径', 'system.api.table.list.method': '请求方式', 'system.api.table.list.apiGroup': '接口分组', 'system.api.table.list.description': '接口描述', 'system.api.table.rule.required.path': '接口路径为必填项', 'system.api.enum.GET': 'GET', 'system.api.enum.POST': 'POST', 'system.api.enum.DELETE': 'DELETE', 'system.api.enum.PUT': 'PUT', 'system.api.enum.PATCH': 'PATCH'} diff --git a/src/pages/System/RoleList/components/ColumnDrawer.tsx b/src/pages/System/RoleList/components/ColumnDrawer.tsx new file mode 100644 index 0000000..f0498b3 --- /dev/null +++ b/src/pages/System/RoleList/components/ColumnDrawer.tsx @@ -0,0 +1,49 @@ +/* + * @Author: zhoux zhouxia@supervision.ltd + * @Date: 2023-11-01 13:56:33 + * @LastEditors: zhoux zhouxia@supervision.ltd + * @LastEditTime: 2023-11-22 14:54:56 + * @FilePath: \general-ai-platform-web\src\pages\System\RoleList\components\ColumnDrawer.tsx + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +import React from "react"; +import {Drawer} from "antd"; +import {ProColumns, ProDescriptions, ProDescriptionsItemProps} from "@ant-design/pro-components"; + +export type ColumnDrawProps = { + handleDrawer: (id?: any) => void; + isShowDetail: boolean; + columns: ProColumns[]; + currentRow: API.Api | undefined; +}; + + +const ColumnDrawer: React.FC = (props) => { + + return ( + { + props.handleDrawer(); + }} + closable={false} + > + {props.currentRow?.id && ( + + column={2} + title={props.currentRow?.id} + request={async () => ({ + data: props.currentRow || {}, + })} + params={{ + id: props.currentRow?.id, + }} + columns={props.columns as ProDescriptionsItemProps[]} + /> + )} + + ) +} +export {ColumnDrawer} + diff --git a/src/pages/System/RoleList/components/Columns.tsx b/src/pages/System/RoleList/components/Columns.tsx new file mode 100644 index 0000000..d2159f1 --- /dev/null +++ b/src/pages/System/RoleList/components/Columns.tsx @@ -0,0 +1,28 @@ +import {FormattedMessage} from '@umijs/max'; + +export const ApiColumns = [{ + title: (), + dataIndex: "id", +}, { + title: (), + dataIndex: "path", +}, { + title: (), + dataIndex: "method", +}, { + title: (), + dataIndex: "apiGroup", +}, { + title: (), + dataIndex: "description", +},] diff --git a/src/pages/System/RoleList/components/CreateForm.tsx b/src/pages/System/RoleList/components/CreateForm.tsx new file mode 100644 index 0000000..5e1df3a --- /dev/null +++ b/src/pages/System/RoleList/components/CreateForm.tsx @@ -0,0 +1,101 @@ +import {ModalForm, ProForm, ProFormDigit, ProFormSwitch} from '@ant-design/pro-components'; +import {ProFormText} from '@ant-design/pro-components'; +import {ProFormSelect} from '@ant-design/pro-components'; +import {FormattedMessage, useIntl} from '@umijs/max'; +import React from 'react'; +import {postRoleCreateRole} from "@/services/system/Role"; +import {Form, message} from 'antd'; +// 表单宽度 804 两列 +import { proFormItemStyleProps, proFormModelWidth } from '../../../../../config/defaultForm'; + +export type CreateFormProps = { + createModalOpen: boolean; + handleModal: () => void; + values: Partial; + reload: any; +}; +const CreateForm: React.FC = (props) => { + + const intl = useIntl(); + const [form] = Form.useForm(); + + return ( + + width={proFormModelWidth} + title={intl.formatMessage({ + id: 'system.role.table.list.create', + defaultMessage: '$$$', + })} + open={props.createModalOpen} + form={form} + autoFocusFirstInput + modalProps={{ + destroyOnClose: true, + onCancel: () => props.handleModal(), + }} + submitTimeout={2000} + onFinish={async (values) => { + postRoleCreateRole(values).then(() => { + message.success(intl.formatMessage({id: 'common.success', defaultMessage: '$$$'})) + props.reload() + }).catch(() => { + message.error(intl.formatMessage({id: 'common.error', defaultMessage: '$$$'})) + }) + props.handleModal(); + return true; + }} + > + + + } + placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'system.role.table.list.name', defaultMessage: '$$$'})}`} + required={true} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + } + placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'system.role.table.list.code', defaultMessage: '$$$'})}`} + required={true} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + } + placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'system.role.table.list.sort', defaultMessage: '$$$'})}`} + initialValue={1} + /> + + + } + placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'system.role.table.list.remark', defaultMessage: '$$$'})}`} + required={false}/> + } + required={false}> + + + + ) +} +export default CreateForm; diff --git a/src/pages/System/RoleList/components/SetPermissionForm.tsx b/src/pages/System/RoleList/components/SetPermissionForm.tsx new file mode 100644 index 0000000..2184f54 --- /dev/null +++ b/src/pages/System/RoleList/components/SetPermissionForm.tsx @@ -0,0 +1,210 @@ +import {ModalForm, ProForm} from '@ant-design/pro-components'; +import {ProFormText, ProFormDependency} from '@ant-design/pro-components'; +import {ProFormSelect} from '@ant-design/pro-components'; +import {useIntl} from '@umijs/max'; +import React, {useEffect} from 'react'; +import {Form, message, Tabs, Tree, Select} from 'antd'; +import {postMenuGetMenuTree} from "@/services/system/Menu"; +import {postApiGetAllApisByGroup} from "@/services/system/Api"; +import {postDepartmentGetDepartmentTree} from "@/services/system/Department"; +import {putRoleUpdateRolePermission, postRoleGetRolePermission} from "@/services/system/Role"; +import type { DataNode } from 'antd/es/tree'; + +export type SetPermissionFormProps = { + updateModalOpen: boolean; + handleModal: () => void; + values: Partial; + reload: any; +}; + + +const { Option } = Select; +const children = []; +for (let i = 10; i < 36; i++) { + children.push(); +} +const SetPermissionForm: React.FC = (props) => { + + const [treeData, setTreeData] = React.useState([]); + const [deptTreeData, setDeptTreeData] = React.useState([]); + + const [apitreeData, setApiTreeData] = React.useState([]); + const [initApiData, setInitApiData] = React.useState([]); + const [initMenuData, setInitMenuData] = React.useState([]); + const [initDepartmentData, setInitDepartmentData] = React.useState([]); + const [dataScope, setDataScope] = React.useState('1'); + const [hasInit, setHasInit] = React.useState(false); + + const dataSourceItems = [ + {'label': '全部数据权限', 'value': '1'}, + {'label': '自定义数据权限', 'value': '2'}, + {'label': '本部门数据权限', 'value': '3'}, + {'label': '本部门及以下数据权限', 'value': '4'}, + {'label': '仅本人数据权限', 'value': '5'}, + + ] + const intl = useIntl(); + const [form] = Form.useForm(); + + useEffect(()=>{ + setHasInit(false) + if (props.updateModalOpen) { + postMenuGetMenuTree().then((resp: API.Response)=>{ + setTreeData(resp.data.tree) + }).catch(()=>{}) + postApiGetAllApisByGroup().then((resp: API.Response)=> { + setApiTreeData(resp.data.apis) + }).catch(()=>{}) + postDepartmentGetDepartmentTree().then((resp)=>{ + setDeptTreeData(resp.data.tree) + }).catch(()=>{}) + postRoleGetRolePermission({id: props.values.id}).then((resp)=>{ + setInitApiData(resp.data.apiIds) + setInitMenuData(resp.data.menuIds) + setDataScope(resp.data.dataScope) + setInitDepartmentData(resp.data.deptIds) + setHasInit(true) + console.log(initMenuData, initDepartmentData, initApiData) + }).catch(()=>{}) + } + + }, [props.updateModalOpen]) + return ( + // TODO 权限数据过长 1440px 1920px尺寸下700溢出滚动,更大的屏幕可以自适应 + + title={intl.formatMessage({ + id: 'system.role.table.list.set_permission', + defaultMessage: '$$$', + })} + open={props.updateModalOpen} + form={form} + autoFocusFirstInput + modalProps={{ + destroyOnClose: true, + onCancel: () => props.handleModal(), + }} + submitTimeout={2000} + onFinish={async (values) => { + console.log(333333, values) + putRoleUpdateRolePermission(values).then(() => { + message.success(intl.formatMessage({id: 'common.success', defaultMessage: '$$$'})) + props.reload() + }).catch(() => { + message.error(intl.formatMessage({id: 'common.failure', defaultMessage: '$$$'})) + }) + + props.handleModal(); + return true; + }} + > + + { + hasInit && ( + + + } + items={[ + { + key: 'menu', + label: intl.formatMessage({id: 'system.role.table.list.menu_permission', defaultMessage: '$$$'}), + children: + + {(form) => { + return ( + + { + form.setFieldsValue({menuIds: checkedKeys}) + }} + height={820} + treeData={treeData} + // loadData={({treeNode}) => { + // return treeData + // }} + /> + + ); + }} + + + }, + { + key: 'api', + label: intl.formatMessage({id: 'system.role.table.list.api_permission', defaultMessage: '$$$'}), + children: + {(form) => { + return ( + + { + form.setFieldsValue({apiIds: checkedKeys}) + }} + height={820} + treeData={apitreeData} + // loadData={({treeNode}) => { + // return treeData + // }} + /> + + ); + }} + + }, + { + key: 'resource', + label: intl.formatMessage({id: 'system.role.table.list.resource_permission', defaultMessage: '$$$'}), + children: + <> + + + {({ dataScope }) => { + if (dataScope === '2') { + return ( + + { + form.setFieldsValue({deptIds: checkedKeys}) + }} + height={760} + treeData={deptTreeData} + /> + + ); + } + }} + + + + }, + ]} + /> + ) + } + + ) +} +export default SetPermissionForm; diff --git a/src/pages/System/RoleList/components/UpdateForm.tsx b/src/pages/System/RoleList/components/UpdateForm.tsx new file mode 100644 index 0000000..c72d4c1 --- /dev/null +++ b/src/pages/System/RoleList/components/UpdateForm.tsx @@ -0,0 +1,108 @@ +import {ModalForm, ProForm, ProFormDigit, ProFormSwitch} from '@ant-design/pro-components'; +import {ProFormText} from '@ant-design/pro-components'; +import {ProFormSelect} from '@ant-design/pro-components'; +import {FormattedMessage, useIntl} from '@umijs/max'; +import React from 'react'; +import {Form, message} from 'antd'; +import {putRoleUpdateRole} from "@/services/system/Role"; +// 表单宽度 804 两列 +import { proFormItemStyleProps, proFormModelWidth } from '../../../../../config/defaultForm'; + +export type UpdateFormProps = { + updateModalOpen: boolean; + handleModal: () => void; + values: Partial; + reload: any; +}; +const UpdateForm: React.FC = (props) => { + + const intl = useIntl(); + const [form] = Form.useForm(); + + return ( + + width={proFormModelWidth} + title={intl.formatMessage({ + id: 'system.role.table.list.update', + defaultMessage: '$$$', + })} + open={props.updateModalOpen} + form={form} + autoFocusFirstInput + modalProps={{ + destroyOnClose: true, + onCancel: () => props.handleModal(), + }} + submitTimeout={2000} + onFinish={async (values) => { + putRoleUpdateRole(values).then(() => { + message.success(intl.formatMessage({id: 'common.success', defaultMessage: '$$$'})) + props.reload() + }).catch(() => { + message.error(intl.formatMessage({id: 'common.failure', defaultMessage: '$$$'})) + }) + + props.handleModal(); + return true; + }} + > + + + + + } + placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'system.role.table.list.name', defaultMessage: '$$$'})}`} + required={true} + initialValue={props.values.name} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + } + placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'system.role.table.list.code', defaultMessage: '$$$'})}`} + required={true} + initialValue={props.values.code} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + } + placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'system.role.table.list.sort', defaultMessage: '$$$'})}`} + initialValue={props.values.sort} + /> + + + } + placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'system.role.table.list.remark', defaultMessage: '$$$'})}`} + required={false} + initialValue={props.values.remark} + /> + } + required={false}> + + + + ) +} +export default UpdateForm; diff --git a/src/pages/System/RoleList/index.tsx b/src/pages/System/RoleList/index.tsx new file mode 100644 index 0000000..4ebc0ea --- /dev/null +++ b/src/pages/System/RoleList/index.tsx @@ -0,0 +1,386 @@ +import {PlusOutlined} from '@ant-design/icons'; +import type {ActionType, ProColumns} from '@ant-design/pro-components'; +import { + FooterToolbar, + PageContainer, + ProTable, +} from '@ant-design/pro-components'; +import {FormattedMessage, useIntl, useAccess, Access, history} from '@umijs/max'; +import {Button, Popconfirm, message} from 'antd'; +import React, {useRef, useState} from 'react'; +import UpdateForm from './components/UpdateForm'; +import CreateForm from "./components/CreateForm"; +import SetPermissionForm from "./components/SetPermissionForm"; +import {ColumnDrawer} from "./components/ColumnDrawer"; +import {postRoleGetRoleList} from "@/services/system/Role"; +// 列表操作栏组件 +import TableActionCard from '@/components/TableActionCard'; +import IsDelete from '@/components/TableActionCard/isDelete'; +// 批量删除 +import IsBatchDelete from '@/components/BatchOperation/isBatchDelete'; + +const RoleList: React.FC = () => { + /** + * @en-US Pop-up window of new window + * @zh-CN 新建窗口的弹窗 + * */ + const [createModalOpen, setCreateModalOpen] = useState(false); + /** + * @en-US The pop-up window of the distribution update window + * @zh-CN 分布更新窗口的弹窗 + * */ + const [updateModalOpen, setUpdateModalOpen] = useState(false); + const [showDetail, setShowDetail] = useState(false); + /** + * @en-US International configuration + * @zh-CN 国际化配置 + * */ + const access = useAccess(); + const intl = useIntl(); + const actionRef = useRef(); + const [currentRow, setCurrentRow] = useState(); + const [selectedRowsState, setSelectedRows] = useState([]); + const [setPermissionModalOpen, setSetPermissionModalOpen] = useState(false); + + const handleUpdateModal = () => { + if (updateModalOpen) { + setUpdateModalOpen(false) + setCurrentRow(undefined) + } else { + setUpdateModalOpen(true) + } + } + const handleSetPermissionModal = () => { + if (setPermissionModalOpen) { + setSetPermissionModalOpen(false) + setCurrentRow(undefined) + } else { + setSetPermissionModalOpen(true) + } + } + const handleCreateModal = () => { + if (createModalOpen) { + setCreateModalOpen(false) + setCurrentRow(undefined) + } else { + setCreateModalOpen(true) + } + } + const handleColumnDrawer = () => { + if (showDetail) { + setShowDetail(false) + setCurrentRow(undefined) + } else { + setShowDetail(true) + } + } + const handleDestroy = async (selectedRow: API.Role) => { + // postRoleDeleteRole(selectedRow).then(() => { + // message.success(intl.formatMessage({id: 'common.success', defaultMessage: '$$$'})) + // actionRef.current?.reload() + // }).catch(() => { + // message.error(intl.formatMessage({id: 'common.failure', defaultMessage: '$$$'})) + // }) + }; + + const columns: ProColumns[] = [ + + { + title: (), + dataIndex: "id", + sorter: true, + // valueType: "digit", + filters: true, onFilter: true, + render: (dom, entity) => { + return ( + { + setCurrentRow(entity); + setShowDetail(true); + }} + > + {dom} + + ); + }, + }, + + { + sorter: true, + title: (), + dataIndex: "name", + hideInSearch: true, + }, + + + { + title: (), + dataIndex: "code", + hideInSearch: true, + }, + { + title: (), + dataIndex: "sort", + hideInSearch: true, + }, + { + title: (), + dataIndex: "status", + valueEnum: { + true: { + text: (), + status: 'Success' + }, + false: { + text: (), + status: 'Error' + } + }, + filters: true, onFilter: true, + }, + + { + title: , + dataIndex: 'option', + valueType: 'option', + fixed: 'right', + render: (_, record) => [ + { + setUpdateModalOpen(true); + setCurrentRow(record); + }} + > + + + ), + }, + { + key: 'set_permissions', + renderDom: ( + + ), + }, + { + key: 'destroy', + renderDom: ( + { + handleDestroy(record).then(() => {}); + }} + > + ), + }, + ]} + > + // + // { + // setUpdateModalOpen(true); + // setCurrentRow(record); + // }} + // > + // + // + // { + // setSetPermissionModalOpen(true) + // setCurrentRow(record) + // }} + // > + // { + // handleDestroy(record).then(() => {}); + // }} + // > + // + // + // + ], + },]; + return ( + + + headerTitle={intl.formatMessage({ + id: 'pages.searchTable.title', + defaultMessage: '$$$', + })} + options={{fullScreen: true, setting: true, density: true, reload: true}} + actionRef={actionRef} + rowKey="key" + search={{ + labelWidth: 'auto', + }} + pagination={{ + showSizeChanger: true, + pageSize: 10, + }} + columnsState={{ + persistenceKey: 'api_list', + persistenceType: 'localStorage' + }} + toolBarRender={() => [ + + + + ]} + request={async (params = {}, sort) => { + const {current, ...rest} = params + const reqParams = { + page: current, + desc: false, + orderKey: "", + ...rest, + } + if ('status' in reqParams){ + reqParams.status = reqParams.status === 'true' + } + if (sort && Object.keys(sort).length) { + reqParams.orderKey = Object.keys(sort)[0] + let sort_select = sort[reqParams.orderKey] + reqParams.desc = sort_select === 'descend'; + } + let resp = await postRoleGetRoleList({...reqParams}) + return { + data: resp.data.list.map((v: API.Role)=>{ return {...v, key: v.id}}), + success: resp.success, + total: resp.data.total, + current: resp.data.page, + pageSize: resp.data.pageSize + }; + }} + columns={columns} + rowSelection={{ + onChange: (_, selectedRows) => { + setSelectedRows(selectedRows); + }, + }} + tableAlertOptionRender={() => { + return ( + <> + {selectedRowsState?.length > 0 && ( + { + const ids = selectedRowsState.map((v: API.Role) => { + return v.id + }) + // deleteRoleDeleteRolesByIds({ids: ids as number[]}).then(() => { + // actionRef.current?.reloadAndRest?.(); + // }) + }} + /> + )} + + ); + }} + /> + {selectedRowsState?.length > 0 && ( + + {' '} + {selectedRowsState.length}{' '} + + + } + > + + + )} + + + + + + + + ); +}; + +export default RoleList; diff --git a/src/pages/System/RoleList/system-en.ts b/src/pages/System/RoleList/system-en.ts new file mode 100644 index 0000000..b299e90 --- /dev/null +++ b/src/pages/System/RoleList/system-en.ts @@ -0,0 +1 @@ +export const api: {[key: string]: string} = {'system.api.table.list.id': 'id', 'system.api.table.list.path': 'path', 'system.api.table.list.method': 'method', 'system.api.table.list.apiGroup': 'apiGroup', 'system.api.table.list.description': 'description', 'system.api.table.rule.required.path': 'path is required', 'system.api.enum.GET': 'GET', 'system.api.enum.POST': 'POST', 'system.api.enum.DELETE': 'DELETE', 'system.api.enum.PUT': 'PUT', 'system.api.enum.PATCH': 'PATCH'} diff --git a/src/pages/System/RoleList/system.ts b/src/pages/System/RoleList/system.ts new file mode 100644 index 0000000..f0ec2ae --- /dev/null +++ b/src/pages/System/RoleList/system.ts @@ -0,0 +1 @@ +export const api: {[key: string]: string} = {'system.api.table.list.id': 'ID', 'system.api.table.list.path': '接口路径', 'system.api.table.list.method': '请求方式', 'system.api.table.list.apiGroup': '接口分组', 'system.api.table.list.description': '接口描述', 'system.api.table.rule.required.path': '接口路径为必填项', 'system.api.enum.GET': 'GET', 'system.api.enum.POST': 'POST', 'system.api.enum.DELETE': 'DELETE', 'system.api.enum.PUT': 'PUT', 'system.api.enum.PATCH': 'PATCH'} diff --git a/src/pages/System/UserList/components/ColumnDrawer.tsx b/src/pages/System/UserList/components/ColumnDrawer.tsx new file mode 100644 index 0000000..7745c4c --- /dev/null +++ b/src/pages/System/UserList/components/ColumnDrawer.tsx @@ -0,0 +1,41 @@ +import React from "react"; +import {Drawer} from "antd"; +import {ProColumns, ProDescriptions, ProDescriptionsItemProps} from "@ant-design/pro-components"; + +export type ColumnDrawProps = { + handleDrawer: (id?: any) => void; + isShowDetail: boolean; + columns: ProColumns[]; + currentRow: API.Api | undefined; +}; + + +const ColumnDrawer: React.FC = (props) => { + + return ( + { + props.handleDrawer(); + }} + closable={false} + > + {props.currentRow?.id && ( + + column={2} + title={props.currentRow?.id} + request={async () => ({ + data: props.currentRow || {}, + })} + params={{ + id: props.currentRow?.id, + }} + columns={props.columns as ProDescriptionsItemProps[]} + /> + )} + + ) +} +export {ColumnDrawer} + diff --git a/src/pages/System/UserList/components/Columns.tsx b/src/pages/System/UserList/components/Columns.tsx new file mode 100644 index 0000000..d2159f1 --- /dev/null +++ b/src/pages/System/UserList/components/Columns.tsx @@ -0,0 +1,28 @@ +import {FormattedMessage} from '@umijs/max'; + +export const ApiColumns = [{ + title: (), + dataIndex: "id", +}, { + title: (), + dataIndex: "path", +}, { + title: (), + dataIndex: "method", +}, { + title: (), + dataIndex: "apiGroup", +}, { + title: (), + dataIndex: "description", +},] diff --git a/src/pages/System/UserList/components/CreateForm.tsx b/src/pages/System/UserList/components/CreateForm.tsx new file mode 100644 index 0000000..859e37d --- /dev/null +++ b/src/pages/System/UserList/components/CreateForm.tsx @@ -0,0 +1,266 @@ +import { + ModalForm, + ProForm, + ProFormSwitch, + ProFormTreeSelect, + ProFormUploadButton +} from '@ant-design/pro-components'; +import {ProFormText} from '@ant-design/pro-components'; +import {ProFormSelect, ProFormDependency} from '@ant-design/pro-components'; +import {FormattedMessage, useIntl} from '@umijs/max'; +import React from 'react'; +import {postUserAdminRegister} from '@/services/system/User'; +import {postRoleGetRoleFkSelect} from "@/services/system/Role"; +import {postDepartmentGetDepartmentFkSelect} from "@/services/system/Department"; +import {postPostGetPostFkSelect} from "@/services/system/Post"; +import {Form, message} from 'antd'; +import {beforeUploadImage, handleOneFile} from "@/utils/common"; +// @ts-ignore +import cookie from 'react-cookies'; +// 表单宽度 804 两列 +import { proFormItemStyleProps, proFormModelWidth } from '../../../../../config/defaultForm'; + +export type CreateFormProps = { + createModalOpen: boolean; + handleModal: () => void; + values: Partial; + reload: any; +}; +const CreateForm: React.FC = (props) => { + + const intl = useIntl(); + const [form] = Form.useForm(); + + return ( + + width={proFormModelWidth} + title={intl.formatMessage({ + id: 'system.user.table.list.create', + defaultMessage: '$$$', + })} + open={props.createModalOpen} + name={'createUserForm'} + form={form} + autoFocusFirstInput + modalProps={{ + destroyOnClose: true, + onCancel: () => props.handleModal(), + }} + submitTimeout={2000} + onFinish={async (values: any) => { + console.log(values) + if ((values?.roleIds || []).length) { + values.roleId = values.roleIds[0] + values.roleIds = values.roleIds.join(',') + } + if ((values?.postIds || []).length) { + values.postId = values.postIds[0] + values.postIds = values.postIds.join(',') + } + handleOneFile(values, 'avatarId') + console.log(values) + postUserAdminRegister(values).then(() => { + message.success(intl.formatMessage({id: 'common.success', defaultMessage: '$$$'})) + props.reload() + }).catch(() => { + message.error(intl.formatMessage({id: 'common.error', defaultMessage: '$$$'})) + }) + props.handleModal(); + return true; + }} + > + + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$' + })}${intl.formatMessage({id: 'system.user.table.list.userName', defaultMessage: '$$$'})}`} + required={true} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$' + })}${intl.formatMessage({id: 'system.user.table.list.nickName', defaultMessage: '$$$'})}`} + required={true} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$' + })}${intl.formatMessage({id: 'system.user.table.list.password', defaultMessage: '$$$'})}`} + required={true} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + + { + (record) => { + return ( + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$' + })}${intl.formatMessage({ + id: 'system.user.table.list.password_re', + defaultMessage: '$$$' + })}`} + required={true} + rules={[ + { + required: true, + message: ( + + ), + }, + () => ({ + validator(rule, value) { + if (!value || record.password === value) { + return Promise.resolve() + } + return Promise.reject(intl.formatMessage({id: 'system.user.table.rule.password.not_same', defaultMessage: '$$$'})) + } + }) + ]} + /> + ) + } + } + + + + + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_select', + defaultMessage: '$$$' + })}${intl.formatMessage({id: 'system.user.table.list.roleId', defaultMessage: '$$$'})}`} + required={false} + request={ + async (keyWord) => { + let resp = await postRoleGetRoleFkSelect({keyword: keyWord.keyWords}) + return resp.data.list.map((v: any)=>{ + return { + label: v.name, + value: v.id + } + }) + } + } + > + + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_select', + defaultMessage: '$$$' + })}${intl.formatMessage({id: 'system.user.table.list.postId', defaultMessage: '$$$'})}`} + required={false} + request={ + async (keyWord) => { + let resp = await postPostGetPostFkSelect({keyword: keyWord.keyWords}) + return resp.data.list.map((v: any)=>{ + return { + label: v.name, + value: v.id + } + }) + } + } + > + + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_select', + defaultMessage: '$$$' + })}${intl.formatMessage({id: 'system.user.table.list.deptId', defaultMessage: '$$$'})}`} + required={false} + request={async () => { + let resp = await postDepartmentGetDepartmentFkSelect() + return resp.data.list + }} + > + + + + + } + fieldProps={{ + name: 'file', + listType: 'picture-card', + beforeUpload: beforeUploadImage, + data: {path: 'user/avatar'}, + headers: { 'X-CSRFToken': cookie.load('csrftoken') , 'X-Token': `${localStorage.getItem('access') || ''}`},}}/> + + + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$' + })}${intl.formatMessage({id: 'system.user.table.list.remark', defaultMessage: '$$$'})}`} + required={false}/> + } + required={false}> + + + + ) +} +export default CreateForm; diff --git a/src/pages/System/UserList/components/UpdateForm.tsx b/src/pages/System/UserList/components/UpdateForm.tsx new file mode 100644 index 0000000..3fb23a1 --- /dev/null +++ b/src/pages/System/UserList/components/UpdateForm.tsx @@ -0,0 +1,230 @@ +import { + ModalForm, + ProForm, + ProFormDependency, + ProFormDigit, + ProFormSwitch, ProFormTreeSelect, + ProFormUploadButton +} from '@ant-design/pro-components'; +import {ProFormText} from '@ant-design/pro-components'; +import {ProFormSelect} from '@ant-design/pro-components'; +import {FormattedMessage, useIntl} from '@umijs/max'; +import React from 'react'; +import {Form, message} from 'antd'; +import {putUserSetUserInfo} from "@/services/system/User"; +import {beforeUploadImage, handleOneFile, imageInit, parseIds} from "@/utils/common"; +// @ts-ignore +import cookie from 'react-cookies'; +import {postRoleGetRoleFkSelect} from "@/services/system/Role"; +import {postPostGetPostFkSelect} from "@/services/system/Post"; +import {postDepartmentGetDepartmentFkSelect} from "@/services/system/Department"; +// 表单宽度 804 两列 +import { proFormItemStyleProps, proFormModelWidth } from '../../../../../config/defaultForm'; + + + +export type UpdateFormProps = { + updateModalOpen: boolean; + handleModal: () => void; + values: Partial; + reload: any; +}; +const UpdateForm: React.FC = (props) => { + + const intl = useIntl(); + const [form] = Form.useForm(); + + return ( + + width={proFormModelWidth} + title={intl.formatMessage({ + id: 'system.user.table.list.update', + defaultMessage: '$$$', + })} + open={props.updateModalOpen} + form={form} + autoFocusFirstInput + modalProps={{ + destroyOnClose: true, + onCancel: () => props.handleModal(), + }} + submitTimeout={2000} + onFinish={async (values: any) => { + if ('roleIds' in values) { + if ((values?.roleIds || []).length) { + values.roleId = values.roleIds[0] + values.roleIds = values.roleIds.join(',') + } else { + values.roleId = undefined + values.roleIds = '' + } + } + if ('postIds' in values) { + if ((values?.postIds || []).length) { + values.postId = values.postIds[0] + values.postIds = values.postIds.join(',') + } else { + values.postIds = '' + values.postId = undefined + } + } + + handleOneFile(values, 'avatarId') + console.log(values) + console.log(props.values) + putUserSetUserInfo(values).then(() => { + message.success(intl.formatMessage({id: 'common.success', defaultMessage: '$$$'})) + props.reload() + }).catch(() => { + message.error(intl.formatMessage({id: 'common.failure', defaultMessage: '$$$'})) + }) + + props.handleModal(); + return true; + }} + > + + + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$' + })}${intl.formatMessage({id: 'system.user.table.list.userName', defaultMessage: '$$$'})}`} + initialValue={props.values.userName} + required={true} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$' + })}${intl.formatMessage({id: 'system.user.table.list.nickName', defaultMessage: '$$$'})}`} + initialValue={props.values.nickName} + required={true} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + + + + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_select', + defaultMessage: '$$$' + })}${intl.formatMessage({id: 'system.user.table.list.roleId', defaultMessage: '$$$'})}`} + required={false} + initialValue={parseIds(props.values.roleIds)} + request={ + async (keyWord) => { + let resp = await postRoleGetRoleFkSelect({keyword: keyWord.keyWords}) + return resp.data.list.map((v: any)=>{ + return { + label: v.name, + value: v.id + } + }) + } + } + > + + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_select', + defaultMessage: '$$$' + })}${intl.formatMessage({id: 'system.user.table.list.postId', defaultMessage: '$$$'})}`} + required={false} + initialValue={parseIds(props.values.postIds)} + request={ + async (keyWord) => { + let resp = await postPostGetPostFkSelect({keyword: keyWord.keyWords}) + return resp.data.list.map((v: any)=>{ + return { + label: v.name, + value: v.id + } + }) + } + } + > + + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_select', + defaultMessage: '$$$' + })}${intl.formatMessage({id: 'system.user.table.list.deptId', defaultMessage: '$$$'})}`} + required={false} + initialValue={props.values.deptId} + request={async () => { + let resp = await postDepartmentGetDepartmentFkSelect() + return resp.data.list + }} + > + + + + + } + initialValue={imageInit(SERVER_HOST,props.values.avatarUrl)} + fieldProps={{ + name: 'file', + listType: 'picture-card', + beforeUpload: beforeUploadImage, + data: {path: 'user/avatar'}, + headers: { 'X-CSRFToken': cookie.load('csrftoken') , 'X-Token': `${localStorage.getItem('access') || ''}`},}}/> + + + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$' + })}${intl.formatMessage({id: 'system.user.table.list.remark', defaultMessage: '$$$'})}`} + initialValue={props.values.remark} + required={false}/> + } + required={false}> + + + + ) +} +export default UpdateForm; diff --git a/src/pages/System/UserList/index.tsx b/src/pages/System/UserList/index.tsx new file mode 100644 index 0000000..b9f44e1 --- /dev/null +++ b/src/pages/System/UserList/index.tsx @@ -0,0 +1,376 @@ +import { deleteUserDeleteUser, postUserGetUserList } from '@/services/system/User'; +import { PlusOutlined } from '@ant-design/icons'; +import type { ActionType, ProColumns } from '@ant-design/pro-components'; +import { PageContainer, ProTable } from '@ant-design/pro-components'; +import { Access, FormattedMessage, history, useAccess, useIntl } from '@umijs/max'; +import { Button, message } from 'antd'; +import React, { useEffect, useRef, useState } from 'react'; +import { ColumnDrawer } from './components/ColumnDrawer'; +import CreateForm from './components/CreateForm'; +import UpdateForm from './components/UpdateForm'; + +import { postDepartmentGetDepartmentTree } from '@/services/system/Department'; +import { RedoOutlined } from '@ant-design/icons'; +import { Tree } from 'antd'; +import type { DataNode } from 'antd/es/tree'; +// 列表操作栏组件 +import TableActionCard from '@/components/TableActionCard'; +import IsDelete from '@/components/TableActionCard/isDelete'; +// 批量删除 +import IsBatchDelete from '@/components/BatchOperation/isBatchDelete'; +import TreeAndTableList, { ProCardTypeProps } from '@/layouts/treeAndTableList'; + +const UserList: React.FC = () => { + /** + * @en-US Pop-up window of new window + * @zh-CN 新建窗口的弹窗 + * */ + const [createModalOpen, setCreateModalOpen] = useState(false); + /** + * @en-US The pop-up window of the distribution update window + * @zh-CN 分布更新窗口的弹窗 + * */ + const [updateModalOpen, setUpdateModalOpen] = useState(false); + const [showDetail, setShowDetail] = useState(false); + /** + * @en-US International configuration + * @zh-CN 国际化配置 + * */ + const access = useAccess(); + const intl = useIntl(); + const actionRef = useRef(); + const [currentRow, setCurrentRow] = useState(); + const [selectedRowsState, setSelectedRows] = useState([]); + const [deptTreeData, setDeptTreeData] = React.useState([]); + const [selectDepts, setSelectDepts] = React.useState([]); + const [hasInit, setHasInit] = useState(false); + + useEffect(() => { + postDepartmentGetDepartmentTree() + .then((resp) => { + setDeptTreeData(resp.data.tree); + setHasInit(true); + }) + .catch(() => { + message.error(intl.formatMessage({ id: 'common.failure', defaultMessage: '$$$' })); + }); + }, []); + const handleUpdateModal = () => { + if (updateModalOpen) { + setUpdateModalOpen(false); + setCurrentRow(undefined); + } else { + setUpdateModalOpen(true); + } + }; + const handleCreateModal = () => { + if (createModalOpen) { + setCreateModalOpen(false); + setCurrentRow(undefined); + } else { + setCreateModalOpen(true); + } + }; + const handleColumnDrawer = () => { + if (showDetail) { + setShowDetail(false); + setCurrentRow(undefined); + } else { + setShowDetail(true); + } + }; + const handleDestroy = async (selectedRow: API.User) => { + deleteUserDeleteUser(selectedRow) + .then(() => { + message.success(intl.formatMessage({ id: 'common.success', defaultMessage: '$$$' })); + actionRef.current?.reload(); + }) + .catch(() => { + message.error(intl.formatMessage({ id: 'common.failure', defaultMessage: '$$$' })); + }); + }; + + const columns: ProColumns[] = [ + { + title: , + dataIndex: 'id', + sorter: true, + // valueType: "digit", + filters: true, + onFilter: true, + render: (dom, entity) => { + return ( + { + setCurrentRow(entity); + setShowDetail(true); + }} + > + {dom} + + ); + }, + }, + + { + sorter: true, + title: , + dataIndex: 'userName', + hideInSearch: true, + }, + + { + title: , + dataIndex: 'nickName', + hideInSearch: true, + }, + { + title: , + dataIndex: 'avatarUrl', + hideInSearch: true, + renderText: (v) => { + if (v) { + return SERVER_HOST + v.replace(/\\/g, '/'); + } else { + return ''; + } + }, + // hideInTable: true, + valueType: 'image', + }, + { + title: , + dataIndex: 'enable', + valueEnum: { + true: { + text: , + status: 'Success', + }, + false: { + text: , + status: 'Error', + }, + }, + filters: true, + onFilter: true, + }, + + { + title: , + dataIndex: 'option', + valueType: 'option', + fixed: 'right', + render: (_, record) => [ + { + setUpdateModalOpen(true); + setCurrentRow(record); + }} + > + + + ), + }, + { + key: 'destroy', + renderDom: ( + { + handleDestroy(record).then(() => {}); + }} + > + ), + }, + ]} + >, + // + // { + // setUpdateModalOpen(true); + // setCurrentRow(record); + // }} + // > + // + // + // { + // handleDestroy(record).then(() => {}); + // }} + // > + // + // + // + ], + }, + ]; + return ( + + + + + ), + } as ProCardTypeProps + } + leftDom={ + hasInit && ( + { + setSelectDepts(selectKeys); + actionRef.current?.reload(); + }} + /> + ) + } + rightDom={ + + headerTitle={intl.formatMessage({ + id: 'pages.searchTable.title', + defaultMessage: '$$$', + })} + options={{ fullScreen: true, setting: true, density: true, reload: true }} + actionRef={actionRef} + rowKey="id" + search={{ + labelWidth: 'auto', + }} + pagination={{ + showSizeChanger: true, + pageSize: 10, + }} + columnsState={{ + persistenceKey: 'api_list', + persistenceType: 'localStorage', + }} + toolBarRender={() => [ + + + , + ]} + request={async (params = {}, sort) => { + const { current, ...rest } = params; + const reqParams: any = { + page: current, + desc: false, + orderKey: '', + ...rest, + }; + if (selectDepts.length) { + reqParams.deptId = selectDepts[0]; + } + if (sort && Object.keys(sort).length) { + reqParams.orderKey = Object.keys(sort)[0]; + let sort_select = sort[reqParams.orderKey]; + reqParams.desc = sort_select === 'descend'; + } + let resp = await postUserGetUserList({ ...reqParams }); + console.log(resp); + return { + data: resp.data.list, + success: resp.success, + total: resp.data.total, + current: resp.data.page, + pageSize: resp.data.pageSize, + }; + }} + columns={columns} + rowSelection={{ + onChange: (_, selectedRows) => { + setSelectedRows(selectedRows); + }, + }} + tableAlertOptionRender={() => { + return ( + <> + {selectedRowsState?.length > 0 && ( + { + const ids = selectedRowsState.map((v: API.User) => { + return v.id; + }); + // deleteUserDeleteUsersByIds({ids: ids as number[]}).then(() => { + // actionRef.current?.reloadAndRest?.(); + // }) + }} + /> + )} + + ); + }} + /> + } + > + + + + + + + ); +}; + +export default UserList; diff --git a/src/pages/System/UserList/system-en.ts b/src/pages/System/UserList/system-en.ts new file mode 100644 index 0000000..b299e90 --- /dev/null +++ b/src/pages/System/UserList/system-en.ts @@ -0,0 +1 @@ +export const api: {[key: string]: string} = {'system.api.table.list.id': 'id', 'system.api.table.list.path': 'path', 'system.api.table.list.method': 'method', 'system.api.table.list.apiGroup': 'apiGroup', 'system.api.table.list.description': 'description', 'system.api.table.rule.required.path': 'path is required', 'system.api.enum.GET': 'GET', 'system.api.enum.POST': 'POST', 'system.api.enum.DELETE': 'DELETE', 'system.api.enum.PUT': 'PUT', 'system.api.enum.PATCH': 'PATCH'} diff --git a/src/pages/System/UserList/system.ts b/src/pages/System/UserList/system.ts new file mode 100644 index 0000000..f0ec2ae --- /dev/null +++ b/src/pages/System/UserList/system.ts @@ -0,0 +1 @@ +export const api: {[key: string]: string} = {'system.api.table.list.id': 'ID', 'system.api.table.list.path': '接口路径', 'system.api.table.list.method': '请求方式', 'system.api.table.list.apiGroup': '接口分组', 'system.api.table.list.description': '接口描述', 'system.api.table.rule.required.path': '接口路径为必填项', 'system.api.enum.GET': 'GET', 'system.api.enum.POST': 'POST', 'system.api.enum.DELETE': 'DELETE', 'system.api.enum.PUT': 'PUT', 'system.api.enum.PATCH': 'PATCH'} diff --git a/src/pages/Task/TaskList/index.tsx b/src/pages/Task/TaskList/index.tsx new file mode 100644 index 0000000..4acf958 --- /dev/null +++ b/src/pages/Task/TaskList/index.tsx @@ -0,0 +1,224 @@ +import IsBatchDelete from '@/components/BatchOperation/isBatchDelete'; +import TableActionCard from '@/components/TableActionCard'; +import StopBtn from '@/components/TableActionCard/stopBtn'; +import { + deleteProjectDeleteProject, + deleteProjectDeleteProjectByIds, + postProjectGetProjectList, +} from '@/services/project/Project'; +import type { ActionType, ProColumns } from '@ant-design/pro-components'; +import { PageContainer, ProTable } from '@ant-design/pro-components'; +import { FormattedMessage, useAccess, useIntl } from '@umijs/max'; +import { Tag, message } from 'antd'; +import React, { useRef, useState } from 'react'; +import { proTableCommonOptions, proTablePaginationOptions } from '../../../../config/defaultTable'; +const TaskList: React.FC = () => { + /** + * @en-US Pop-up window of new window + * @zh-CN 新建窗口的弹窗 + * */ + const [createModalOpen, setCreateModalOpen] = useState(false); + /** + * @en-US The pop-up window of the distribution update window + * @zh-CN 分布更新窗口的弹窗 + * */ + const [updateModalOpen, setUpdateModalOpen] = useState(false); + const [showDetail, setShowDetail] = useState(false); + /** + * @en-US International configuration + * @zh-CN 国际化配置 + * */ + const intl = useIntl(); + const actionRef = useRef(); + // 动态设置每页数量 + const [currentPageSize, setCurrentPageSize] = useState(10); + const [currentRow, setCurrentRow] = useState(); + const [selectedRowsState, setSelectedRows] = useState([]); + + const handleUpdateModal = () => { + if (updateModalOpen) { + setUpdateModalOpen(false); + setCurrentRow(undefined); + } else { + setUpdateModalOpen(true); + } + }; + const handleCreateModal = () => { + if (createModalOpen) { + setCreateModalOpen(false); + setCurrentRow(undefined); + } else { + setCreateModalOpen(true); + } + }; + const handleColumnDrawer = () => { + if (showDetail) { + setShowDetail(false); + setCurrentRow(undefined); + } else { + setShowDetail(true); + } + }; + const handleDestroy = async (selectedRow: API.Project) => { + deleteProjectDeleteProject({ id: selectedRow.id }) + .then(() => { + message.success(intl.formatMessage({ id: 'common.success', defaultMessage: '$$$' })); + actionRef.current?.reload(); + }) + .catch(() => { + message.error(intl.formatMessage({ id: 'common.failure', defaultMessage: '$$$' })); + }); + }; + + const columns: ProColumns[] = [ + { + title: , + dataIndex: 'name', + hideInSearch: false, + key: 'fixedName', + fixed: 'left', + }, + + { + title: , + dataIndex: 'info', + hideInSearch: true, + }, + + { + title: , + dataIndex: 'code', + // hideInSearch: true, + render: (dom) => { + return ( + + {dom} + + ); + }, + }, + + { + title: , + dataIndex: 'createTime', + hideInSearch: true, + valueType: 'dateTime', + }, + { + title: , + dataIndex: 'createTime', + hideInSearch: true, + valueType: 'dateTime', + }, + + { + title: , + dataIndex: 'createTime', + hideInSearch: true, + valueType: 'dateTime', + }, + + { + title: , + dataIndex: 'option', + valueType: 'option', + fixed: 'right', + render: (_, record) => [ + { + handleDestroy(record).then(() => {}); + }} + > + ), + }, + ]} + >, + ], + }, + ]; + return ( + + + headerTitle={intl.formatMessage({ + id: 'pages.searchTable.title', + defaultMessage: '$$$', + })} + scroll={{ y: proTableCommonOptions.commscrollY, x: proTableCommonOptions.commscrollX }} + options={{ fullScreen: true, setting: true, density: true, reload: true }} + actionRef={actionRef} + rowKey="key" + search={{ + labelWidth: proTableCommonOptions.searchLabelWidth, + }} + onDataSourceChange={() => {}} + pagination={{ + ...proTablePaginationOptions, + pageSize: currentPageSize, + onChange: (page, pageSize) => setCurrentPageSize(pageSize), + }} + columnsState={{ + persistenceKey: 'project_list', + persistenceType: 'localStorage', + }} + tableAlertOptionRender={() => { + return ( + <> + {selectedRowsState?.length > 0 && ( + { + // TODO 需要;联调删除接口 + deleteProjectDeleteProjectByIds({ + ids: selectedRowsState.map((v: API.Project) => { + return v.id as number; + }), + }).then(() => { + actionRef.current?.reloadAndRest?.(); + }); + }} + /> + )} + + ); + }} + request={async (params = {}, sort) => { + const { current, ...rest } = params; + const reqParams = { + page: current, + desc: false, + orderKey: '', + ...rest, + }; + if (sort && Object.keys(sort).length) { + reqParams.orderKey = Object.keys(sort)[0]; + let sort_select = sort[reqParams.orderKey]; + reqParams.desc = sort_select === 'descend'; + } + let resp = await postProjectGetProjectList({ ...reqParams }); + return { + data: resp.data.list.map((v: API.Project) => { + return { ...v, key: v.id }; + }), + success: resp.success, + total: resp.data.total, + current: resp.data.page, + pageSize: resp.data.pageSize, + }; + }} + columns={columns} + // rowSelection={{ + // onChange: (_, selectedRows) => { + // setSelectedRows(selectedRows); + // }, + // }} + /> + + ); +}; + +export default TaskList; diff --git a/src/pages/User/Login/__snapshots__/login.test.tsx.snap b/src/pages/User/Login/__snapshots__/login.test.tsx.snap new file mode 100644 index 0000000..327971e --- /dev/null +++ b/src/pages/User/Login/__snapshots__/login.test.tsx.snap @@ -0,0 +1,1103 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Login Page should login success 1`] = ` + +
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+ + + +
+
+
+ + + + + +
+ +
+ + + + + + Serati Ma + + +
+
+
+
+
+
+
+
+
+
+
+
+
+ + Welcome + +
+
+
+
+
+
+
+
+
+
+
+ 欢迎使用 Ant Design Pro +
+

+ Ant Design Pro 是一个整合了 umi,Ant Design 和 ProComponents 的脚手架方案。致力于在设计规范和基础组件的基础上,继续向上构建,提炼出典型模板/业务组件/配套设计资源,进一步提升企业级中后台产品设计研发过程中的『用户』和『设计者』的体验。 +

+
+
+
+
+ 1 +
+
+ 了解 umi +
+
+
+ umi 是一个可扩展的企业级前端应用框架,umi 以路由为基础的,同时支持配置式路由和约定式路由,保证路由的功能完备,并以此进行功能扩展。 +
+ + 了解更多 > + +
+
+
+
+ 2 +
+
+ 了解 ant design +
+
+
+ antd 是基于 Ant Design 设计体系的 React UI 组件库,主要用于研发企业级中后台产品。 +
+ + 了解更多 > + +
+
+
+
+ 3 +
+
+ 了解 Pro Components +
+
+
+ ProComponents 是一个基于 Ant Design 做了更高抽象的模板组件,以 一个组件就是一个页面为开发理念,为中后台开发带来更好的体验。 +
+ + 了解更多 > + +
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+ +`; + +exports[`Login Page should show login form 1`] = ` + +
+
+ + + + + +
+
+ + +`; diff --git a/src/pages/User/Login/index.tsx b/src/pages/User/Login/index.tsx new file mode 100644 index 0000000..8e5338d --- /dev/null +++ b/src/pages/User/Login/index.tsx @@ -0,0 +1,456 @@ +// import Footer from '@/components/Footer'; +import { login } from '@/services/ant-design-pro/api'; +import { getFakeCaptcha } from '@/services/ant-design-pro/login'; +import { + KeyOutlined, + LockOutlined, + MobileOutlined, + UserOutlined, +} from '@ant-design/icons'; +import { + LoginFormPage, + ProFormCaptcha, + ProFormCheckbox, + ProFormText, +} from '@ant-design/pro-components'; +import { useEmotionCss } from '@ant-design/use-emotion-css'; +import { FormattedMessage, history, SelectLang, useIntl, useModel, Helmet } from '@umijs/max'; +import {Alert, Image, message, theme} from 'antd'; +import Settings from '../../../../config/defaultSettings'; +import React, {useEffect, useState} from 'react'; +import { flushSync } from 'react-dom'; +import styles from './login.less' +import {postBaseCaptcha, postBaseLogin} from "@/services/system/Base"; +import {postMenuGetMenu} from "@/services/system/Menu"; +import {getLocale} from "@@/exports"; +import {getAllRouteNameTile} from "@/utils/common"; +import {addLocale} from "@@/plugin-locale"; +import zhCN from "@/locales/zh-CN"; + +// 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, + // zIndex: 99, + borderRadius: token.borderRadius, + ':hover': { + backgroundColor: token.colorBgTextHover, + }, + }; + }); + + return ( +
+ {SelectLang && } +
+ ); +}; + +const LoginMessage: React.FC<{ + content: string; +}> = ({ content }) => { + return ( + + ); +}; + +const Login: React.FC = () => { + const [userLoginState, setUserLoginState] = useState({}); + const [type] = useState('account'); + const { initialState, setInitialState } = useModel('@@initialState'); + const { token } = theme.useToken(); + const [captcha, setCaptcha] = useState(''); + const [captchaId, setCaptchaId] = useState(''); + const [loginLoading, setLoginLoading] = useState(false); + + 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 refreshCaptcha = () => { + postBaseCaptcha().then((r: API.Response) => { + let resp_data: API.SysCaptchaResponse = r.data + setCaptcha(resp_data?.picPath ||'') + setCaptchaId(resp_data?.captchaId || '') + }) + } + + useEffect(()=>{ + refreshCaptcha() + }, []) + const fetchUserInfo = async () => { + const userInfo = await initialState?.fetchUserInfo?.(); + const menus = await postMenuGetMenu(); + if (userInfo) { + console.log(22, userInfo) + if (getLocale() === 'zh-CN') { + let localData = getAllRouteNameTile(menus.data.routes, '') + let localRes:any = {} + localData.forEach((v)=>{ + localRes[`menu${v.name}`] = v.title + }) + console.log(localRes) + addLocale("zh-CN", localRes,{ + momentLocale: "zh-CN", + antd: zhCN + }); + } + flushSync(() => { + setInitialState((s) => ({ + ...s, + currentUser: userInfo, + menuData: menus.data.routes + })); + }); + } + }; + + const handleSubmit = async (values: API.Login) => { + try { + // 登录 + //{username: "admin", password: "123456", captcha: "5531", captchaId: "GMeC0be8js61jFfbBaXz"} + const msg = await postBaseLogin({...values, captchaId: captchaId}) + + // const msg = await login({ ...values, type }); + if (msg.success === true) { + const defaultLoginSuccessMessage = intl.formatMessage({ + id: 'pages.login.success', + defaultMessage: '登录成功!', + }); + message.success(defaultLoginSuccessMessage); + localStorage.setItem('access', msg.data?.token || ''); + fetchUserInfo().then(()=>{ + const urlParams = new URL(window.location.href).searchParams; + console.log(222, urlParams.get('redirect')) + history.push(urlParams.get('redirect') || '/'); + }); + return; + // GetUserProfile().then(r=>{ + // console.log(223, r) + // }) + } + // 如果失败去设置用户错误信息 + setUserLoginState({ status: msg.success ? 'ok': 'error', type: type, currentAuthority: msg.data?.token || ''}); + } catch (error) { + const defaultLoginFailureMessage = intl.formatMessage({ + id: 'pages.login.failure', + defaultMessage: '登录失败,请重试!', + }); + message.error(defaultLoginFailureMessage); + refreshCaptcha() + } finally { + setLoginLoading(false) + } + }; + const { status, type: loginType } = userLoginState; + + return ( +
+ + + {intl.formatMessage({ + id: 'menu.login', + defaultMessage: '登录页', + })} + - {Settings.title} + + + +
+ { + await handleSubmit(values as API.LoginParams); + }} + + > + {/* */} + + {status === 'error' && loginType === 'account' && ( + + )} + {type === 'account' && ( + <> + + ), + }} + placeholder={'用户名:'} + rules={[ + { + required: true, + message: '请输入用户名!', + }, + ]} + /> + + ), + }} + placeholder={'密码:'} + rules={[ + { + required: true, + message: '请输入密码!', + }, + ]} + /> + , + }} + placeholder={intl.formatMessage({ + id: 'pages.login.captcha.placeholder', + defaultMessage: '验证码:', + })} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + addonAfter={} + /> + + )} + + {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) { + return; + } + message.success('获取验证码成功!验证码为:1234'); + }} + /> + + )} +
+ + + + + + +
+
+
+ {/*
*/} +
+ ); +}; + +export default Login; diff --git a/src/pages/User/Login/index1.tsx b/src/pages/User/Login/index1.tsx new file mode 100644 index 0000000..9c1739e --- /dev/null +++ b/src/pages/User/Login/index1.tsx @@ -0,0 +1,538 @@ +// import Footer from '@/components/Footer'; +import { login } from '@/services/ant-design-pro/api'; +import { getFakeCaptcha } from '@/services/ant-design-pro/login'; +import { + KeyOutlined, + LockOutlined, + MobileOutlined, + UserOutlined, +} from '@ant-design/icons'; +import { + LoginForm, + LoginFormPage, + ProConfigProvider, + ProFormCaptcha, + ProFormCheckbox, + ProFormText, +} from '@ant-design/pro-components'; +import { useEmotionCss } from '@ant-design/use-emotion-css'; +import { FormattedMessage, history, SelectLang, useIntl, useModel, Helmet } from '@umijs/max'; +import {Alert, Image, message, theme} from 'antd'; +import Settings from '../../../../config/defaultSettings'; +import React, {useEffect, useState} from 'react'; +import { flushSync } from 'react-dom'; +import styles from './login1.less' +import {postBaseCaptcha, postBaseLogin} from "@/services/system/Base"; +import {postMenuGetMenu} from "@/services/system/Menu"; +import {getLocale} from "@@/exports"; +import {getAllRouteNameTile} from "@/utils/common"; +import {addLocale} from "@@/plugin-locale"; +import zhCN from "@/locales/zh-CN"; +import Logo from "../../../../public/sst_logo.png" + +// 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 { + display: 'none', + width: 42, + height: 42, + lineHeight: '42px', + position: 'fixed', + right: 16, + // zIndex: 99, + borderRadius: token.borderRadius, + ':hover': { + backgroundColor: token.colorBgTextHover, + }, + }; + }); + + return ( +
+ {SelectLang && } +
+ ); +}; + +const LoginMessage: React.FC<{ + content: string; +}> = ({ content }) => { + return ( + + ); +}; + +const Login: React.FC = () => { + const [userLoginState, setUserLoginState] = useState({}); + const [type] = useState('account'); + const { initialState, setInitialState } = useModel('@@initialState'); + const { token } = theme.useToken(); + const [captcha, setCaptcha] = useState(''); + const [captchaId, setCaptchaId] = useState(''); + const [loginLoading, setLoginLoading] = useState(false); + + 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 refreshCaptcha = () => { + postBaseCaptcha().then((r: API.Response) => { + let resp_data: API.SysCaptchaResponse = r.data + setCaptcha(resp_data?.picPath ||'') + setCaptchaId(resp_data?.captchaId || '') + }) + } + + useEffect(()=>{ + refreshCaptcha() + }, []) + const fetchUserInfo = async () => { + const userInfo = await initialState?.fetchUserInfo?.(); + const menus = await postMenuGetMenu(); + if (userInfo) { + console.log(22, userInfo) + if (getLocale() === 'zh-CN') { + let localData = getAllRouteNameTile(menus.data.routes, '') + let localRes:any = {} + localData.forEach((v)=>{ + localRes[`menu${v.name}`] = v.title + }) + console.log(localRes) + addLocale("zh-CN", localRes,{ + momentLocale: "zh-CN", + antd: zhCN + }); + } + flushSync(() => { + setInitialState((s) => ({ + ...s, + currentUser: userInfo, + menuData: menus.data.routes + })); + }); + } + }; + + const handleSubmit = async (values: API.Login) => { + try { + // 登录 + //{username: "admin", password: "123456", captcha: "5531", captchaId: "GMeC0be8js61jFfbBaXz"} + const msg = await postBaseLogin({...values, captchaId: captchaId}) + + // const msg = await login({ ...values, type }); + if (msg.success === true) { + const defaultLoginSuccessMessage = intl.formatMessage({ + id: 'pages.login.success', + defaultMessage: '登录成功!', + }); + message.success(defaultLoginSuccessMessage); + localStorage.setItem('access', msg.data?.token || ''); + fetchUserInfo().then(()=>{ + const urlParams = new URL(window.location.href).searchParams; + console.log(222, urlParams.get('redirect')) + history.push(urlParams.get('redirect') || '/'); + }); + return; + // GetUserProfile().then(r=>{ + // console.log(223, r) + // }) + } + // 如果失败去设置用户错误信息 + setUserLoginState({ status: msg.success ? 'ok': 'error', type: type, currentAuthority: msg.data?.token || ''}); + } catch (error) { + const defaultLoginFailureMessage = intl.formatMessage({ + id: 'pages.login.failure', + defaultMessage: '登录失败,请重试!', + }); + message.error(defaultLoginFailureMessage); + refreshCaptcha() + } finally { + setLoginLoading(false) + } + }; + const { status, type: loginType } = userLoginState; + + return ( +
+ + + {intl.formatMessage({ + id: 'menu.login', + defaultMessage: '登录页', + })} + - {Settings.title} + + + + +
+
+
+ +
+ + { + await handleSubmit(values as API.LoginParams); + }} + > + {status === 'error' && loginType === 'account' && ( + + )} + {type === 'account' && ( + <> + , + }} + placeholder={'用户名:'} + rules={[ + { + required: true, + message: '请输入用户名!', + }, + ]} + /> + + ), + }} + placeholder={'密码:'} + rules={[ + { + required: true, + message: '请输入密码!', + }, + ]} + /> + , + }} + placeholder={intl.formatMessage({ + id: 'pages.login.captcha.placeholder', + defaultMessage: '验证码:', + })} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + addonAfter={} + /> + + )} + {status === 'error' && loginType === 'mobile' && } +
+ + 自动登录 + + + 忘记密码 + +
+
+
+
+ + {/* { + await handleSubmit(values as API.LoginParams); + }} + + > + + {status === 'error' && loginType === 'account' && ( + + )} + {type === 'account' && ( + <> + + ), + }} + placeholder={'用户名:'} + rules={[ + { + required: true, + message: '请输入用户名!', + }, + ]} + /> + + ), + }} + placeholder={'密码:'} + 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) { + return; + } + message.success('获取验证码成功!验证码为:1234'); + }} + /> + + )} +
+ + + + + + +
+
*/} +
+ {/*
*/} +
+ ); +}; + +export default Login; diff --git a/src/pages/User/Login/index2.tsx b/src/pages/User/Login/index2.tsx new file mode 100644 index 0000000..f306b2f --- /dev/null +++ b/src/pages/User/Login/index2.tsx @@ -0,0 +1,408 @@ +import { + AlipayOutlined, KeyOutlined, + LockOutlined, + MobileOutlined, + TaobaoOutlined, + UserOutlined, + WeiboOutlined, +} from '@ant-design/icons'; +import { + LoginFormPage, + ProConfigProvider, + ProFormCaptcha, + ProFormCheckbox, + ProFormText, +} from '@ant-design/pro-components'; +import {Alert, Button, Divider, Image, message, Space, Tabs, theme} from 'antd'; +import type { CSSProperties } from 'react'; +import React, {useEffect, useState} from 'react'; +import {FormattedMessage, history, useIntl, useModel} from "@@/exports"; +type LoginType = 'phone' | 'account'; + +const iconStyles: CSSProperties = { + color: 'rgba(0, 0, 0, 0.2)', + fontSize: '18px', + verticalAlign: 'middle', + cursor: 'pointer', +}; +import { getFakeCaptcha } from '@/services/ant-design-pro/login'; +import {postMenuGetMenu} from "@/services/system/Menu"; +import {flushSync} from "react-dom"; +import {postBaseCaptcha, postBaseLogin} from "@/services/system/Base"; + +const Page = () => { + // const [loginType, setLoginType] = useState('account'); + const { token } = theme.useToken(); + + const [captcha, setCaptcha] = useState(''); + const [captchaId, setCaptchaId] = useState(''); + const intl = useIntl(); + const { initialState, setInitialState } = useModel('@@initialState'); + const [userLoginState, setUserLoginState] = useState({}); + const [type, setType] = useState('account'); + + const [loginLoading, setLoginLoading] = useState(false); + const refreshCaptcha = () => { + postBaseCaptcha().then((r: API.Response) => { + let resp_data: API.SysCaptchaResponse = r.data + setCaptcha(resp_data?.picPath ||'') + setCaptchaId(resp_data?.captchaId || '') + }) + } + + useEffect(()=>{ + refreshCaptcha() + }, []) + + const LoginMessage: React.FC<{ + content: string; + }> = ({ content }) => { + return ( + + ); + }; + const fetchUserInfo = async () => { + const userInfo = await initialState?.fetchUserInfo?.(); + const menus = await postMenuGetMenu(); + if (userInfo) { + console.log(22, userInfo) + flushSync(() => { + setInitialState((s) => ({ + ...s, + currentUser: userInfo, + menuData: menus.data.routes + })); + }); + } + }; + + const handleSubmit = async (values: API.Login) => { + try { + // 登录 + //{username: "admin", password: "123456", captcha: "5531", captchaId: "GMeC0be8js61jFfbBaXz"} + const msg = await postBaseLogin({...values, captchaId: captchaId}) + + // const msg = await login({ ...values, type }); + if (msg.success === true) { + const defaultLoginSuccessMessage = intl.formatMessage({ + id: 'pages.login.success', + defaultMessage: '登录成功!', + }); + message.success(defaultLoginSuccessMessage); + localStorage.setItem('access', msg.data?.token || ''); + fetchUserInfo().then(()=>{ + const urlParams = new URL(window.location.href).searchParams; + history.push(urlParams.get('redirect') || '/'); + }); + return; + // GetUserProfile().then(r=>{ + // console.log(223, r) + // }) + } + // 如果失败去设置用户错误信息 + setUserLoginState({ status: msg.success ? 'ok': 'error', type: type, currentAuthority: msg.data?.token || ''}); + } catch (error) { + const defaultLoginFailureMessage = intl.formatMessage({ + id: 'pages.login.failure', + defaultMessage: '登录失败,请重试!', + }); + message.error(defaultLoginFailureMessage); + refreshCaptcha() + } finally { + setLoginLoading(false) + } + }; + const { status, type: loginType } = userLoginState; + + return ( +
+ { + setLoginLoading(true) + await handleSubmit(values as API.Login); + }} + loading={loginLoading} + initialValues={{ + autoLogin: true, + }} + // actions={ + //
+ // + // + // 其他登录方式 + // + // + // + //
+ // + //
+ //
+ // + //
+ //
+ // + //
+ //
+ //
+ //} + > + setType(activeKey as LoginType)} + items={[ + { + key: 'account', + label: intl.formatMessage({ + id: 'pages.login.accountLogin.tab', + defaultMessage: '账户密码登录', + }), + }, + // { + // key: 'mobile', + // label: intl.formatMessage({ + // id: 'pages.login.phoneLogin.tab', + // defaultMessage: '手机号登录', + // }), + // }, + ]} + + > + {/**/} + {/**/} + + {status === 'error' && loginType === 'account' && ( + + )} + {type === 'account' && ( + <> + + ), + }} + placeholder={'用户名:'} + rules={[ + { + required: true, + message: '请输入用户名!', + }, + ]} + /> + + ), + }} + placeholder={'密码:'} + rules={[ + { + required: true, + message: '请输入密码!', + }, + ]} + /> + , + }} + placeholder={intl.formatMessage({ + id: 'pages.login.captcha.placeholder', + defaultMessage: '验证码:', + })} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + addonAfter={} + /> + + )} + {loginType === 'phone' && ( + <> + + ), + }} + name="mobile" + placeholder={'手机号'} + rules={[ + { + required: true, + message: '请输入手机号!', + }, + { + pattern: /^1\d{10}$/, + message: '手机号格式错误!', + }, + ]} + /> + + ), + }} + captchaProps={{ + size: 'large', + }} + placeholder={'请输入验证码'} + captchaTextRender={(timing, count) => { + if (timing) { + return `${count} ${'获取验证码'}`; + } + return '获取验证码'; + }} + name="captcha" + rules={[ + { + required: true, + message: '请输入验证码!', + }, + ]} + onGetCaptcha={async () => { + message.success('获取验证码成功!验证码为:1234'); + }} + /> + + )} +
+ + 自动登录 + + + 忘记密码 + +
+
+
+ ); +}; + +export default () => { + + return ( + + + + ); +}; diff --git a/src/pages/User/Login/login.less b/src/pages/User/Login/login.less new file mode 100644 index 0000000..085a2ee --- /dev/null +++ b/src/pages/User/Login/login.less @@ -0,0 +1,38 @@ +.loginFrom { + :global { + .ant-pro-form-login-page-left { + max-width: none; + .ant-pro-form-login-page-container { + .ant-pro-form-login-page-top { + margin-bottom: 32px; + .ant-pro-form-login-page-title { + font-size: 32px; + font-weight: 400; + } + } + .ant-pro-form-login-page-main { + // 鼠标hover时候的颜色 + .ant-checkbox-wrapper:hover .ant-checkbox-inner, + .ant-checkbox:hover .ant-checkbox-inner, + .ant-checkbox-input:focus + .ant-checkbox-inner{ + border: 1px solid #FF6D00 !important; + } + // 设置默认的颜色 + .ant-checkbox{ + .ant-checkbox-inner{ + border: 1px solid #DDD; + background-color: transparent; + } + } + // 设置选中的颜色 + .ant-checkbox-checked .ant-checkbox-inner, + .ant-checkbox-indeterminate .ant-checkbox-inner { + background-color: #FF6D00; + border: 1px solid #FF6D00; + } + } + } + } + + } +} \ No newline at end of file diff --git a/src/pages/User/Login/login.test.tsx b/src/pages/User/Login/login.test.tsx new file mode 100644 index 0000000..18593f8 --- /dev/null +++ b/src/pages/User/Login/login.test.tsx @@ -0,0 +1,96 @@ +import { render, fireEvent, act } from '@testing-library/react'; +import React from 'react'; +import { TestBrowser } from '@@/testBrowser'; + +// @ts-ignore +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/User/Login/login1.less b/src/pages/User/Login/login1.less new file mode 100644 index 0000000..c6676dc --- /dev/null +++ b/src/pages/User/Login/login1.less @@ -0,0 +1,50 @@ +.loginFrom { + .loginBox { + flex: 1; + width: 100vw; + height: 100vh; + background-image: url('../../../../public/sst.png'); + background-size: 100% 100%; + background-repeat: no-repeat; + display: flex; + justify-content: center; + align-items: center; + } + .loginLeft { + position: relative; + width: 704px; + height: 566px; + background-image: url('../../../../public/loginBoxLeft.png'); + background-size: 100% 100%; + background-repeat: no-repeat; + .loginlogo { + position: absolute; + top: -100px; + left: 0; + } + } + :global { + .ant-pro-form-login-container { + .ant-pro-form-login-top .css-dev-only-do-not-override-1lxmgnh { + width: 400px; + margin-bottom: 32px; + font-weight: 400; + } + :where(.css-dev-only-do-not-override-1lxmgnh).ant-pro-form-login-main { + min-width: 400px; + max-width: 580px; + margin: 0; + } + .ant-pro-form-login-main .css-dev-only-do-not-override-1lxmgnh { + width: 400px; + } + :where(.css-dev-only-do-not-override-qgg3xn).ant-input-affix-wrapper-lg { + padding: 7px 11px; + font-size: 16px; + line-height: 1.5; + border-radius: 4px; + } + } + + } +} \ No newline at end of file diff --git a/src/pages/Welcome/Welcome.tsx b/src/pages/Welcome/Welcome.tsx new file mode 100644 index 0000000..4155096 --- /dev/null +++ b/src/pages/Welcome/Welcome.tsx @@ -0,0 +1,54 @@ +import React from 'react'; +import BannerInfoCard from './components/BannerInfoCard'; +import NavInfoCardList from './components/NavInfoCardList'; +import FootInfoCard from './components/FootInfoCard'; +import { TimeType } from './typing'; + +// 测试数据 +import testData from './testData'; + +const { offendingData , rankingListData} = testData; +const Welcome: React.FC = () => { + const isActive = (type: TimeType) => { + console.log('isActive_type', type); + // 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 ''; + }; + + const selectDate = (type: TimeType) => { + console.log('selectDate_type', type); + // setRangePickerValue(getTimeDistance(type)); + }; + + // const { token } = theme.useToken(); + // const { initialState } = useModel('@@initialState'); + return ( +
+ + + +
+ ); +}; + +export default Welcome; diff --git a/src/pages/Welcome/components/BannerInfoCard.tsx b/src/pages/Welcome/components/BannerInfoCard.tsx new file mode 100644 index 0000000..c024bbd --- /dev/null +++ b/src/pages/Welcome/components/BannerInfoCard.tsx @@ -0,0 +1,171 @@ +import { Column } from '@ant-design/charts'; +import { ProCard } from '@ant-design/pro-components'; +import { Tabs } from 'antd'; + +import React from 'react'; + +// type +import { TimeType } from '../typing'; + +// comp + +// style +import styles from '../styles/bannerInfoCard.less'; + +// typing + +/**comp 组件分解 */ +const { TabPane } = Tabs; + +/**styles 组件样式配置 */ +const offendingColSpanProps = { sm: 24, md: 12, lg: 16 }; // 违规卡片项栅格配置 +const rankingColSpanProps = { sm: 24, md: 12, lg: 8}; // 排名卡片项栅格配置 + +/**state 初始化数据 */ +const offendingTabData: Record[] = [ + { tabName: '违规总量', keyName: 'totalCount' }, + // { tabName: '违规网点', keyName: 'network' }, +]; +// const topItemStyle = { marginBottom: 24, height: 190 }; // 每个卡片独立样式 + +// 前三排名颜色样式 +const handleRanking = (value: number) => { + switch (value) { + case 0: + return styles.rankFirst + break; + case 1: + return styles.rankSecond + break; + case 2: + return styles.rankThird + break; + default: + return '' + break; + } +}; + +/**子组件 childComp */ +const RankListCard: React.FC = ({ + rankingListData, +}: { + rankingListData: Record[]; +}) => { + return ( +
    + {rankingListData.map((item, i) => ( +
  • + {/* */} + + {i + 1} + + + {item.title} + + {item.total} + {/* {numeral(item.total).format('0,0')} */} +
  • + ))} +
+ ); +}; + +const BannerInfoCard: React.FC = ({ + offendingData, + rankingListData, + isActive, + selectDate, +}: { + offendingData: Record[]; + rankingListData: Record[]; + isActive: (key: TimeType) => string; + selectDate: (key: TimeType) => void; +}) => { + // const { token } = theme.useToken(); + // const { initialState } = useModel('@@initialState'); + return ( + + } + size="large" + tabBarStyle={{ marginBottom: 24 }} + > + {offendingTabData.map((item) => { + return ( + + +
+ {/* TODO 替换使用reactEchart */} + +
+
+ + + +
+
) + })} + + +
+ ); +}; + +export default BannerInfoCard; diff --git a/src/pages/Welcome/components/FootInfoCard.tsx b/src/pages/Welcome/components/FootInfoCard.tsx new file mode 100644 index 0000000..9701cb9 --- /dev/null +++ b/src/pages/Welcome/components/FootInfoCard.tsx @@ -0,0 +1,273 @@ +import { TinyArea } from '@ant-design/charts'; +import { ProCard, ProColumns, ProTable, StatisticCard } from '@ant-design/pro-components'; +import { Space } from 'antd'; +// import type { RadioChangeEvent } from 'antd/es/radio'; +import ReactEcharts from 'echarts-for-react'; + +import React from 'react'; + +// style +import styles from '../styles/bannerInfoCard.less'; +// 测试数据 +import testData from '../testData'; +import { color } from 'echarts'; +/**data 数据源 */ +const { trendData, salesTypeData, salesTypeDataOnline, salesTypeDataOffline } = testData; + +const { useState } = React; + +// static data 静态数据 +const data = [ + { rank: 1, keyword: '网点一', users: 1000, range: 37, status: 1 }, + { rank: 2, keyword: '网点二', users: 800, range: 62, status: 1 }, + { rank: 3, keyword: '网点三', users: 1500, range: 20, status: 0 }, + { rank: 4, keyword: '网点四', users: 1200, range: 36, status: 0 }, + // 添加更多数据项 +]; + +// 前三排名颜色样式 +const handleRanking = (value: number) => { + switch (value) { + case 1: + return "rgba(224, 40, 40, 1)" + break; + case 2: + return "rgba(255, 172, 64, 1)" + break; + case 3: + return "rgba(250, 219, 20, 1)" + break; + default: + return '' + break; + } +}; + +/**comp 组件分解 */ +const { Statistic } = StatisticCard; + +const netWorkColumns: ProColumns[] = [ + { + title: '排名', + dataIndex: 'rank', + valueType: 'indexBorder', + width: 100, + render: ( text: React.ReactNode, record: { rank: number }) => ( + {record.rank} + ), + }, + { + title: '网点名', + dataIndex: 'keyword', + sorter: (a, b) => a.keyword.localeCompare(b.keyword), + }, + { + title: '异常数', + dataIndex: 'users', + sorter: (a, b) => a.users - b.users, + }, + // TODO 此处排序存在问题 需要优先判断状态,再区分数值 + { + title: '涨幅', + dataIndex: 'range', + key: 'range', + sorter: (a: { range: number }, b: { range: number }) => a.range - b.range, + render: (text: React.ReactNode, record: { status: number }) => ( + + ), + }, +]; + +/**styles 组件样式配置 */ +const footItemColSpanProps = { sm: 24, md: 24, lg: 12 }; // 底部卡片项栅格配置 +const footItemHeadStyleProps = { marginBottom: 30, marginLeft: 10, padding: 0 }; // 底部卡片headStyles 配置 + +const trendItemColSpanProps = { sm: 24, md: 16, lg: 8 }; // 每个卡片项栅格配置 +const trendItemStyle = { margin: 0, padding: 0, height: 190 }; // 每个卡片独立样式 +const trendItemHeadStyle = { padding: 0 }; + +/**state 初始化数据 */ +const offendingTrendData: Record[] = [ + { label: '玩手机', value1: 11093, value2: '17.1', status: 0 }, + { label: '打瞌睡', value1: 26, value2: '27.1', status: 1 }, + { label: '离岗', value1: 145, value2: '37.1', status: 1 }, +]; + +/**methods 事件交互 */ + +/**函数组件 */ +// 子组件 +// 趋势 TrendInfoCard +const TrendInfoCard: React.FC = () => { + return ( + <> + + {offendingTrendData.map((item, index) => { + return ( + + + + + + + + + } + /> + + ); + })} + + + ); +}; + +// 各类别占比环形图 +const DonutChart: React.FC = () => { + const getOption = () => { + return { + title: { + text: '总量', + x: 'center', + y: 'center' + }, + tooltip: { + trigger: 'item', + formatter: '{a}
{b} : {c} ({d}%)', + }, + legend: { + orient: 'vertical', + left: 10, + data: ['玩手机', '打瞌睡', '离岗'], + }, + series: [ + { + name: '类别名称', + type: 'pie', + radius: ['50%', '80%'], // 控制环形图大小 + color: ["#FF8110", "#FFB404", "#3250FF"], + avoidLabelOverlap: false, + label: { + show: false, + position: 'center', + }, + emphasis: { + label: { + show: false, + fontSize: '30', + fontWeight: 'bold', + }, + }, + labelLine: { + show: false, + }, + data: [ + { value: 235, name: '玩手机'}, + { value: 510, name: '打瞌睡' }, + { value: 134, name: '离岗' }, + ], + }, + ], + }; + }; + return ( +
+ +
+ ); +}; + +// const menu = ( +// +// 操作一 +// 操作二 +// +// ); + +// const dropdownGroup = ( +// +// +// +// +// + +// 主组件 +const FootInfoCard: React.FC = () => { + // type SalesType = 'all' | 'online' | 'stores'; + // const [salesType, setSalesType] = useState('all'); + + // const handleChangeSalesType = (e: RadioChangeEvent) => { + // setSalesType(e.target.value); + // }; + + // let salesPieData; + // if (salesType === 'all') { + // salesPieData = salesTypeData; + // } else { + // salesPieData = salesType === 'online' ? salesTypeDataOnline : salesTypeDataOffline; + // } + + return ( +
+ + + + + + +
+ +
+
+
+
+ ); +}; + +export default FootInfoCard; diff --git a/src/pages/Welcome/components/NavInfoCardList.tsx b/src/pages/Welcome/components/NavInfoCardList.tsx new file mode 100644 index 0000000..5389737 --- /dev/null +++ b/src/pages/Welcome/components/NavInfoCardList.tsx @@ -0,0 +1,237 @@ +import { Progress, TinyArea, TinyColumn } from '@ant-design/charts'; +import { InfoCircleOutlined } from '@ant-design/icons'; +import { ProCard, StatisticCard } from '@ant-design/pro-components'; +import { Divider, Space, Tooltip } from 'antd'; + +import React from 'react'; + +// 测试数据 +import testData from '../testData'; +// const { useState } = React; + +/**data 数据源 */ +const { equipData } = testData; +console.log(equipData, 'equipData'); +/**comp 组件分解 */ +const { Statistic } = StatisticCard; + +/**styles 组件样式配置 */ +const topColSpanProps = { sm: 24, md: 12, lg: 6 }; // 每个卡片项栅格配置 +const topItemStyle = { marginBottom: 24, height: 190, backgroundColor: '#FFFAF5', border: '1px solid #FFE9D6', borderRadius: 4 }; // 每个卡片独立样式 +const topItemStyle1 = { marginBottom: 24, height: 190, backgroundColor: '#F5F8FF', border: '1px solid #D6E1FF', borderRadius: 4 }; // 每个卡片独立样式 +const topItemStyle2 = { marginBottom: 24, height: 190, backgroundColor: '#F5F3FD', border: '1px solid #DDD5FD', borderRadius: 4 }; // 每个卡片独立样式 +const topItemStyle3 = { marginBottom: 24, height: 190, backgroundColor: '#F5FBFF', border: '1px solid #D6EFFF', borderRadius: 4 }; // 每个卡片独立样式 +const topItemHeadStyle = { padding: 15 }; +const chartsStyle = { + height: 84 +} +/** + * @顶部展示信息 + * @returns HTML components + */ +const NavInfoCardList: React.FC = () => { + return ( +
+ + {/* 异常总量 */} + + + + + + } + colSpan={topColSpanProps} + style={topItemStyle} + + > + + + + + ), + }} + chart={ + <> + + + + + + + + } + /> + + {/* 设备总量 */} + + + + + + } + colSpan={topColSpanProps} + style={topItemStyle1} + + > + + {/* TODO1025 需要替换成reactEcharts */} + + + ), + }} + chart={ + <> + + + + + + + + } + /> + + {/* 覆盖网点 */} + + + + + + } + colSpan={topColSpanProps} + style={topItemStyle2} + + > + + {/* TODO1025 需要替换成reactEcharts */} + + + ), + }} + chart={ + <> + + + + + + + + } + /> + + {/* 资源使用 */} + + + + + + } + colSpan={topColSpanProps} + style={topItemStyle3} + + > + + {/* TODO1025 需要替换成reactEcharts */} + + + ), + }} + chart={ + <> + + + + + + + } + /> + + +
+ ); +}; + +export default NavInfoCardList; diff --git a/src/pages/Welcome/styles/bannerInfoCard.less b/src/pages/Welcome/styles/bannerInfoCard.less new file mode 100644 index 0000000..c510444 --- /dev/null +++ b/src/pages/Welcome/styles/bannerInfoCard.less @@ -0,0 +1,216 @@ +@import '../../../styles/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; + background-color: #E7E9EF; + // border-radius: 20px; + border-radius: 2px; + &.active { + color: #fff; + background-color: #314659; + } + &.rankFirst { + color: #fff; + background-color: rgba(224, 40, 40, 1); + } + &.rankSecond { + color: #fff; + background-color: rgba(255, 172, 64, 1); + } + &.rankThird { + color: #fff; + background-color: rgba(250, 219, 20, 1); + } + } + .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; +} +// 首页网点列表 +.networkList { + 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: #E7E9EF; + border-radius: 2px; +} + +@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/src/pages/Welcome/styles/colors.css b/src/pages/Welcome/styles/colors.css new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/Welcome/styles/colors.less b/src/pages/Welcome/styles/colors.less new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/Welcome/testData.ts b/src/pages/Welcome/testData.ts new file mode 100644 index 0000000..ff732f8 --- /dev/null +++ b/src/pages/Welcome/testData.ts @@ -0,0 +1,142 @@ +/**staticData */ +import moment from 'moment'; + +interface DataItem { + [field: string]: string | number | number[] | null | undefined; +} + +/**设备数据 */ +let equipData: 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) { + equipData.push({ + x: moment(new Date(beginDay + 1000 * 60 * 60 * 24 * i)).format('YYYY-MM-DD'), + y: fakeY[i], + }); +} + +/**违规数据 */ +const offendingData: Record[] = []; +for (let i = 0; i < 12; i += 1) { + offendingData.push({ + x: `${i + 1}月`, + y: Math.floor(Math.random() * 1000) + 200, + }); +} + +/**排名数据 */ +function generateRandomArray(length: number, min: number, max: number): number[] { + const randomArray: number[] = []; + for (let i = 0; i < length; i++) { + const randomValue = Math.floor(Math.random() * (max - min + 1)) + min; + randomArray.push(randomValue); + } + + return randomArray; +} +const rankingListData: Record[] = []; +for (let i = 0; i < 7; i += 1) { + rankingListData.push({ + title: `工专路 ${i} 号店`, + total: generateRandomArray(1, 10000, 20000)[0], + }); +} + +/**趋势数据 */ +// const trendData: any[] = []; +const trendData = [1, 6, 4, 8, 3, 7, 2]; +// for (let i = 0; i < fakeY2.length; i += 1) { +// trendData.push({ +// x: moment(new Date(beginDay + 1000 * 60 * 60 * 24 * i)).format('YYYY-MM-DD'), +// y: fakeY2[i], +// }); +// } + +/**类别占比数据 */ +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, + }, +]; +export default { + equipData, + offendingData, + rankingListData, + trendData, + salesTypeData, + salesTypeDataOnline, + salesTypeDataOffline +}; diff --git a/src/pages/Welcome/typing.ts b/src/pages/Welcome/typing.ts new file mode 100644 index 0000000..b52eca8 --- /dev/null +++ b/src/pages/Welcome/typing.ts @@ -0,0 +1,5 @@ +export interface DataItem { + [field: string]: string | number | number[] | null | undefined; +} + +export type TimeType = 'today' | 'week' | 'month' | 'year'; \ No newline at end of file diff --git a/src/requestErrorConfig.ts b/src/requestErrorConfig.ts new file mode 100644 index 0000000..a9f3e77 --- /dev/null +++ b/src/requestErrorConfig.ts @@ -0,0 +1,116 @@ +import type { RequestOptions } from '@@/plugin-request/request'; +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; + msg?: string; + showType?: ErrorShowType; +} + +/** + * @name 错误处理 + * pro 自带的错误处理, 可以在这里做自己的改动 + * @doc https://umijs.org/docs/max/request#配置 + */ +export const errorConfig: RequestConfig = { + // 错误处理: umi@3 的错误处理方案。 + errorConfig: { + // 错误抛出 + errorThrower: (res) => { + let { success, data, errorCode, errorMessage, showType,msg } = + res as unknown as ResponseStructure; + if (msg && !errorMessage) { + errorMessage = msg + } + 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) { + let { errorMessage, errorCode ,msg} = errorInfo; + if (msg && !errorMessage) { + errorMessage = msg + } + switch (errorInfo.showType) { + case ErrorShowType.SILENT: + // do nothing + break; + case ErrorShowType.WARN_MESSAGE: + message.warning(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: RequestOptions) => { + // 拦截请求配置,进行个性化处理。 + const url = config?.url?.concat('?token = 123'); + return { ...config, url }; + }, + ], + + // 响应拦截器 + responseInterceptors: [ + (response) => { + // 拦截响应数据,进行个性化处理 + const { data } = response as unknown as ResponseStructure; + + if (data?.success === false) { + message.error('请求失败!'); + } + return response; + }, + ], +}; diff --git a/src/service-worker.js b/src/service-worker.js new file mode 100644 index 0000000..b86726c --- /dev/null +++ b/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/src/services/analysis/ActionDetection.ts b/src/services/analysis/ActionDetection.ts new file mode 100644 index 0000000..8aff5de --- /dev/null +++ b/src/services/analysis/ActionDetection.ts @@ -0,0 +1,21 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 分页获取ActionDetection列表 POST /action_detection/getActionDetectionList */ +export async function postActionDetectionGetActionDetectionList( + body: API.SearchActionDetectionParams, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/action_detection/getActionDetectionList`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} diff --git a/src/services/analysis/index.ts b/src/services/analysis/index.ts new file mode 100644 index 0000000..5e89982 --- /dev/null +++ b/src/services/analysis/index.ts @@ -0,0 +1,8 @@ +// @ts-ignore +/* eslint-disable */ +// API 更新时间: +// API 唯一标识: +import * as ActionDetection from './ActionDetection'; +export default { + ActionDetection, +}; diff --git a/src/services/analysis/typings.d.ts b/src/services/analysis/typings.d.ts new file mode 100644 index 0000000..18fed1b --- /dev/null +++ b/src/services/analysis/typings.d.ts @@ -0,0 +1,45 @@ +declare namespace API { + type ActionDetection = { + id?: string; + source?: string; + configFile?: string; + type?: string; + remark?: string; + time?: number; + imagesPath?: string; + }; + + type PageResult = { + list?: any; + page?: number; + pageSize?: number; + total?: number; + }; + + type Response = { + code?: number; + data?: any; + msg?: string; + success?: boolean; + }; + + type SearchActionDetectionParams = { + configFile?: string; + createTime?: string; + /** 排序方式:升序false(默认)|降序true */ + desc?: boolean; + id?: number; + /** 关键字 */ + keyword?: string; + /** 排序 */ + orderKey?: string; + /** 页码 */ + page?: number; + /** 每页大小 */ + pageSize?: number; + remark?: string; + source?: string; + type?: string; + updateTime?: string; + }; +} diff --git a/src/services/ant-design-pro/api.ts b/src/services/ant-design-pro/api.ts new file mode 100644 index 0000000..cbd5961 --- /dev/null +++ b/src/services/ant-design-pro/api.ts @@ -0,0 +1,85 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 获取当前的用户 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/src/services/ant-design-pro/index.ts b/src/services/ant-design-pro/index.ts new file mode 100644 index 0000000..1ac489f --- /dev/null +++ b/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/src/services/ant-design-pro/login.ts b/src/services/ant-design-pro/login.ts new file mode 100644 index 0000000..8871ed8 --- /dev/null +++ b/src/services/ant-design-pro/login.ts @@ -0,0 +1,21 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 发送验证码 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/src/services/ant-design-pro/typings.d.ts b/src/services/ant-design-pro/typings.d.ts new file mode 100644 index 0000000..13e5a68 --- /dev/null +++ b/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/src/services/device/Device.ts b/src/services/device/Device.ts new file mode 100644 index 0000000..8258ff5 --- /dev/null +++ b/src/services/device/Device.ts @@ -0,0 +1,171 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 创建基础Device POST /device/createDevice */ +export async function postDeviceCreateDevice(body: API.Device, options?: { [key: string]: any }) { + return request(`/api/v1/device/createDevice`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除Device DELETE /device/deleteDevice */ +export async function deleteDeviceDeleteDevice(body: API.Device, options?: { [key: string]: any }) { + return request(`/api/v1/device/deleteDevice`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除选中Device DELETE /device/deleteDeviceByIds */ +export async function deleteDeviceDeleteDeviceByIds( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request(`/api/v1/device/deleteDeviceByIds`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 根据id获取Device POST /device/getDeviceById */ +export async function postDeviceGetDeviceById(body: API.GetById, options?: { [key: string]: any }) { + return request( + `/api/v1/device/getDeviceById`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获取Device外键列表 POST /device/getDeviceFkSelect */ +export async function postDeviceGetDeviceFkSelect( + body: API.GetFkSelect, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device/getDeviceFkSelect`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 分页获取Device列表 POST /device/getDeviceList */ +export async function postDeviceGetDeviceList( + body: API.SearchDeviceParams, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device/getDeviceList`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获得Device名称列表 POST /device/getDeviceNames */ +export async function postDeviceGetDeviceNames(body: API.IdsReq, options?: { [key: string]: any }) { + return request( + `/api/v1/device/getDeviceNames`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 修改基础Device PUT /device/updateDevice */ +export async function putDeviceUpdateDevice(body: API.Device, options?: { [key: string]: any }) { + return request(`/api/v1/device/updateDevice`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 关闭rtsp摄像头驱动 POST /device/closeRtspCamera */ +export async function postDeviceCloseRtspCamera( + body: API.KillRtspReq, + options?: { [key: string]: any }, +) { + return request(`/api/v1/device/closeRtspCamera`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + + +/** 打开rtsp摄像头驱动 POST /device/openRtspCamera */ +export async function postDeviceOpenRtspCamera( + body: API.RtspReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device/openRtspCamera`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +export async function postDeviceGetAllDeviceByGroup( + body: API.GetById, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device/getAllDeviceByGroup`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} diff --git a/src/services/device/DeviceCategory.ts b/src/services/device/DeviceCategory.ts new file mode 100644 index 0000000..5c1d4a9 --- /dev/null +++ b/src/services/device/DeviceCategory.ts @@ -0,0 +1,138 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 创建基础DeviceCategory POST /device_category/createDeviceCategory */ +export async function postDeviceCategoryCreateDeviceCategory( + body: API.DeviceCategory, + options?: { [key: string]: any }, +) { + return request(`/api/v1/device_category/createDeviceCategory`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除DeviceCategory DELETE /device_category/deleteDeviceCategory */ +export async function deleteDeviceCategoryDeleteDeviceCategory( + body: API.DeviceCategory, + options?: { [key: string]: any }, +) { + return request(`/api/v1/device_category/deleteDeviceCategory`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除选中DeviceCategory DELETE /device_category/deleteDeviceCategoryByIds */ +export async function deleteDeviceCategoryDeleteDeviceCategoryByIds( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_category/deleteDeviceCategoryByIds`, + { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 根据id获取DeviceCategory POST /device_category/getDeviceCategoryById */ +export async function postDeviceCategoryGetDeviceCategoryById( + body: API.GetById, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_category/getDeviceCategoryById`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获取DeviceCategory外键列表 POST /device_category/getDeviceCategoryFkSelect */ +export async function postDeviceCategoryGetDeviceCategoryFkSelect( + body: API.GetFkSelect, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_category/getDeviceCategoryFkSelect`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 分页获取DeviceCategory列表 POST /device_category/getDeviceCategoryList */ +export async function postDeviceCategoryGetDeviceCategoryList( + body: API.SearchDeviceCategoryParams, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_category/getDeviceCategoryList`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获得DeviceCategory名称列表 POST /device_category/getDeviceCategoryNames */ +export async function postDeviceCategoryGetDeviceCategoryNames( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_category/getDeviceCategoryNames`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 修改基础DeviceCategory PUT /device_category/updateDeviceCategory */ +export async function putDeviceCategoryUpdateDeviceCategory( + body: API.DeviceCategory, + options?: { [key: string]: any }, +) { + return request(`/api/v1/device_category/updateDeviceCategory`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/device/DeviceGroup.ts b/src/services/device/DeviceGroup.ts new file mode 100644 index 0000000..89f1ebc --- /dev/null +++ b/src/services/device/DeviceGroup.ts @@ -0,0 +1,146 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 创建基础DeviceGroup POST /device_group/createDeviceGroup */ +export async function postDeviceGroupCreateDeviceGroup( + body: API.DeviceGroup, + options?: { [key: string]: any }, +) { + return request(`/api/v1/device_group/createDeviceGroup`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除DeviceGroup DELETE /device_group/deleteDeviceGroup */ +export async function deleteDeviceGroupDeleteDeviceGroup( + body: API.DeviceGroup, + options?: { [key: string]: any }, +) { + return request(`/api/v1/device_group/deleteDeviceGroup`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除选中DeviceGroup DELETE /device_group/deleteDeviceGroupByIds */ +export async function deleteDeviceGroupDeleteDeviceGroupByIds( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request(`/api/v1/device_group/deleteDeviceGroupByIds`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 根据id获取DeviceGroup POST /device_group/getDeviceGroupById */ +export async function postDeviceGroupGetDeviceGroupById( + body: API.GetById, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_group/getDeviceGroupById`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获取DeviceGroup外键列表 POST /device_group/getDeviceGroupFkSelect */ +export async function postDeviceGroupGetDeviceGroupFkSelect( + body: API.GetFkSelect, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_group/getDeviceGroupFkSelect`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 分页获取DeviceGroup列表 POST /device_group/getDeviceGroupList */ +export async function postDeviceGroupGetDeviceGroupList( + body: API.SearchDeviceGroupParams, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_group/getDeviceGroupList`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获得DeviceGroup名称列表 POST /device_group/getDeviceGroupNames */ +export async function postDeviceGroupGetDeviceGroupNames( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_group/getDeviceGroupNames`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获取设备组树 POST /device_group/getDeviceGroupTree */ +export async function postDeviceGroupGetDeviceGroupTree(options?: { [key: string]: any }) { + return request( + `/api/v1/device_group/getDeviceGroupTree`, + { + method: 'POST', + ...(options || {}), + }, + ); +} + +/** 修改基础DeviceGroup PUT /device_group/updateDeviceGroup */ +export async function putDeviceGroupUpdateDeviceGroup( + body: API.DeviceGroup, + options?: { [key: string]: any }, +) { + return request(`/api/v1/device_group/updateDeviceGroup`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/device/DeviceModelInGroup.ts b/src/services/device/DeviceModelInGroup.ts new file mode 100644 index 0000000..159d3da --- /dev/null +++ b/src/services/device/DeviceModelInGroup.ts @@ -0,0 +1,162 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 创建基础DeviceModelInGroup POST /device_model_in_group/createDeviceModelInGroup */ +export async function postDeviceModelInGroupCreateDeviceModelInGroup( + body: API.DeviceModelInGroup, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_model_in_group/createDeviceModelInGroup`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 删除DeviceModelInGroup DELETE /device_model_in_group/deleteDeviceModelInGroup */ +export async function deleteDeviceModelInGroupDeleteDeviceModelInGroup( + body: API.DeviceModelInGroup, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_model_in_group/deleteDeviceModelInGroup`, + { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 删除选中DeviceModelInGroup DELETE /device_model_in_group/deleteDeviceModelInGroupByIds */ +export async function deleteDeviceModelInGroupDeleteDeviceModelInGroupByIds( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_model_in_group/deleteDeviceModelInGroupByIds`, + { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 根据id获取DeviceModelInGroup POST /device_model_in_group/getDeviceModelInGroupById */ +export async function postDeviceModelInGroupGetDeviceModelInGroupById( + body: API.GetById, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_model_in_group/getDeviceModelInGroupById`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获取DeviceModelInGroup外键列表 POST /device_model_in_group/getDeviceModelInGroupFkSelect */ +export async function postDeviceModelInGroupGetDeviceModelInGroupFkSelect( + body: API.GetFkSelect, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_model_in_group/getDeviceModelInGroupFkSelect`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 分页获取DeviceModelInGroup列表 POST /device_model_in_group/getDeviceModelInGroupList */ +export async function postDeviceModelInGroupGetDeviceModelInGroupList( + body: API.SearchDeviceModelInGroupParams, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_model_in_group/getDeviceModelInGroupList`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获得DeviceModelInGroup名称列表 POST /device_model_in_group/getDeviceModelInGroupNames */ +export async function postDeviceModelInGroupGetDeviceModelInGroupNames( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_model_in_group/getDeviceModelInGroupNames`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 修改基础DeviceModelInGroup PUT /device_model_in_group/updateDeviceModelInGroup */ +export async function putDeviceModelInGroupUpdateDeviceModelInGroup( + body: API.DeviceModelInGroup, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_model_in_group/updateDeviceModelInGroup`, + { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 更新网点中的设备 PUT /device_model_in_group/updateDevicesInGroupModel */ +export async function putRoleUpdateDevicesInGroupModel( + body: API.UpdateDevicesInGroupModelParams, + options?: { [key: string]: any }, +) { + return request(`/api/v1/device_model_in_group/updateDevicesInGroupModel`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/device/DeviceRelation.ts b/src/services/device/DeviceRelation.ts new file mode 100644 index 0000000..f90242f --- /dev/null +++ b/src/services/device/DeviceRelation.ts @@ -0,0 +1,138 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 创建基础DeviceRelation POST /device_relation/createDeviceRelation */ +export async function postDeviceRelationCreateDeviceRelation( + body: API.DeviceRelation, + options?: { [key: string]: any }, +) { + return request(`/api/v1/device_relation/createDeviceRelation`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除DeviceRelation DELETE /device_relation/deleteDeviceRelation */ +export async function deleteDeviceRelationDeleteDeviceRelation( + body: API.DeviceRelation, + options?: { [key: string]: any }, +) { + return request(`/api/v1/device_relation/deleteDeviceRelation`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除选中DeviceRelation DELETE /device_relation/deleteDeviceRelationByIds */ +export async function deleteDeviceRelationDeleteDeviceRelationByIds( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_relation/deleteDeviceRelationByIds`, + { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 根据id获取DeviceRelation POST /device_relation/getDeviceRelationById */ +export async function postDeviceRelationGetDeviceRelationById( + body: API.GetById, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_relation/getDeviceRelationById`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获取DeviceRelation外键列表 POST /device_relation/getDeviceRelationFkSelect */ +export async function postDeviceRelationGetDeviceRelationFkSelect( + body: API.GetFkSelect, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_relation/getDeviceRelationFkSelect`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 分页获取DeviceRelation列表 POST /device_relation/getDeviceRelationList */ +export async function postDeviceRelationGetDeviceRelationList( + body: API.SearchDeviceRelationParams, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_relation/getDeviceRelationList`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获得DeviceRelation名称列表 POST /device_relation/getDeviceRelationNames */ +export async function postDeviceRelationGetDeviceRelationNames( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/device_relation/getDeviceRelationNames`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 修改基础DeviceRelation PUT /device_relation/updateDeviceRelation */ +export async function putDeviceRelationUpdateDeviceRelation( + body: API.DeviceRelation, + options?: { [key: string]: any }, +) { + return request(`/api/v1/device_relation/updateDeviceRelation`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/device/index.ts b/src/services/device/index.ts new file mode 100644 index 0000000..8ac824c --- /dev/null +++ b/src/services/device/index.ts @@ -0,0 +1,14 @@ +// @ts-ignore +/* eslint-disable */ +// API 更新时间: +// API 唯一标识: +import * as Device from './Device'; +import * as DeviceCategory from './DeviceCategory'; +import * as DeviceGroup from './DeviceGroup'; +import * as DeviceRelation from './DeviceRelation'; +export default { + Device, + DeviceCategory, + DeviceGroup, + DeviceRelation, +}; diff --git a/src/services/device/typings.d.ts b/src/services/device/typings.d.ts new file mode 100644 index 0000000..941743f --- /dev/null +++ b/src/services/device/typings.d.ts @@ -0,0 +1,222 @@ +declare namespace API { + type AllResult = { + list?: any; + }; + type Device = { + categoryFkId?: number; + code?: string; + createTime?: string; + groupFkId?: number; + id?: number; + isEnable?: boolean; + name?: string; + param?: string; + position?: string; + remark?: string; + spec?: string; + updateTime?: string; + }; + + type DeviceCategory = { + code?: string; + createTime?: string; + id?: number; + name?: string; + remark?: string; + updateTime?: string; + }; + + type RtspReq = { + /** rtsp地址 */ + url?: string; + }; + type KillRtspReq = { + /** rtsp地址 */ + pid?: number; + }; + + type RtspRes = { + host?: string; + pid?: number; + }; + + type DeviceDeviceCategoryResponse = { + deviceCategory?: DeviceCategory; + }; + + type DeviceDeviceGroupResponse = { + deviceGroup?: DeviceGroup; + }; + + type DeviceDeviceRelationResponse = { + deviceRelation?: DeviceRelation; + }; + + type DeviceDeviceResponse = { + device?: Device; + }; + + type DeviceGroup = { + address?: string; + children?: DeviceGroup[]; + code?: string; + createTime?: string; + id?: number; + isEnable?: boolean; + key?: string; + lat?: string; + lon?: string; + managerName?: string; + managerPhone?: string; + name?: string; + parentFkId?: number; + remark?: string; + telephone?: string; + updateTime?: string; + }; + + type DeviceRelation = { + createTime?: string; + deviceParentFkId?: number; + deviceSonFkId?: number; + id?: number; + updateTime?: string; + }; + + type FkResult = { + list?: any; + }; + + type GetById = { + /** 主键ID */ + id?: number; + }; + + type GetFkSelect = { + /** 关键字 */ + keyword?: string; + }; + + type IdsReq = { + ids?: number[]; + }; + + type NamesResult = { + list?: any; + }; + + type PageResult = { + list?: any; + page?: number; + pageSize?: number; + total?: number; + }; + + type Response = { + code?: number; + data?: any; + msg?: string; + success?: boolean; + }; + + type SearchDeviceCategoryParams = { + code?: string; + createTime?: string; + /** 排序方式:升序false(默认)|降序true */ + desc?: boolean; + id?: number; + /** 关键字 */ + keyword?: string; + name?: string; + /** 排序 */ + orderKey?: string; + /** 页码 */ + page?: number; + /** 每页大小 */ + pageSize?: number; + remark?: string; + updateTime?: string; + }; + + type SearchDeviceGroupParams = { + address?: string; + children?: DeviceGroup[]; + code?: string; + createTime?: string; + /** 排序方式:升序false(默认)|降序true */ + desc?: boolean; + id?: number; + isEnable?: boolean; + key?: string; + /** 关键字 */ + keyword?: string; + lat?: string; + lon?: string; + managerName?: string; + managerPhone?: string; + name?: string; + /** 排序 */ + orderKey?: string; + /** 页码 */ + page?: number; + /** 每页大小 */ + pageSize?: number; + parentFkId?: number; + remark?: string; + telephone?: string; + updateTime?: string; + }; + + type SearchDeviceParams = { + categoryFkId?: number; + code?: string; + createTime?: string; + /** 排序方式:升序false(默认)|降序true */ + desc?: boolean; + groupFkId?: number; + id?: number; + isEnable?: boolean; + /** 关键字 */ + keyword?: string; + name?: string; + /** 排序 */ + orderKey?: string; + /** 页码 */ + page?: number; + /** 每页大小 */ + pageSize?: number; + param?: string; + position?: string; + remark?: string; + spec?: string; + updateTime?: string; + }; + + type SearchDeviceRelationParams = { + createTime?: string; + /** 排序方式:升序false(默认)|降序true */ + desc?: boolean; + deviceParentFkId?: number; + deviceSonFkId?: number; + id?: number; + /** 关键字 */ + keyword?: string; + /** 排序 */ + orderKey?: string; + /** 页码 */ + page?: number; + /** 每页大小 */ + pageSize?: number; + updateTime?: string; + }; + + type Tree = { + children?: Tree[]; + key?: number; + title?: string; + }; + + type TreeResponse = { + tree?: Tree[]; + }; +} diff --git a/src/services/project/Project.ts b/src/services/project/Project.ts new file mode 100644 index 0000000..4a9fc7e --- /dev/null +++ b/src/services/project/Project.ts @@ -0,0 +1,162 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 创建基础Project POST /project/createProject */ +export async function postProjectCreateProject( + body: API.Project, + options?: { [key: string]: any }, +) { + return request(`/api/v1/project/createProject`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除Project DELETE /project/deleteProject */ +export async function deleteProjectDeleteProject( + body: API.Project, + options?: { [key: string]: any }, +) { + return request(`/api/v1/project/deleteProject`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除选中Project DELETE /project/deleteProjectByIds */ +export async function deleteProjectDeleteProjectByIds( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request(`/api/v1/project/deleteProjectByIds`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 根据组id获得项目id和name POST /project/getProjectByGroupId */ +export async function postProjectGetProjectByGroupId( + body: API.GetById, + options?: { [key: string]: any }, +) { + return request(`/api/v1/project/getProjectByGroupId`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 根据id获取Project POST /project/getProjectById */ +export async function postProjectGetProjectById( + body: API.GetById, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/project/getProjectById`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获取Project外键列表 POST /project/getProjectFkSelect */ +export async function postProjectGetProjectFkSelect( + body: API.GetFkSelect, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/project/getProjectFkSelect`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 分页获取Project列表 POST /project/getProjectList */ +export async function postProjectGetProjectList( + body: API.SearchProjectParams, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/project/getProjectList`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获得Project名称列表 POST /project/getProjectNames */ +export async function postProjectGetProjectNames( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/project/getProjectNames`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 修改基础Project PUT /project/updateProject */ +export async function putProjectUpdateProject(body: API.Project, options?: { [key: string]: any }) { + return request(`/api/v1/project/updateProject`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 更新项目的关联组 PUT /project/updateProjectGroup */ +export async function putProjectUpdateProjectGroup( + body: API.UpdateProjectGroupParams, + options?: { [key: string]: any }, +) { + return request(`/api/v1/project/updateProjectGroup`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/project/ProjectModelConfig.ts b/src/services/project/ProjectModelConfig.ts new file mode 100644 index 0000000..ffa5852 --- /dev/null +++ b/src/services/project/ProjectModelConfig.ts @@ -0,0 +1,111 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 创建基础ProjectModelConfig POST /project_model_config/createProjectModelConfig */ +export async function postProjectModelConfigCreateProjectModelConfig( + body: API.ProjectModelConfig, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/project_model_config/createProjectModelConfig`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 删除ProjectModelConfig DELETE /project_model_config/deleteProjectModelConfig */ +export async function deleteProjectModelConfigDeleteProjectModelConfig( + body: API.ProjectModelConfig, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/project_model_config/deleteProjectModelConfig`, + { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 删除选中ProjectModelConfig DELETE /project_model_config/deleteProjectModelConfigByIds */ +export async function deleteProjectModelConfigDeleteProjectModelConfigByIds( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/project_model_config/deleteProjectModelConfigByIds`, + { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 根据id获取ProjectModelConfig POST /project_model_config/getProjectModelConfigById */ +export async function postProjectModelConfigGetProjectModelConfigById( + body: API.GetById, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/project_model_config/getProjectModelConfigById`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 分页获取ProjectModelConfig列表 POST /project_model_config/getProjectModelConfigList */ +export async function postProjectModelConfigGetProjectModelConfigList( + body: API.SearchProjectModelConfigParams, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/project_model_config/getProjectModelConfigList`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 修改基础ProjectModelConfig PUT /project_model_config/updateProjectModelConfig */ +export async function putProjectModelConfigUpdateProjectModelConfig( + body: API.ProjectModelConfig, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/project_model_config/updateProjectModelConfig`, + { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} diff --git a/src/services/project/index.ts b/src/services/project/index.ts new file mode 100644 index 0000000..46874f5 --- /dev/null +++ b/src/services/project/index.ts @@ -0,0 +1,11 @@ +// @ts-ignore +/* eslint-disable */ +// API 更新时间: +// API 唯一标识: +import * as Project from './Project'; +import * as ProjectModelConfig from './ProjectModelConfig'; + +export default { + Project, + ProjectModelConfig, +}; diff --git a/src/services/project/typings.d.ts b/src/services/project/typings.d.ts new file mode 100644 index 0000000..acf0ff7 --- /dev/null +++ b/src/services/project/typings.d.ts @@ -0,0 +1,126 @@ +declare namespace API { + type FkResult = { + list?: any; + }; + + type GetById = { + /** 主键ID */ + id?: number; + }; + + type GetFkSelect = { + /** 关键字 */ + keyword?: string; + }; + + type IdsReq = { + ids?: number[]; + }; + + type NamesResult = { + list?: any; + }; + + type PageResult = { + list?: any; + page?: number; + pageSize?: number; + total?: number; + }; + + type Project = { + code?: string; + createTime?: string; + groupIds?: number[]; + id?: number; + inferConfig?: Record; + info?: string; + isEnable?: boolean; + name?: string; + projectFilePath?: string; + remark?: string; + updateTime?: string; + }; + + type ProjectModelConfig = { + createTime?: string; + /** 设备是一个 以,隔开的存储device id的字符例如 1,2 */ + devices?: string; + id?: number; + modelConfig?: Record; + modelFkId?: number; + modelVersionFkId?: number; + projectConfig?: Record; + projectGroupFkId?: number; + remark?: string; + updateTime?: string; + }; + + type ProjectProjectModelConfigResponse = { + ProjectModelConfig?: ProjectModelConfig; + }; + + type ProjectProjectResponse = { + project?: Project; + }; + + type Response = { + code?: number; + data?: any; + msg?: string; + success?: boolean; + }; + + type SearchProjectModelConfigParams = { + createTime?: string; + /** 排序方式:升序false(默认)|降序true */ + desc?: boolean; + /** 设备是一个 以,隔开的存储device id的字符例如 1,2 */ + devices?: string; + id?: number; + /** 关键字 */ + keyword?: string; + modelConfig?: Record; + modelFkId?: number; + modelVersionFkId?: number; + /** 排序 */ + orderKey?: string; + /** 页码 */ + page?: number; + /** 每页大小 */ + pageSize?: number; + projectConfig?: Record; + projectGroupFkId?: number; + remark?: string; + updateTime?: string; + }; + + type SearchProjectParams = { + code?: string; + createTime?: string; + /** 排序方式:升序false(默认)|降序true */ + desc?: boolean; + groupIds?: number[]; + id?: number; + inferConfig?: Record; + info?: string; + isEnable?: boolean; + /** 关键字 */ + keyword?: string; + name?: string; + /** 排序 */ + orderKey?: string; + /** 页码 */ + page?: number; + /** 每页大小 */ + pageSize?: number; + projectFilePath?: string; + remark?: string; + updateTime?: string; + }; + + type UpdateProjectGroupParams = { + groupIds?: number[]; + projectId?: number; + }; +} diff --git a/src/services/resource/AlgorithmModel.ts b/src/services/resource/AlgorithmModel.ts new file mode 100644 index 0000000..c7bce76 --- /dev/null +++ b/src/services/resource/AlgorithmModel.ts @@ -0,0 +1,156 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 创建基础AlgorithmModel POST /algorithm_model/createAlgorithmModel */ +export async function postAlgorithmModelCreateAlgorithmModel( + body: API.AlgorithmModel, + options?: { [key: string]: any }, +) { + return request(`/api/v1/algorithm_model/createAlgorithmModel`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除AlgorithmModel DELETE /algorithm_model/deleteAlgorithmModel */ +export async function deleteAlgorithmModelDeleteAlgorithmModel( + body: API.AlgorithmModel, + options?: { [key: string]: any }, +) { + return request(`/api/v1/algorithm_model/deleteAlgorithmModel`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除选中AlgorithmModel DELETE /algorithm_model/deleteAlgorithmModelByIds */ +export async function deleteAlgorithmModelDeleteAlgorithmModelByIds( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/algorithm_model/deleteAlgorithmModelByIds`, + { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 根据id获取AlgorithmModel POST /algorithm_model/getAlgorithmModelById */ +export async function postAlgorithmModelGetAlgorithmModelById( + body: API.GetById, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/algorithm_model/getAlgorithmModelById`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获取AlgorithmModel外键列表 POST /algorithm_model/getAlgorithmModelFkSelect */ +export async function postAlgorithmModelGetAlgorithmModelFkSelect( + body: API.GetFkSelect, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/algorithm_model/getAlgorithmModelFkSelect`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 分页获取AlgorithmModel列表 POST /algorithm_model/getAlgorithmModelList */ +export async function postAlgorithmModelGetAlgorithmModelList( + body: API.SearchAlgorithmModelParams, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/algorithm_model/getAlgorithmModelList`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获得AlgorithmModel名称列表 POST /algorithm_model/getAlgorithmModelNames */ +export async function postAlgorithmModelGetAlgorithmModelNames( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/algorithm_model/getAlgorithmModelNames`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 修改基础AlgorithmModel PUT /algorithm_model/updateAlgorithmModel */ +export async function putAlgorithmModelUpdateAlgorithmModel( + body: API.AlgorithmModel, + options?: { [key: string]: any }, +) { + return request(`/api/v1/algorithm_model/updateAlgorithmModel`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 根据id获取所有的版本 POST /algorithm_model/getAllVersionsById */ +export async function postAlgorithmModelGetAllVersionsById( + body: API.GetById, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/algorithm_model/getAllVersionsById`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} diff --git a/src/services/resource/BusinessImage.ts b/src/services/resource/BusinessImage.ts new file mode 100644 index 0000000..d59635f --- /dev/null +++ b/src/services/resource/BusinessImage.ts @@ -0,0 +1,138 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 创建基础BusinessImage POST /business_image/createBusinessImage */ +export async function postBusinessImageCreateBusinessImage( + body: API.BusinessImage, + options?: { [key: string]: any }, +) { + return request(`/api/v1/business_image/createBusinessImage`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除BusinessImage DELETE /business_image/deleteBusinessImage */ +export async function deleteBusinessImageDeleteBusinessImage( + body: API.BusinessImage, + options?: { [key: string]: any }, +) { + return request(`/api/v1/business_image/deleteBusinessImage`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除选中BusinessImage DELETE /business_image/deleteBusinessImageByIds */ +export async function deleteBusinessImageDeleteBusinessImageByIds( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/business_image/deleteBusinessImageByIds`, + { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 根据id获取BusinessImage POST /business_image/getBusinessImageById */ +export async function postBusinessImageGetBusinessImageById( + body: API.GetById, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/business_image/getBusinessImageById`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获取BusinessImage外键列表 POST /business_image/getBusinessImageFkSelect */ +export async function postBusinessImageGetBusinessImageFkSelect( + body: API.GetFkSelect, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/business_image/getBusinessImageFkSelect`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 分页获取BusinessImage列表 POST /business_image/getBusinessImageList */ +export async function postBusinessImageGetBusinessImageList( + body: API.SearchBusinessImageParams, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/business_image/getBusinessImageList`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获得BusinessImage名称列表 POST /business_image/getBusinessImageNames */ +export async function postBusinessImageGetBusinessImageNames( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/business_image/getBusinessImageNames`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 修改基础BusinessImage PUT /business_image/updateBusinessImage */ +export async function putBusinessImageUpdateBusinessImage( + body: API.BusinessImage, + options?: { [key: string]: any }, +) { + return request(`/api/v1/business_image/updateBusinessImage`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/resource/ModelCategory.ts b/src/services/resource/ModelCategory.ts new file mode 100644 index 0000000..ef047bd --- /dev/null +++ b/src/services/resource/ModelCategory.ts @@ -0,0 +1,138 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 创建基础ModelCategory POST /model_category/createModelCategory */ +export async function postModelCategoryCreateModelCategory( + body: API.ModelCategory, + options?: { [key: string]: any }, +) { + return request(`/api/v1/model_category/createModelCategory`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除ModelCategory DELETE /model_category/deleteModelCategory */ +export async function deleteModelCategoryDeleteModelCategory( + body: API.ModelCategory, + options?: { [key: string]: any }, +) { + return request(`/api/v1/model_category/deleteModelCategory`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除选中ModelCategory DELETE /model_category/deleteModelCategoryByIds */ +export async function deleteModelCategoryDeleteModelCategoryByIds( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/model_category/deleteModelCategoryByIds`, + { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 根据id获取ModelCategory POST /model_category/getModelCategoryById */ +export async function postModelCategoryGetModelCategoryById( + body: API.GetById, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/model_category/getModelCategoryById`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获取ModelCategory外键列表 POST /model_category/getModelCategoryFkSelect */ +export async function postModelCategoryGetModelCategoryFkSelect( + body: API.GetFkSelect, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/model_category/getModelCategoryFkSelect`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 分页获取ModelCategory列表 POST /model_category/getModelCategoryList */ +export async function postModelCategoryGetModelCategoryList( + body: API.SearchModelCategoryParams, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/model_category/getModelCategoryList`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获得ModelCategory名称列表 POST /model_category/getModelCategoryNames */ +export async function postModelCategoryGetModelCategoryNames( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/model_category/getModelCategoryNames`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 修改基础ModelCategory PUT /model_category/updateModelCategory */ +export async function putModelCategoryUpdateModelCategory( + body: API.ModelCategory, + options?: { [key: string]: any }, +) { + return request(`/api/v1/model_category/updateModelCategory`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/resource/ModelImage.ts b/src/services/resource/ModelImage.ts new file mode 100644 index 0000000..6f3031b --- /dev/null +++ b/src/services/resource/ModelImage.ts @@ -0,0 +1,135 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 创建基础ModelImage POST /model_image/createModelImage */ +export async function postModelImageCreateModelImage( + body: API.ModelImage, + options?: { [key: string]: any }, +) { + return request(`/api/v1/model_image/createModelImage`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除ModelImage DELETE /model_image/deleteModelImage */ +export async function deleteModelImageDeleteModelImage( + body: API.ModelImage, + options?: { [key: string]: any }, +) { + return request(`/api/v1/model_image/deleteModelImage`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除选中ModelImage DELETE /model_image/deleteModelImageByIds */ +export async function deleteModelImageDeleteModelImageByIds( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request(`/api/v1/model_image/deleteModelImageByIds`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 根据id获取ModelImage POST /model_image/getModelImageById */ +export async function postModelImageGetModelImageById( + body: API.GetById, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/model_image/getModelImageById`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获取ModelImage外键列表 POST /model_image/getModelImageFkSelect */ +export async function postModelImageGetModelImageFkSelect( + body: API.GetFkSelect, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/model_image/getModelImageFkSelect`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 分页获取ModelImage列表 POST /model_image/getModelImageList */ +export async function postModelImageGetModelImageList( + body: API.SearchModelImageParams, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/model_image/getModelImageList`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获得ModelImage名称列表 POST /model_image/getModelImageNames */ +export async function postModelImageGetModelImageNames( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/model_image/getModelImageNames`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 修改基础ModelImage PUT /model_image/updateModelImage */ +export async function putModelImageUpdateModelImage( + body: API.ModelImage, + options?: { [key: string]: any }, +) { + return request(`/api/v1/model_image/updateModelImage`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/resource/ModelVersion.ts b/src/services/resource/ModelVersion.ts new file mode 100644 index 0000000..dfa2c04 --- /dev/null +++ b/src/services/resource/ModelVersion.ts @@ -0,0 +1,153 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 创建基础ModelVersion POST /model_version/createModelVersion */ +export async function postModelVersionCreateModelVersion( + body: API.ModelVersion, + options?: { [key: string]: any }, +) { + return request(`/api/v1/model_version/createModelVersion`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除ModelVersion DELETE /model_version/deleteModelVersion */ +export async function deleteModelVersionDeleteModelVersion( + body: API.ModelVersion, + options?: { [key: string]: any }, +) { + return request(`/api/v1/model_version/deleteModelVersion`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除选中ModelVersion DELETE /model_version/deleteModelVersionByIds */ +export async function deleteModelVersionDeleteModelVersionByIds( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request(`/api/v1/model_version/deleteModelVersionByIds`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 根据id获取ModelVersion POST /model_version/getModelVersionById */ +export async function postModelVersionGetModelVersionById( + body: API.GetById, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/model_version/getModelVersionById`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获取ModelVersion外键列表 POST /model_version/getModelVersionFkSelect */ +export async function postModelVersionGetModelVersionFkSelect( + body: API.GetFkSelect, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/model_version/getModelVersionFkSelect`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 分页获取ModelVersion列表 POST /model_version/getModelVersionList */ +export async function postModelVersionGetModelVersionList( + body: API.SearchModelVersionParams, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/model_version/getModelVersionList`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获得ModelVersion名称列表 POST /model_version/getModelVersionNames */ +export async function postModelVersionGetModelVersionNames( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/model_version/getModelVersionNames`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 修改基础ModelVersion PUT /model_version/updateModelVersion */ +export async function putModelVersionUpdateModelVersion( + body: API.ModelVersion, + options?: { [key: string]: any }, +) { + return request(`/api/v1/model_version/updateModelVersion`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 根据ids获取ModelVersion列表 POST /model_version/getModelVersionListByIds */ +export async function postModelVersionGetModelVersionListByIds( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/model_version/getModelVersionListByIds`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} diff --git a/src/services/resource/index.ts b/src/services/resource/index.ts new file mode 100644 index 0000000..37b6132 --- /dev/null +++ b/src/services/resource/index.ts @@ -0,0 +1,16 @@ +// @ts-ignore +/* eslint-disable */ +// API 更新时间: +// API 唯一标识: +import * as AlgorithmModel from './AlgorithmModel'; +import * as BusinessImage from './BusinessImage'; +import * as ModelCategory from './ModelCategory'; +import * as ModelImage from './ModelImage'; +import * as ModelVersion from './ModelVersion'; +export default { + AlgorithmModel, + BusinessImage, + ModelCategory, + ModelImage, + ModelVersion, +}; diff --git a/src/services/resource/typings.d.ts b/src/services/resource/typings.d.ts new file mode 100644 index 0000000..c3b795b --- /dev/null +++ b/src/services/resource/typings.d.ts @@ -0,0 +1,226 @@ +declare namespace API { + type ResourceModelVersionListResponse = { + modelVersions?: ModelVersion[]; + }; + type AlgorithmModel = { + categoryFkId?: number; + createTime?: string; + id?: number; + name?: string; + defaultVersionFkId?: number; + remark?: string; + updateTime?: string; + }; + + type ResourceModelVersionFkSelectResponse = { + id?: number; + name?: string; + }; + + type BusinessImage = { + configHash?: string; + createTime?: string; + id?: number; + name?: string; + path?: string; + projectFkId?: number; + remark?: string; + startCode?: string; + updateTime?: string; + version?: string; + }; + + type FkResult = { + list?: any; + }; + + type GetById = { + /** 主键ID */ + id?: number; + }; + + type GetFkSelect = { + /** 关键字 */ + keyword?: string; + }; + + type IdsReq = { + ids?: number[]; + }; + + type ModelCategory = { + code?: string; + createTime?: string; + id?: number; + name?: string; + remark?: string; + updateTime?: string; + }; + + type ModelImage = { + createTime?: string; + id?: number; + modelVersionFkId?: number; + name?: string; + path?: string; + remark?: string; + startCode?: string; + updateTime?: string; + }; + + type ModelVersion = { + createTime?: string; + id?: number; + isEnable?: boolean; + modelFkId?: number; + modelConfig?: Record; + path?: string; + status?: number; + remark?: string; + startCode?: string; + updateTime?: string; + version?: string; + }; + + type NamesResult = { + list?: any; + }; + + type PageResult = { + list?: any; + page?: number; + pageSize?: number; + total?: number; + }; + + type ResourceAlgorithmModelResponse = { + algorithmModel?: AlgorithmModel; + }; + + type ResourceBusinessImageResponse = { + businessImage?: BusinessImage; + }; + + type ResourceModelCategoryResponse = { + modelCategory?: ModelCategory; + }; + + type ResourceModelImageResponse = { + modelImage?: ModelImage; + }; + + type ResourceModelVersionResponse = { + modelVersion?: ModelVersion; + }; + + type Response = { + code?: number; + data?: any; + msg?: string; + success?: boolean; + }; + + type SearchAlgorithmModelParams = { + categoryFkId?: number; + createTime?: string; + /** 排序方式:升序false(默认)|降序true */ + desc?: boolean; + id?: number; + /** 关键字 */ + keyword?: string; + name?: string; + /** 排序 */ + orderKey?: string; + /** 页码 */ + page?: number; + /** 每页大小 */ + pageSize?: number; + remark?: string; + updateTime?: string; + }; + + type SearchBusinessImageParams = { + configHash?: string; + createTime?: string; + /** 排序方式:升序false(默认)|降序true */ + desc?: boolean; + id?: number; + /** 关键字 */ + keyword?: string; + name?: string; + /** 排序 */ + orderKey?: string; + /** 页码 */ + page?: number; + /** 每页大小 */ + pageSize?: number; + path?: string; + projectFkId?: number; + remark?: string; + startCode?: string; + updateTime?: string; + version?: string; + }; + + type SearchModelCategoryParams = { + code?: string; + createTime?: string; + /** 排序方式:升序false(默认)|降序true */ + desc?: boolean; + id?: number; + /** 关键字 */ + keyword?: string; + name?: string; + /** 排序 */ + orderKey?: string; + /** 页码 */ + page?: number; + /** 每页大小 */ + pageSize?: number; + remark?: string; + updateTime?: string; + }; + + type SearchModelImageParams = { + createTime?: string; + /** 排序方式:升序false(默认)|降序true */ + desc?: boolean; + id?: number; + /** 关键字 */ + keyword?: string; + modelVersionFkId?: number; + name?: string; + /** 排序 */ + orderKey?: string; + /** 页码 */ + page?: number; + /** 每页大小 */ + pageSize?: number; + path?: string; + remark?: string; + startCode?: string; + updateTime?: string; + }; + + type SearchModelVersionParams = { + createTime?: string; + /** 排序方式:升序false(默认)|降序true */ + desc?: boolean; + id?: number; + isEnable?: boolean; + /** 关键字 */ + keyword?: string; + modelFkId?: number; + /** 排序 */ + orderKey?: string; + /** 页码 */ + page?: number; + /** 每页大小 */ + pageSize?: number; + path?: string; + remark?: string; + startCode?: string; + updateTime?: string; + version?: string; + }; +} diff --git a/src/services/swagger/index.ts b/src/services/swagger/index.ts new file mode 100644 index 0000000..83cf97c --- /dev/null +++ b/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/src/services/swagger/pet.ts b/src/services/swagger/pet.ts new file mode 100644 index 0000000..b887475 --- /dev/null +++ b/src/services/swagger/pet.ts @@ -0,0 +1,153 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 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 || {}), + }); +} + +/** Find pet by ID Returns a single pet GET /pet/${param0} */ +export async function getPetById( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.getPetByIdParams, + options?: { [key: string]: any }, +) { + const { petId: param0, ...queryParams } = params; + return request(`/pet/${param0}`, { + method: 'GET', + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** Updates a pet in the store with form data POST /pet/${param0} */ +export async function updatePetWithForm( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.updatePetWithFormParams, + body: { name?: string; status?: string }, + options?: { [key: string]: any }, +) { + 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' && !(item instanceof File) ? JSON.stringify(item) : item, + ); + } + }); + + return request(`/pet/${param0}`, { + method: 'POST', + params: { ...queryParams }, + data: formData, + ...(options || {}), + }); +} + +/** Deletes a pet DELETE /pet/${param0} */ +export async function deletePet( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.deletePetParams & { + // header + api_key?: string; + }, + options?: { [key: string]: any }, +) { + const { petId: param0, ...queryParams } = params; + return request(`/pet/${param0}`, { + method: 'DELETE', + headers: {}, + params: { ...queryParams }, + ...(options || {}), + }); +} + +/** uploads an image POST /pet/${param0}/uploadImage */ +export async function uploadFile( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.uploadFileParams, + body: { additionalMetadata?: string; file?: string }, + file?: File, + options?: { [key: string]: any }, +) { + 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' && !(item instanceof File) ? JSON.stringify(item) : item, + ); + } + }); + + return request(`/pet/${param0}/uploadImage`, { + method: 'POST', + 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 new file mode 100644 index 0000000..b9c689a --- /dev/null +++ b/src/services/swagger/store.ts @@ -0,0 +1,48 @@ +// @ts-ignore +/* eslint-disable */ +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 }) { + 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( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.getOrderByIdParams, + options?: { [key: string]: any }, +) { + const { orderId: param0, ...queryParams } = params; + return request(`/store/order/${param0}`, { + method: 'GET', + 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( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.deleteOrderParams, + options?: { [key: string]: any }, +) { + const { orderId: param0, ...queryParams } = params; + return request(`/store/order/${param0}`, { + method: 'DELETE', + params: { ...queryParams }, + ...(options || {}), + }); +} diff --git a/src/services/swagger/typings.d.ts b/src/services/swagger/typings.d.ts new file mode 100644 index 0000000..d06bcfc --- /dev/null +++ b/src/services/swagger/typings.d.ts @@ -0,0 +1,112 @@ +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; + quantity?: number; + shipDate?: string; + /** Order Status */ + status?: 'placed' | 'approved' | 'delivered'; + complete?: boolean; + }; + + 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; + firstName?: string; + lastName?: string; + email?: string; + password?: string; + phone?: string; + /** User Status */ + userStatus?: number; + }; +} diff --git a/src/services/swagger/user.ts b/src/services/swagger/user.ts new file mode 100644 index 0000000..4dd6f42 --- /dev/null +++ b/src/services/swagger/user.ts @@ -0,0 +1,100 @@ +// @ts-ignore +/* eslint-disable */ +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 }) { + return request('/user', { + method: 'POST', + data: body, + ...(options || {}), + }); +} + +/** 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[], + 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( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.loginUserParams, + 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 || {}), + }); +} diff --git a/src/services/system/Api.ts b/src/services/system/Api.ts new file mode 100644 index 0000000..d1e2e04 --- /dev/null +++ b/src/services/system/Api.ts @@ -0,0 +1,108 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 创建基础api POST /api/createApi */ +export async function postApiCreateApi(body: API.Api, options?: { [key: string]: any }) { + return request(`/api/v1/api/createApi`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除api DELETE /api/deleteApi */ +export async function deleteApiDeleteApi(body: API.Api, options?: { [key: string]: any }) { + return request(`/api/v1/api/deleteApi`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除选中Api DELETE /api/deleteApisByIds */ +export async function deleteApiDeleteApisByIds(body: API.IdsReq, options?: { [key: string]: any }) { + return request(`/api/v1/api/deleteApisByIds`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 刷新casbin缓存 GET /api/freshCasbin */ +export async function getApiFreshCasbin(options?: { [key: string]: any }) { + return request(`/api/v1/api/freshCasbin`, { + method: 'GET', + ...(options || {}), + }); +} + +/** 获取所有的Api 不分页 POST /api/getAllApis */ +export async function postApiGetAllApis(options?: { [key: string]: any }) { + return request( + `/api/v1/api/getAllApis`, + { + method: 'POST', + ...(options || {}), + }, + ); +} + +/** 获取所有的Api 不分页 POST /api/getAllApisByGroup */ +export async function postApiGetAllApisByGroup(options?: { [key: string]: any }) { + return request( + `/api/v1/api/getAllApisByGroup`, + { + method: 'POST', + ...(options || {}), + }, + ); +} + +/** 根据id获取api POST /api/getApiById */ +export async function postApiGetApiById(body: API.GetById, options?: { [key: string]: any }) { + return request(`/api/v1/api/getApiById`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 分页获取API列表 POST /api/getApiList */ +export async function postApiGetApiList( + body: API.SearchApiParams, + options?: { [key: string]: any }, +) { + return request(`/api/v1/api/getApiList`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 修改基础api PUT /api/updateApi */ +export async function putApiUpdateApi(body: API.Api, options?: { [key: string]: any }) { + return request(`/api/v1/api/updateApi`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/system/Base.ts b/src/services/system/Base.ts new file mode 100644 index 0000000..c9cef6c --- /dev/null +++ b/src/services/system/Base.ts @@ -0,0 +1,26 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 生成验证码 POST /base/captcha */ +export async function postBaseCaptcha(options?: { [key: string]: any }) { + return request( + `/api/v1/base/captcha`, + { + method: 'POST', + ...(options || {}), + }, + ); +} + +/** 用户登录 POST /base/login */ +export async function postBaseLogin(body: API.Login, options?: { [key: string]: any }) { + return request(`/api/v1/base/login`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/system/Casbin.ts b/src/services/system/Casbin.ts new file mode 100644 index 0000000..3583653 --- /dev/null +++ b/src/services/system/Casbin.ts @@ -0,0 +1,36 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 获取权限列表 POST /casbin/getPolicyPathByRoleId */ +export async function postCasbinGetPolicyPathByRoleId( + body: API.CasbinInReceive, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/casbin/getPolicyPathByRoleId`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 更新角色api权限 POST /casbin/UpdateCasbin */ +export async function postCasbinUpdateCasbin( + body: API.CasbinInReceive, + options?: { [key: string]: any }, +) { + return request(`/api/v1/casbin/UpdateCasbin`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/system/CheckDB.ts b/src/services/system/CheckDB.ts new file mode 100644 index 0000000..5b81e97 --- /dev/null +++ b/src/services/system/CheckDB.ts @@ -0,0 +1,14 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 初始化用户数据库 POST /init/checkdb */ +export async function postInitCheckdb(options?: { [key: string]: any }) { + return request; msg?: string }>( + `/api/v1/init/checkdb`, + { + method: 'POST', + ...(options || {}), + }, + ); +} diff --git a/src/services/system/Department.ts b/src/services/system/Department.ts new file mode 100644 index 0000000..22aa036 --- /dev/null +++ b/src/services/system/Department.ts @@ -0,0 +1,139 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 创建基础department POST /department/createDepartment */ +export async function postDepartmentCreateDepartment( + body: API.Department, + options?: { [key: string]: any }, +) { + return request(`/api/v1/department/createDepartment`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除department DELETE /department/deleteDepartment */ +export async function deleteDepartmentDeleteDepartment( + body: API.Department, + options?: { [key: string]: any }, +) { + return request(`/api/v1/department/deleteDepartment`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除选中Department DELETE /department/deleteDepartmentsByIds */ +export async function deleteDepartmentDeleteDepartmentsByIds( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request(`/api/v1/department/deleteDepartmentsByIds`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 根据id获取department POST /department/getDepartmentById */ +export async function postDepartmentGetDepartmentById( + body: API.GetById, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/department/getDepartmentById`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 分页获取角色列表 POST /department/getDepartmentFkSelect */ +export async function postDepartmentGetDepartmentFkSelect(options?: { [key: string]: any }) { + return request( + `/api/v1/department/getDepartmentFkSelect`, + { + method: 'POST', + ...(options || {}), + }, + ); +} + +/** 分页获取Department列表 POST /department/getDepartmentList */ +export async function postDepartmentGetDepartmentList( + body: API.PageInfo, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/department/getDepartmentList`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获得名称列表 POST /department/getDepartmentNames */ +export async function postDepartmentGetDepartmentNames( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/department/getDepartmentNames`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获取部门树 POST /department/getDepartmentTree */ +export async function postDepartmentGetDepartmentTree(options?: { [key: string]: any }) { + return request( + `/api/v1/department/getDepartmentTree`, + { + method: 'POST', + ...(options || {}), + }, + ); +} + +/** 修改基础department PUT /department/updateDepartment */ +export async function putDepartmentUpdateDepartment( + body: API.Department, + options?: { [key: string]: any }, +) { + return request(`/api/v1/department/updateDepartment`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/system/Dictionary.ts b/src/services/system/Dictionary.ts new file mode 100644 index 0000000..cae1e8d --- /dev/null +++ b/src/services/system/Dictionary.ts @@ -0,0 +1,84 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 创建Dictionary POST /sysDictionary/createDictionary */ +export async function postSysDictionaryCreateDictionary( + body: API.Dictionary, + options?: { [key: string]: any }, +) { + return request(`/api/v1/sysDictionary/createDictionary`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除Dictionary DELETE /sysDictionary/deleteDictionary */ +export async function deleteSysDictionaryDeleteDictionary( + body: API.Dictionary, + options?: { [key: string]: any }, +) { + return request(`/api/v1/sysDictionary/deleteDictionary`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 用id查询Dictionary GET /sysDictionary/findDictionary */ +export async function getSysDictionaryFindDictionary( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.getSysDictionaryFindDictionaryParams, + options?: { [key: string]: any }, +) { + return request; msg?: string }>( + `/api/v1/sysDictionary/findDictionary`, + { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }, + ); +} + +/** 分页获取Dictionary列表 GET /sysDictionary/getDictionaryList */ +export async function getSysDictionaryGetDictionaryList( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.getSysDictionaryGetDictionaryListParams, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/sysDictionary/getDictionaryList`, + { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }, + ); +} + +/** 更新Dictionary PUT /sysDictionary/updateDictionary */ +export async function putSysDictionaryUpdateDictionary( + body: API.Dictionary, + options?: { [key: string]: any }, +) { + return request(`/api/v1/sysDictionary/updateDictionary`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/system/DictionaryDetail.ts b/src/services/system/DictionaryDetail.ts new file mode 100644 index 0000000..0c3b13e --- /dev/null +++ b/src/services/system/DictionaryDetail.ts @@ -0,0 +1,93 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 创建DictionaryDetail POST /sysDictionaryDetail/createDictionaryDetail */ +export async function postSysDictionaryDetailCreateDictionaryDetail( + body: API.DictionaryDetail, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/sysDictionaryDetail/createDictionaryDetail`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 删除DictionaryDetail DELETE /sysDictionaryDetail/deleteDictionaryDetail */ +export async function deleteSysDictionaryDetailDeleteDictionaryDetail( + body: API.DictionaryDetail, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/sysDictionaryDetail/deleteDictionaryDetail`, + { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 用id查询DictionaryDetail GET /sysDictionaryDetail/findDictionaryDetail */ +export async function getSysDictionaryDetailFindDictionaryDetail( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.getSysDictionaryDetailFindDictionaryDetailParams, + options?: { [key: string]: any }, +) { + return request; msg?: string }>( + `/api/v1/sysDictionaryDetail/findDictionaryDetail`, + { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }, + ); +} + +/** 分页获取DictionaryDetail列表 GET /sysDictionaryDetail/getDictionaryDetailList */ +export async function getSysDictionaryDetailGetDictionaryDetailList( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.getSysDictionaryDetailGetDictionaryDetailListParams, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/sysDictionaryDetail/getDictionaryDetailList`, + { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }, + ); +} + +/** 更新DictionaryDetail PUT /sysDictionaryDetail/updateDictionaryDetail */ +export async function putSysDictionaryDetailUpdateDictionaryDetail( + body: API.DictionaryDetail, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/sysDictionaryDetail/updateDictionaryDetail`, + { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} diff --git a/src/services/system/File.ts b/src/services/system/File.ts new file mode 100644 index 0000000..bd5c60e --- /dev/null +++ b/src/services/system/File.ts @@ -0,0 +1,68 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 获取文件路径 POST /file/getFileById */ +export async function postFileGetFileById(body: API.GetById, options?: { [key: string]: any }) { + return request(`/api/v1/file/getFileById`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 上传照片 POST /file/uploadImage */ +export async function postFileUploadImage(body: {}, file?: File, options?: { [key: string]: any }) { + 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' && !(item instanceof File) ? JSON.stringify(item) : item, + ); + } + }); + + return request(`/api/v1/file/uploadImage`, { + method: 'POST', + data: formData, + requestType: 'form', + ...(options || {}), + }); +} + +export async function postFileUploadFile(body: {}, file?: File, options?: { [key: string]: any }) { + 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' && !(item instanceof File) ? JSON.stringify(item) : item, + ); + } + }); + + return request(`/api/v1/file/uploadFile`, { + method: 'POST', + data: formData, + requestType: 'form', + ...(options || {}), + }); +} diff --git a/src/services/system/InitDB.ts b/src/services/system/InitDB.ts new file mode 100644 index 0000000..bb8a1e0 --- /dev/null +++ b/src/services/system/InitDB.ts @@ -0,0 +1,15 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 初始化用户数据库 POST /init/initdb */ +export async function postInitInitdb(body: API.InitDB, options?: { [key: string]: any }) { + return request(`/api/v1/init/initdb`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/system/Jwt.ts b/src/services/system/Jwt.ts new file mode 100644 index 0000000..fb6d804 --- /dev/null +++ b/src/services/system/Jwt.ts @@ -0,0 +1,11 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** jwt加入黑名单 POST /jwt/jsonInBlacklist */ +export async function postJwtJsonInBlacklist(options?: { [key: string]: any }) { + return request(`/api/v1/jwt/jsonInBlacklist`, { + method: 'POST', + ...(options || {}), + }); +} diff --git a/src/services/system/Menu.ts b/src/services/system/Menu.ts new file mode 100644 index 0000000..3f92a06 --- /dev/null +++ b/src/services/system/Menu.ts @@ -0,0 +1,76 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 新增菜单 POST /menu/createMenu */ +export async function postMenuCreateMenu(body: API.Menu, options?: { [key: string]: any }) { + return request(`/api/v1/menu/createMenu`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除菜单 DELETE /menu/deleteMenu */ +export async function deleteMenuDeleteMenu(body: API.GetById, options?: { [key: string]: any }) { + return request(`/api/v1/menu/deleteMenu`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取用户动态路由 POST /menu/getMenu */ +export async function postMenuGetMenu(options?: { [key: string]: any }) { + return request( + `/api/v1/menu/getMenu`, + { + method: 'POST', + ...(options || {}), + }, + ); +} + +/** 分页获取基础menu列表 POST /menu/getMenuList */ +export async function postMenuGetMenuList(body: API.PageInfo, options?: { [key: string]: any }) { + return request( + `/api/v1/menu/getMenuList`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获取用户菜单树 POST /menu/getMenuTree */ +export async function postMenuGetMenuTree(options?: { [key: string]: any }) { + return request( + `/api/v1/menu/getMenuTree`, + { + method: 'POST', + ...(options || {}), + }, + ); +} + +/** 更新菜单 PUT /menu/updateMenu */ +export async function putMenuUpdateMenu(body: API.Menu, options?: { [key: string]: any }) { + return request(`/api/v1/menu/updateMenu`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/system/OperationRecord.ts b/src/services/system/OperationRecord.ts new file mode 100644 index 0000000..60cab5a --- /dev/null +++ b/src/services/system/OperationRecord.ts @@ -0,0 +1,93 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 创建OperationRecord POST /sysOperationRecord/createOperationRecord */ +export async function postSysOperationRecordCreateOperationRecord( + body: API.OperationRecord, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/sysOperationRecord/createOperationRecord`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 删除OperationRecord DELETE /sysOperationRecord/deleteOperationRecord */ +export async function deleteSysOperationRecordDeleteOperationRecord( + body: API.OperationRecord, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/sysOperationRecord/deleteOperationRecord`, + { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 批量删除OperationRecord DELETE /sysOperationRecord/deleteOperationRecordByIds */ +export async function deleteSysOperationRecordDeleteOperationRecordByIds( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/sysOperationRecord/deleteOperationRecordByIds`, + { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 用id查询OperationRecord GET /sysOperationRecord/findOperationRecord */ +export async function getSysOperationRecordFindOperationRecord( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.getSysOperationRecordFindOperationRecordParams, + options?: { [key: string]: any }, +) { + return request; msg?: string }>( + `/api/v1/sysOperationRecord/findOperationRecord`, + { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }, + ); +} + +/** 分页获取OperationRecord列表 GET /sysOperationRecord/getOperationRecordList */ +export async function getSysOperationRecordGetOperationRecordList( + // 叠加生成的Param类型 (非body参数swagger默认没有生成对象) + params: API.getSysOperationRecordGetOperationRecordListParams, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/sysOperationRecord/getOperationRecordList`, + { + method: 'GET', + params: { + ...params, + }, + ...(options || {}), + }, + ); +} diff --git a/src/services/system/Post.ts b/src/services/system/Post.ts new file mode 100644 index 0000000..7fc5e52 --- /dev/null +++ b/src/services/system/Post.ts @@ -0,0 +1,117 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 创建基础post POST /post/createPost */ +export async function postPostCreatePost(body: API.Post, options?: { [key: string]: any }) { + return request(`/api/v1/post/createPost`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除post DELETE /post/deletePost */ +export async function deletePostDeletePost(body: API.Post, options?: { [key: string]: any }) { + return request(`/api/v1/post/deletePost`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除选中Post DELETE /post/deletePostsByIds */ +export async function deletePostDeletePostsByIds( + body: API.IdsReq, + options?: { [key: string]: any }, +) { + return request(`/api/v1/post/deletePostsByIds`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 根据id获取post POST /post/getPostById */ +export async function postPostGetPostById(body: API.GetById, options?: { [key: string]: any }) { + return request(`/api/v1/post/getPostById`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 分页获取角色列表 POST /post/getPostFkSelect */ +export async function postPostGetPostFkSelect( + body: API.GetFkSelect, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/post/getPostFkSelect`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 分页获取Post列表 POST /post/getPostList */ +export async function postPostGetPostList( + body: API.SearchPostParams, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/post/getPostList`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获得名称列表 POST /post/getPostNames */ +export async function postPostGetPostNames(body: API.IdsReq, options?: { [key: string]: any }) { + return request( + `/api/v1/post/getPostNames`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 修改基础post PUT /post/updatePost */ +export async function putPostUpdatePost(body: API.Post, options?: { [key: string]: any }) { + return request(`/api/v1/post/updatePost`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/system/Role.ts b/src/services/system/Role.ts new file mode 100644 index 0000000..5d97cab --- /dev/null +++ b/src/services/system/Role.ts @@ -0,0 +1,99 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 创建角色 POST /role/createRole */ +export async function postRoleCreateRole(body: API.Role, options?: { [key: string]: any }) { + return request( + `/api/v1/role/createRole`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 分页获取角色列表 POST /role/getRoleFkSelect */ +export async function postRoleGetRoleFkSelect( + body: API.GetFkSelect, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/role/getRoleFkSelect`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 分页获取角色列表 POST /role/getRoleList */ +export async function postRoleGetRoleList(body: API.PageInfo, options?: { [key: string]: any }) { + return request( + `/api/v1/role/getRoleList`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 获取角色权限 POST /role/getRolePermission */ +export async function postRoleGetRolePermission( + body: API.GetById, + options?: { [key: string]: any }, +) { + return request( + `/api/v1/role/getRolePermission`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 更新角色信息 PUT /role/updateRole */ +export async function putRoleUpdateRole(body: API.Role, options?: { [key: string]: any }) { + return request( + `/api/v1/role/updateRole`, + { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 更新角色权限 PUT /role/updateRolePermission */ +export async function putRoleUpdateRolePermission( + body: API.UpdateRolePermissionParams, + options?: { [key: string]: any }, +) { + return request(`/api/v1/role/updateRolePermission`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/system/System.ts b/src/services/system/System.ts new file mode 100644 index 0000000..314b898 --- /dev/null +++ b/src/services/system/System.ts @@ -0,0 +1,48 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 获取服务器信息 POST /system/getServerInfo */ +export async function postSystemGetServerInfo(options?: { [key: string]: any }) { + return request; msg?: string }>( + `/api/v1/system/getServerInfo`, + { + method: 'POST', + ...(options || {}), + }, + ); +} + +/** 获取配置文件内容 POST /system/getSystemConfig */ +export async function postSystemGetSystemConfig(options?: { [key: string]: any }) { + return request( + `/api/v1/system/getSystemConfig`, + { + method: 'POST', + ...(options || {}), + }, + ); +} + +/** 重启系统 POST /system/reloadSystem */ +export async function postSystemReloadSystem(options?: { [key: string]: any }) { + return request(`/api/v1/system/reloadSystem`, { + method: 'POST', + ...(options || {}), + }); +} + +/** 设置配置文件内容 POST /system/setSystemConfig */ +export async function postSystemSetSystemConfig( + body: API.System, + options?: { [key: string]: any }, +) { + return request(`/api/v1/system/setSystemConfig`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/system/User.ts b/src/services/system/User.ts new file mode 100644 index 0000000..12c79b6 --- /dev/null +++ b/src/services/system/User.ts @@ -0,0 +1,137 @@ +// @ts-ignore +/* eslint-disable */ +import { request } from '@umijs/max'; + +/** 用户注册账号 POST /user/admin_register */ +export async function postUserAdminRegister(body: API.Register, options?: { [key: string]: any }) { + return request( + `/api/v1/user/admin_register`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 用户修改密码 POST /user/changePassword */ +export async function postUserChangePassword( + body: API.ChangePasswordReq, + options?: { [key: string]: any }, +) { + return request(`/api/v1/user/changePassword`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 删除用户 DELETE /user/deleteUser */ +export async function deleteUserDeleteUser(body: API.GetById, options?: { [key: string]: any }) { + return request(`/api/v1/user/deleteUser`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 获取用户信息 GET /user/getUserInfo */ +export async function getUserGetUserInfo(options?: { [key: string]: any }) { + return request(`/api/v1/user/getUserInfo`, { + method: 'GET', + ...(options || {}), + }); +} + +/** 分页获取用户列表 POST /user/getUserList */ +export async function postUserGetUserList(body: API.PageInfo, options?: { [key: string]: any }) { + return request( + `/api/v1/user/getUserList`, + { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 重置用户密码 POST /user/resetPassword */ +export async function postUserResetPassword(body: API.User, options?: { [key: string]: any }) { + return request(`/api/v1/user/resetPassword`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 设置用户信息 PUT /user/SetSelfInfo */ +export async function putUserSetSelfInfo(body: API.User, options?: { [key: string]: any }) { + return request; msg?: string }>( + `/api/v1/user/SetSelfInfo`, + { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 设置用户信息 PUT /user/setUserInfo */ +export async function putUserSetUserInfo(body: API.User, options?: { [key: string]: any }) { + return request; msg?: string }>( + `/api/v1/user/setUserInfo`, + { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }, + ); +} + +/** 更改用户权限 POST /user/setUserRole */ +export async function postUserSetUserRole(body: API.SetUserRole, options?: { [key: string]: any }) { + return request(`/api/v1/user/setUserRole`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} + +/** 设置用户权限 POST /user/setUserRoles */ +export async function postUserSetUserRoles( + body: API.SetUserRoles, + options?: { [key: string]: any }, +) { + return request(`/api/v1/user/setUserRoles`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/system/index.ts b/src/services/system/index.ts new file mode 100644 index 0000000..fce1532 --- /dev/null +++ b/src/services/system/index.ts @@ -0,0 +1,38 @@ +// @ts-ignore +/* eslint-disable */ +// API 更新时间: +// API 唯一标识: +import * as Api from './Api'; +import * as Base from './Base'; +import * as Casbin from './Casbin'; +import * as CheckDB from './CheckDB'; +import * as Department from './Department'; +import * as Dictionary from './Dictionary'; +import * as DictionaryDetail from './DictionaryDetail'; +import * as File from './File'; +import * as InitDB from './InitDB'; +import * as Jwt from './Jwt'; +import * as Menu from './Menu'; +import * as OperationRecord from './OperationRecord'; +import * as Post from './Post'; +import * as Role from './Role'; +import * as System from './System'; +import * as User from './User'; +export default { + Api, + Base, + Casbin, + Department, + File, + CheckDB, + InitDB, + Jwt, + Menu, + Post, + Role, + Dictionary, + DictionaryDetail, + OperationRecord, + System, + User, +}; diff --git a/src/services/system/typings.d.ts b/src/services/system/typings.d.ts new file mode 100644 index 0000000..37ecef7 --- /dev/null +++ b/src/services/system/typings.d.ts @@ -0,0 +1,1028 @@ +declare namespace API { + type AliyunOSS = { + 'access-key-id'?: string; + 'access-key-secret'?: string; + 'base-path'?: string; + 'bucket-name'?: string; + 'bucket-url'?: string; + endpoint?: string; + }; + + type Api = { + /** api组 */ + apiGroup?: string; + createTime?: string; + /** api中文描述 */ + description?: string; + id?: number; + /** 方法:创建POST(默认)|查看GET|更新PUT|删除DELETE */ + method?: string; + /** api路径 */ + path?: string; + updateTime?: string; + }; + + type ApiGroup = { + checkable?: boolean; + children?: ApiGroupSon[]; + key?: string; + title?: string; + }; + + type ApiGroupSon = { + key?: number; + title?: string; + }; + + type Autocode = { + root?: string; + server?: string; + 'server-api'?: string; + 'server-initialize'?: string; + 'server-model'?: string; + 'server-plug'?: string; + 'server-request'?: string; + 'server-router'?: string; + 'server-service'?: string; + 'transfer-restart'?: boolean; + web?: string; + 'web-api'?: string; + 'web-form'?: string; + 'web-table'?: string; + }; + + type AwsS3 = { + 'base-url'?: string; + bucket?: string; + 'disable-ssl'?: boolean; + endpoint?: string; + 'path-prefix'?: string; + region?: string; + 's3-force-path-style'?: boolean; + 'secret-id'?: string; + 'secret-key'?: string; + }; + + type Captcha = { + /** 验证码高度 */ + 'img-height'?: number; + /** 验证码宽度 */ + 'img-width'?: number; + /** 验证码长度 */ + 'key-long'?: number; + /** 防爆破验证码开启此数,0代表每次登录都需要验证码,其他数字代表错误密码此数,如3代表错误三次后出现验证码 */ + 'open-captcha'?: number; + /** 防爆破验证码超时时间,单位:s(秒) */ + 'open-captcha-timeout'?: number; + }; + + type CasbinInfo = { + /** 方法 */ + method?: string; + /** 路径 */ + path?: string; + }; + + type CasbinInReceive = { + casbinInfos?: CasbinInfo[]; + /** 权限id */ + roleId?: number; + }; + + type ChangePasswordReq = { + /** 新密码 */ + newPassword?: string; + /** 密码 */ + password?: string; + }; + + type CORS = { + mode?: string; + whitelist?: CORSWhitelist[]; + }; + + type CORSWhitelist = { + 'allow-credentials'?: boolean; + 'allow-headers'?: string; + 'allow-methods'?: string; + 'allow-origin'?: string; + 'expose-headers'?: string; + }; + + type Department = { + children?: Department[]; + code?: string; + createTime?: string; + email?: string; + id?: number; + /** userId */ + leader?: string; + name?: string; + parentId?: number; + path?: string; + phone?: string; + remark?: string; + sort?: number; + /** 状态 */ + status?: boolean; + updateTime?: string; + }; + + type DepartmentResponse = { + department?: Department; + }; + + type Detail = { + /** 需要比较时间的字段 */ + compareField?: string; + /** 时间间隔 */ + interval?: string; + /** 需要清理的表名 */ + tableName?: string; + }; + + type Dictionary = { + createTime?: string; + /** 描述 */ + desc?: string; + id?: number; + /** 字典名(中) */ + name?: string; + /** 状态 */ + status?: boolean; + sysDictionaryDetails?: DictionaryDetail[]; + /** 字典名(英) */ + type?: string; + updateTime?: string; + }; + + type DictionaryDetail = { + createTime?: string; + id?: number; + /** 展示值 */ + label?: string; + /** 排序标记 */ + sort?: number; + /** 启用状态 */ + status?: boolean; + /** 关联标记 */ + sysDictionaryID?: number; + updateTime?: string; + /** 字典值 */ + value?: number; + }; + + type Email = { + /** 收件人 */ + from?: string; + /** 服务器地址 */ + host?: string; + /** 是否SSL */ + 'is-ssl'?: boolean; + /** 昵称 */ + nickname?: string; + /** 端口 */ + port?: number; + /** 密钥 */ + secret?: string; + /** 收件人:多个以英文逗号分隔 */ + to?: string; + }; + + type Excel = { + dir?: string; + }; + + type File = { + createTime?: string; + id?: number; + /** 文件名 */ + name?: string; + path?: string; + /** 文件标签 */ + tag?: string; + updateTime?: string; + }; + + type FileResponse = { + file?: File; + }; + + type FkResult = { + list?: any; + }; + + type GetById = { + /** 主键ID */ + id?: number; + }; + + type GetFkSelect = { + /** 关键字 */ + keyword?: string; + }; + + type getSysDictionaryDetailFindDictionaryDetailParams = { + createTime?: string; + id?: number; + /** 展示值 */ + label?: string; + /** 排序标记 */ + sort?: number; + /** 启用状态 */ + status?: boolean; + /** 关联标记 */ + sysDictionaryID?: number; + updateTime?: string; + /** 字典值 */ + value?: number; + }; + + type getSysDictionaryDetailGetDictionaryDetailListParams = { + createTime?: string; + id?: number; + /** 关键字 */ + keyword?: string; + /** 展示值 */ + label?: string; + /** 页码 */ + page?: number; + /** 每页大小 */ + pageSize?: number; + /** 排序标记 */ + sort?: number; + /** 启用状态 */ + status?: boolean; + /** 关联标记 */ + sysDictionaryID?: number; + updateTime?: string; + /** 字典值 */ + value?: number; + }; + + type getSysDictionaryFindDictionaryParams = { + createTime?: string; + /** 描述 */ + desc?: string; + id?: number; + /** 字典名(中) */ + name?: string; + /** 状态 */ + status?: boolean; + /** 字典名(英) */ + type?: string; + updateTime?: string; + }; + + type getSysDictionaryGetDictionaryListParams = { + createTime?: string; + /** 描述 */ + desc?: string; + id?: number; + /** 关键字 */ + keyword?: string; + /** 字典名(中) */ + name?: string; + /** 页码 */ + page?: number; + /** 每页大小 */ + pageSize?: number; + /** 状态 */ + status?: boolean; + /** 字典名(英) */ + type?: string; + updateTime?: string; + }; + + type getSysOperationRecordFindOperationRecordParams = { + /** 代理 */ + agent?: string; + /** 请求Body */ + body?: string; + createTime?: string; + /** 错误信息 */ + error_message?: string; + id?: number; + /** 请求ip */ + ip?: string; + /** 延迟 */ + latency?: string; + /** 请求方法 */ + method?: string; + /** 请求路径 */ + path?: string; + /** 响应Body */ + resp?: string; + /** 请求状态 */ + status?: number; + updateTime?: string; + /** 用户id */ + user_id?: number; + }; + + type getSysOperationRecordGetOperationRecordListParams = { + /** 代理 */ + agent?: string; + /** 请求Body */ + body?: string; + createTime?: string; + /** 错误信息 */ + error_message?: string; + id?: number; + /** 请求ip */ + ip?: string; + /** 关键字 */ + keyword?: string; + /** 延迟 */ + latency?: string; + /** 请求方法 */ + method?: string; + /** 页码 */ + page?: number; + /** 每页大小 */ + pageSize?: number; + /** 请求路径 */ + path?: string; + /** 响应Body */ + resp?: string; + /** 请求状态 */ + status?: number; + updateTime?: string; + /** 用户id */ + user_id?: number; + }; + + type HuaWeiObs = { + 'access-key'?: string; + bucket?: string; + endpoint?: string; + path?: string; + 'secret-key'?: string; + }; + + type IdsReq = { + ids?: number[]; + }; + + type InitDB = { + /** 数据库名 */ + dbName: string; + /** 数据库类型 */ + dbType?: string; + /** 服务器地址 */ + host?: string; + /** DB initial langauge // added by mohamed hassan to support multilanguage */ + language?: string; + /** 数据库密码 */ + password?: string; + /** 数据库连接端口 */ + port?: string; + /** 数据库用户名 */ + userName: string; + }; + + type JWT = { + /** 缓冲时间 */ + 'buffer-time'?: string; + /** 过期时间 */ + 'expires-time'?: string; + /** 签发者 */ + issuer?: string; + /** jwt签名 */ + 'signing-key'?: string; + }; + + type Language = { + dir?: string; + language?: string; + }; + + type Local = { + /** 本地文件访问路径 */ + path?: string; + /** 本地文件存储路径 */ + 'store-path'?: string; + }; + + type Login = { + captcha?: string; + captchaId?: string; + password?: string; + username?: string; + }; + + type LoginResponse = { + expiresAt?: number; + token?: string; + user?: User; + }; + + type Menu = { + children?: Menu[]; + component?: string; + createTime?: string; + externalLink?: string; + hidden?: boolean; + icon?: string; + id?: number; + key?: string; + /** 路由name */ + name?: string; + parentId?: number; + path?: string; + permission?: string; + /** 备注 */ + remark?: string; + sort?: number; + title?: string; + /** 菜单类型(M目录 C菜单 F按钮) */ + type?: string; + updateTime?: string; + }; + + type Mssql = { + /** 高级配置 */ + config?: string; + /** 数据库名 */ + 'db-name'?: string; + /** 数据库引擎,默认InnoDB */ + engine?: string; + /** 是否开启Gorm全局日志 */ + 'log-mode'?: string; + /** 是否通过zap写入日志文件 */ + 'log-zap'?: boolean; + /** 空闲中的最大连接数 */ + 'max-idle-conns'?: number; + /** 打开到数据库的最大连接数 */ + 'max-open-conns'?: number; + /** 数据库密码 */ + password?: string; + /** 服务器地址:端口 */ + path?: string; + /** :端口 */ + port?: string; + /** 全局表前缀,单独定义TableName则不生效 */ + prefix?: string; + /** 是否开启全局禁用复数,true表示开启 */ + singular?: boolean; + /** 数据库用户名 */ + username?: string; + }; + + type Mysql = { + /** 高级配置 */ + config?: string; + /** 数据库名 */ + 'db-name'?: string; + /** 数据库引擎,默认InnoDB */ + engine?: string; + /** 是否开启Gorm全局日志 */ + 'log-mode'?: string; + /** 是否通过zap写入日志文件 */ + 'log-zap'?: boolean; + /** 空闲中的最大连接数 */ + 'max-idle-conns'?: number; + /** 打开到数据库的最大连接数 */ + 'max-open-conns'?: number; + /** 数据库密码 */ + password?: string; + /** 服务器地址:端口 */ + path?: string; + /** :端口 */ + port?: string; + /** 全局表前缀,单独定义TableName则不生效 */ + prefix?: string; + /** 是否开启全局禁用复数,true表示开启 */ + singular?: boolean; + /** 数据库用户名 */ + username?: string; + }; + + type NamesResult = { + list?: any; + }; + + type OperationRecord = { + /** 代理 */ + agent?: string; + /** 请求Body */ + body?: string; + createTime?: string; + /** 错误信息 */ + error_message?: string; + id?: number; + /** 请求ip */ + ip?: string; + /** 延迟 */ + latency?: string; + /** 请求方法 */ + method?: string; + /** 请求路径 */ + path?: string; + /** 响应Body */ + resp?: string; + /** 请求状态 */ + status?: number; + updateTime?: string; + /** 用户id */ + user_id?: number; + }; + + type Oracle = { + /** 高级配置 */ + config?: string; + /** 数据库名 */ + 'db-name'?: string; + /** 数据库引擎,默认InnoDB */ + engine?: string; + /** 是否开启Gorm全局日志 */ + 'log-mode'?: string; + /** 是否通过zap写入日志文件 */ + 'log-zap'?: boolean; + /** 空闲中的最大连接数 */ + 'max-idle-conns'?: number; + /** 打开到数据库的最大连接数 */ + 'max-open-conns'?: number; + /** 数据库密码 */ + password?: string; + /** 服务器地址:端口 */ + path?: string; + /** :端口 */ + port?: string; + /** 全局表前缀,单独定义TableName则不生效 */ + prefix?: string; + /** 是否开启全局禁用复数,true表示开启 */ + singular?: boolean; + /** 数据库用户名 */ + username?: string; + }; + + type PageInfo = { + /** 关键字 */ + keyword?: string; + /** 页码 */ + page?: number; + /** 每页大小 */ + pageSize?: number; + }; + + type PageResult = { + list?: any; + page?: number; + pageSize?: number; + total?: number; + }; + + type Pgsql = { + /** 高级配置 */ + config?: string; + /** 数据库名 */ + 'db-name'?: string; + /** 数据库引擎,默认InnoDB */ + engine?: string; + /** 是否开启Gorm全局日志 */ + 'log-mode'?: string; + /** 是否通过zap写入日志文件 */ + 'log-zap'?: boolean; + /** 空闲中的最大连接数 */ + 'max-idle-conns'?: number; + /** 打开到数据库的最大连接数 */ + 'max-open-conns'?: number; + /** 数据库密码 */ + password?: string; + /** 服务器地址:端口 */ + path?: string; + /** :端口 */ + port?: string; + /** 全局表前缀,单独定义TableName则不生效 */ + prefix?: string; + /** 是否开启全局禁用复数,true表示开启 */ + singular?: boolean; + /** 数据库用户名 */ + username?: string; + }; + + type PolicyPathResponse = { + paths?: CasbinInfo[]; + }; + + type Post = { + code?: string; + createTime?: string; + id?: number; + name?: string; + remark?: string; + sort?: number; + /** 状态 */ + status?: boolean; + updateTime?: string; + }; + + type PostResponse = { + post?: Post; + }; + + type Qiniu = { + /** 秘钥AK */ + 'access-key'?: string; + /** 空间名称 */ + bucket?: string; + /** CDN加速域名 */ + 'img-path'?: string; + /** 秘钥SK */ + 'secret-key'?: string; + /** 上传是否使用CDN上传加速 */ + 'use-cdn-domains'?: boolean; + /** 是否使用https */ + 'use-https'?: boolean; + /** 存储区域 */ + zone?: string; + }; + + type Redis = { + /** 服务器地址:端口 */ + addr?: string; + /** redis的哪个数据库 */ + db?: number; + /** 密码 */ + password?: string; + }; + + type Register = { + avatarId?: number; + deptId?: number; + email?: string; + enable?: boolean; + nickName?: string; + passWord?: string; + phone?: string; + postId?: number; + /** 多岗位 */ + postIds?: string; + roleId?: number; + /** 多角色 */ + roleIds?: string; + userName?: string; + }; + + type Response = { + code?: number; + data?: any; + msg?: string; + success?: boolean; + }; + + type Role = { + apiIds?: string; + code?: string; + createTime?: string; + dataScope?: string; + deptIds?: string; + id?: number; + menuIds?: string; + name?: string; + remark?: string; + sort?: number; + /** 状态 */ + status?: boolean; + updateTime?: string; + }; + + type RolePermissionResponse = { + apiIds?: number[]; + dataScope?: string; + deptIds?: number[]; + menuIds?: number[]; + roleId?: number; + }; + + type RoleResponse = { + role?: Role; + }; + + type RoleSelectResponse = { + label?: string; + value?: number; + }; + + type Route = { + access?: string; + component?: string; + icon?: string; + key?: string; + name?: string; + path?: string; + routes?: Route[]; + }; + + type RoutesResponse = { + routes?: Route[]; + }; + + type SearchApiParams = { + /** api组 */ + apiGroup?: string; + createTime?: string; + /** 排序方式:升序false(默认)|降序true */ + desc?: boolean; + /** api中文描述 */ + description?: string; + id?: number; + /** 关键字 */ + keyword?: string; + /** 方法:创建POST(默认)|查看GET|更新PUT|删除DELETE */ + method?: string; + /** 排序 */ + orderKey?: string; + /** 页码 */ + page?: number; + /** 每页大小 */ + pageSize?: number; + /** api路径 */ + path?: string; + updateTime?: string; + }; + + type SearchPostParams = { + code?: string; + createTime?: string; + /** 排序方式:升序false(默认)|降序true */ + desc?: boolean; + id?: number; + /** 关键字 */ + keyword?: string; + name?: string; + /** 排序 */ + orderKey?: string; + /** 页码 */ + page?: number; + /** 每页大小 */ + pageSize?: number; + remark?: string; + sort?: number; + /** 状态 */ + status?: boolean; + updateTime?: string; + }; + + type Server = { + 'aliyun-oss'?: AliyunOSS; + /** auto */ + autocode?: Autocode; + 'aws-s3'?: AwsS3; + captcha?: Captcha; + /** 跨域配置 */ + cors?: CORS; + 'db-list'?: SpecializedDB[]; + email?: Email; + excel?: Excel; + 'hua-wei-obs'?: HuaWeiObs; + jwt?: JWT; + language?: Language; + /** oss */ + local?: Local; + mssql?: Mssql; + /** gorm */ + mysql?: Mysql; + oracle?: Oracle; + pgsql?: Pgsql; + qiniu?: Qiniu; + redis?: Redis; + sqlite?: Sqlite; + system?: System; + 'tencent-cos'?: TencentCOS; + timer?: Timer; + zap?: Zap; + }; + + type SetUserRole = { + /** 角色ID */ + roleId?: number; + }; + + type SetUserRoles = { + id?: number; + /** 角色ID */ + roleIds?: number[]; + }; + + type SpecializedDB = { + 'alias-name'?: string; + /** 高级配置 */ + config?: string; + /** 数据库名 */ + 'db-name'?: string; + disable?: boolean; + /** 数据库引擎,默认InnoDB */ + engine?: string; + /** 是否开启Gorm全局日志 */ + 'log-mode'?: string; + /** 是否通过zap写入日志文件 */ + 'log-zap'?: boolean; + /** 空闲中的最大连接数 */ + 'max-idle-conns'?: number; + /** 打开到数据库的最大连接数 */ + 'max-open-conns'?: number; + /** 数据库密码 */ + password?: string; + /** 服务器地址:端口 */ + path?: string; + /** :端口 */ + port?: string; + /** 全局表前缀,单独定义TableName则不生效 */ + prefix?: string; + /** 是否开启全局禁用复数,true表示开启 */ + singular?: boolean; + type?: string; + /** 数据库用户名 */ + username?: string; + }; + + type Sqlite = { + /** 高级配置 */ + config?: string; + /** 数据库名 */ + 'db-name'?: string; + /** 数据库引擎,默认InnoDB */ + engine?: string; + /** 是否开启Gorm全局日志 */ + 'log-mode'?: string; + /** 是否通过zap写入日志文件 */ + 'log-zap'?: boolean; + /** 空闲中的最大连接数 */ + 'max-idle-conns'?: number; + /** 打开到数据库的最大连接数 */ + 'max-open-conns'?: number; + /** 数据库密码 */ + password?: string; + /** 服务器地址:端口 */ + path?: string; + /** :端口 */ + port?: string; + /** 全局表前缀,单独定义TableName则不生效 */ + prefix?: string; + /** 是否开启全局禁用复数,true表示开启 */ + singular?: boolean; + /** 数据库用户名 */ + username?: string; + }; + + type SysAPIByGroupResponse = { + apis?: ApiGroup[]; + }; + + type SysAPIListResponse = { + apis?: Api[]; + }; + + type SysAPIResponse = { + api?: Api; + }; + + type SysCaptchaResponse = { + captchaId?: string; + captchaLength?: number; + openCaptcha?: boolean; + picPath?: string; + }; + + type SysConfigResponse = { + config?: Server; + }; + + type System = { + /** 端口值 */ + addr?: number; + /** 数据库类型:mysql(默认)|sqlite|sqlserver|postgresql */ + 'db-type'?: string; + /** 环境值 */ + env?: string; + 'iplimit-count'?: number; + 'iplimit-time'?: number; + /** Oss类型 */ + 'oss-type'?: string; + 'router-prefix'?: string; + /** 多点登录拦截 */ + 'use-multipoint'?: boolean; + /** 使用redis */ + 'use-redis'?: boolean; + }; + + type System = { + config?: Server; + }; + + type TencentCOS = { + 'base-url'?: string; + bucket?: string; + 'path-prefix'?: string; + region?: string; + 'secret-id'?: string; + 'secret-key'?: string; + }; + + type Timer = { + detail?: Detail[]; + /** CRON表达式 */ + spec?: string; + /** 是否启用 */ + start?: boolean; + /** 是否精确到秒 */ + with_seconds?: boolean; + }; + + type Tree = { + children?: Tree[]; + key?: number; + title?: string; + }; + + type TreeResponse = { + tree?: Tree[]; + }; + + type UpdateRolePermissionParams = { + apiIds?: number[]; + dataScope?: string; + deptIds?: number[]; + menuIds?: number[]; + roleId?: number; + }; + + type User = { + avatarId?: number; + createTime?: string; + deptId?: number; + /** 用户邮箱 */ + email?: string; + /** 状态 */ + enable?: boolean; + id?: number; + lastLoginTime?: string; + nickName?: string; + /** 用户手机号 */ + phone?: string; + postId?: number; + /** 多岗位 */ + postIds?: string; + remark?: string; + roleId?: number; + /** 多角色 */ + roleIds?: string; + updateTime?: string; + /** 用户登录名 */ + userName?: string; + }; + + type UserResponse = { + user?: User; + }; + + type UserView = { + avatarId?: number; + avatarUrl?: string; + createTime?: string; + deptId?: number; + /** 用户邮箱 */ + email?: string; + /** 状态 */ + enable?: boolean; + id?: number; + lastLoginTime?: string; + nickName?: string; + /** 用户手机号 */ + phone?: string; + postId?: number; + /** 多岗位 */ + postIds?: string; + remark?: string; + roleId?: number; + /** 多角色 */ + roleIds?: string; + roles?: RoleSelectResponse[]; + updateTime?: string; + /** 用户登录名 */ + userName?: string; + }; + + type Zap = { + /** 日志文件夹 */ + director?: string; + /** 编码级 */ + 'encode-level'?: string; + /** 输出 */ + format?: string; + /** 级别 */ + level?: string; + /** 输出控制台 */ + 'log-in-console'?: boolean; + /** 日志留存时间 */ + 'max-age'?: number; + /** 日志前缀 */ + prefix?: string; + /** 显示行 */ + 'show-line'?: boolean; + /** 栈名 */ + 'stacktrace-key'?: string; + }; +} diff --git a/src/styles/color/bezierEasing.less b/src/styles/color/bezierEasing.less new file mode 100644 index 0000000..f53ffb3 --- /dev/null +++ b/src/styles/color/bezierEasing.less @@ -0,0 +1,110 @@ +/* stylelint-disable */ +.bezierEasingMixin() { +@functions: ~`(function() { + var NEWTON_ITERATIONS = 4; + var NEWTON_MIN_SLOPE = 0.001; + var SUBDIVISION_PRECISION = 0.0000001; + var SUBDIVISION_MAX_ITERATIONS = 10; + + var kSplineTableSize = 11; + var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0); + + var float32ArraySupported = typeof Float32Array === 'function'; + + function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; } + function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; } + function C (aA1) { return 3.0 * aA1; } + + // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2. + function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; } + + // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2. + function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); } + + function binarySubdivide (aX, aA, aB, mX1, mX2) { + var currentX, currentT, i = 0; + do { + currentT = aA + (aB - aA) / 2.0; + currentX = calcBezier(currentT, mX1, mX2) - aX; + if (currentX > 0.0) { + aB = currentT; + } else { + aA = currentT; + } + } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS); + return currentT; + } + + function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) { + for (var i = 0; i < NEWTON_ITERATIONS; ++i) { + var currentSlope = getSlope(aGuessT, mX1, mX2); + if (currentSlope === 0.0) { + return aGuessT; + } + var currentX = calcBezier(aGuessT, mX1, mX2) - aX; + aGuessT -= currentX / currentSlope; + } + return aGuessT; + } + + var BezierEasing = function (mX1, mY1, mX2, mY2) { + if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { + throw new Error('bezier x values must be in [0, 1] range'); + } + + // Precompute samples table + var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize); + if (mX1 !== mY1 || mX2 !== mY2) { + for (var i = 0; i < kSplineTableSize; ++i) { + sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2); + } + } + + function getTForX (aX) { + var intervalStart = 0.0; + var currentSample = 1; + var lastSample = kSplineTableSize - 1; + + for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) { + intervalStart += kSampleStepSize; + } + --currentSample; + + // Interpolate to provide an initial guess for t + var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]); + var guessForT = intervalStart + dist * kSampleStepSize; + + var initialSlope = getSlope(guessForT, mX1, mX2); + if (initialSlope >= NEWTON_MIN_SLOPE) { + return newtonRaphsonIterate(aX, guessForT, mX1, mX2); + } else if (initialSlope === 0.0) { + return guessForT; + } else { + return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2); + } + } + + return function BezierEasing (x) { + if (mX1 === mY1 && mX2 === mY2) { + return x; // linear + } + // Because JavaScript number are imprecise, we should guarantee the extremes are right. + if (x === 0) { + return 0; + } + if (x === 1) { + return 1; + } + return calcBezier(getTForX(x), mY1, mY2); + }; + }; + + this.colorEasing = BezierEasing(0.26, 0.09, 0.37, 0.18); + // less 3 requires a return + return ''; +})()`; +} +// It is hacky way to make this function will be compiled preferentially by less +// resolve error: `ReferenceError: colorPalette is not defined` +// https://github.com/ant-design/ant-motion/issues/44 +.bezierEasingMixin(); diff --git a/src/styles/color/colorPalette.less b/src/styles/color/colorPalette.less new file mode 100644 index 0000000..e662c07 --- /dev/null +++ b/src/styles/color/colorPalette.less @@ -0,0 +1,85 @@ +/* stylelint-disable no-duplicate-selectors */ +@import "bezierEasing"; +@import "tinyColor"; + +// We create a very complex algorithm which take the place of original tint/shade color system +// to make sure no one can understand it 👻 +// and create an entire color palette magicly by inputing just a single primary color. +// We are using bezier-curve easing function and some color manipulations like tint/shade/darken/spin +.colorPaletteMixin() { +@functions: ~`(function() { + var hueStep = 2; + var saturationStep = 0.16; + var saturationStep2 = 0.05; + var brightnessStep1 = 0.05; + var brightnessStep2 = 0.15; + var lightColorCount = 5; + var darkColorCount = 4; + + var getHue = function(hsv, i, isLight) { + var hue; + if (hsv.h >= 60 && hsv.h <= 240) { + hue = isLight ? hsv.h - hueStep * i : hsv.h + hueStep * i; + } else { + hue = isLight ? hsv.h + hueStep * i : hsv.h - hueStep * i; + } + if (hue < 0) { + hue += 360; + } else if (hue >= 360) { + hue -= 360; + } + return Math.round(hue); + }; + var getSaturation = function(hsv, i, isLight) { + // grey color don't change saturation + if (hsv.h === 0 && hsv.s === 0) { + return hsv.s; + } + var saturation; + if (isLight) { + saturation = hsv.s - saturationStep * i; + } else if (i === darkColorCount) { + saturation = hsv.s + saturationStep; + } else { + saturation = hsv.s + saturationStep2 * i; + } + if (saturation > 1) { + saturation = 1; + } + if (isLight && i === lightColorCount && saturation > 0.1) { + saturation = 0.1; + } + if (saturation < 0.06) { + saturation = 0.06; + } + return Number(saturation.toFixed(2)); + }; + var getValue = function(hsv, i, isLight) { + var value; + if (isLight) { + value = hsv.v + brightnessStep1 * i; + }else{ + value = hsv.v - brightnessStep2 * i + } + if (value > 1) { + value = 1; + } + return Number(value.toFixed(2)) + }; + + this.colorPalette = function(color, index) { + var isLight = index <= 6; + var hsv = tinycolor(color).toHsv(); + var i = isLight ? lightColorCount + 1 - index : index - lightColorCount - 1; + return tinycolor({ + h: getHue(hsv, i, isLight), + s: getSaturation(hsv, i, isLight), + v: getValue(hsv, i, isLight), + }).toHexString(); + }; +})()`; +} +// It is hacky way to make this function will be compiled preferentially by less +// resolve error: `ReferenceError: colorPalette is not defined` +// https://github.com/ant-design/ant-motion/issues/44 +.colorPaletteMixin(); diff --git a/src/styles/color/colors.less b/src/styles/color/colors.less new file mode 100644 index 0000000..51540bf --- /dev/null +++ b/src/styles/color/colors.less @@ -0,0 +1,162 @@ +@import 'colorPalette'; + +// color palettes +@blue-base: #1890ff; +@blue-1: color(~`colorPalette('@{blue-6}', 1) `); +@blue-2: color(~`colorPalette('@{blue-6}', 2) `); +@blue-3: color(~`colorPalette('@{blue-6}', 3) `); +@blue-4: color(~`colorPalette('@{blue-6}', 4) `); +@blue-5: color(~`colorPalette('@{blue-6}', 5) `); +@blue-6: @blue-base; +@blue-7: color(~`colorPalette('@{blue-6}', 7) `); +@blue-8: color(~`colorPalette('@{blue-6}', 8) `); +@blue-9: color(~`colorPalette('@{blue-6}', 9) `); +@blue-10: color(~`colorPalette('@{blue-6}', 10) `); + +@purple-base: #722ed1; +@purple-1: color(~`colorPalette('@{purple-6}', 1) `); +@purple-2: color(~`colorPalette('@{purple-6}', 2) `); +@purple-3: color(~`colorPalette('@{purple-6}', 3) `); +@purple-4: color(~`colorPalette('@{purple-6}', 4) `); +@purple-5: color(~`colorPalette('@{purple-6}', 5) `); +@purple-6: @purple-base; +@purple-7: color(~`colorPalette('@{purple-6}', 7) `); +@purple-8: color(~`colorPalette('@{purple-6}', 8) `); +@purple-9: color(~`colorPalette('@{purple-6}', 9) `); +@purple-10: color(~`colorPalette('@{purple-6}', 10) `); + +@cyan-base: #13c2c2; +@cyan-1: color(~`colorPalette('@{cyan-6}', 1) `); +@cyan-2: color(~`colorPalette('@{cyan-6}', 2) `); +@cyan-3: color(~`colorPalette('@{cyan-6}', 3) `); +@cyan-4: color(~`colorPalette('@{cyan-6}', 4) `); +@cyan-5: color(~`colorPalette('@{cyan-6}', 5) `); +@cyan-6: @cyan-base; +@cyan-7: color(~`colorPalette('@{cyan-6}', 7) `); +@cyan-8: color(~`colorPalette('@{cyan-6}', 8) `); +@cyan-9: color(~`colorPalette('@{cyan-6}', 9) `); +@cyan-10: color(~`colorPalette('@{cyan-6}', 10) `); + +@green-base: #52c41a; +@green-1: color(~`colorPalette('@{green-6}', 1) `); +@green-2: color(~`colorPalette('@{green-6}', 2) `); +@green-3: color(~`colorPalette('@{green-6}', 3) `); +@green-4: color(~`colorPalette('@{green-6}', 4) `); +@green-5: color(~`colorPalette('@{green-6}', 5) `); +@green-6: @green-base; +@green-7: color(~`colorPalette('@{green-6}', 7) `); +@green-8: color(~`colorPalette('@{green-6}', 8) `); +@green-9: color(~`colorPalette('@{green-6}', 9) `); +@green-10: color(~`colorPalette('@{green-6}', 10) `); + +@magenta-base: #eb2f96; +@magenta-1: color(~`colorPalette('@{magenta-6}', 1) `); +@magenta-2: color(~`colorPalette('@{magenta-6}', 2) `); +@magenta-3: color(~`colorPalette('@{magenta-6}', 3) `); +@magenta-4: color(~`colorPalette('@{magenta-6}', 4) `); +@magenta-5: color(~`colorPalette('@{magenta-6}', 5) `); +@magenta-6: @magenta-base; +@magenta-7: color(~`colorPalette('@{magenta-6}', 7) `); +@magenta-8: color(~`colorPalette('@{magenta-6}', 8) `); +@magenta-9: color(~`colorPalette('@{magenta-6}', 9) `); +@magenta-10: color(~`colorPalette('@{magenta-6}', 10) `); + +// alias of magenta +@pink-base: #eb2f96; +@pink-1: color(~`colorPalette('@{pink-6}', 1) `); +@pink-2: color(~`colorPalette('@{pink-6}', 2) `); +@pink-3: color(~`colorPalette('@{pink-6}', 3) `); +@pink-4: color(~`colorPalette('@{pink-6}', 4) `); +@pink-5: color(~`colorPalette('@{pink-6}', 5) `); +@pink-6: @pink-base; +@pink-7: color(~`colorPalette('@{pink-6}', 7) `); +@pink-8: color(~`colorPalette('@{pink-6}', 8) `); +@pink-9: color(~`colorPalette('@{pink-6}', 9) `); +@pink-10: color(~`colorPalette('@{pink-6}', 10) `); + +@red-base: #f5222d; +@red-1: color(~`colorPalette('@{red-6}', 1) `); +@red-2: color(~`colorPalette('@{red-6}', 2) `); +@red-3: color(~`colorPalette('@{red-6}', 3) `); +@red-4: color(~`colorPalette('@{red-6}', 4) `); +@red-5: color(~`colorPalette('@{red-6}', 5) `); +@red-6: @red-base; +@red-7: color(~`colorPalette('@{red-6}', 7) `); +@red-8: color(~`colorPalette('@{red-6}', 8) `); +@red-9: color(~`colorPalette('@{red-6}', 9) `); +@red-10: color(~`colorPalette('@{red-6}', 10) `); + +@orange-base: #fa8c16; +@orange-1: color(~`colorPalette('@{orange-6}', 1) `); +@orange-2: color(~`colorPalette('@{orange-6}', 2) `); +@orange-3: color(~`colorPalette('@{orange-6}', 3) `); +@orange-4: color(~`colorPalette('@{orange-6}', 4) `); +@orange-5: color(~`colorPalette('@{orange-6}', 5) `); +@orange-6: @orange-base; +@orange-7: color(~`colorPalette('@{orange-6}', 7) `); +@orange-8: color(~`colorPalette('@{orange-6}', 8) `); +@orange-9: color(~`colorPalette('@{orange-6}', 9) `); +@orange-10: color(~`colorPalette('@{orange-6}', 10) `); + +@yellow-base: #fadb14; +@yellow-1: color(~`colorPalette('@{yellow-6}', 1) `); +@yellow-2: color(~`colorPalette('@{yellow-6}', 2) `); +@yellow-3: color(~`colorPalette('@{yellow-6}', 3) `); +@yellow-4: color(~`colorPalette('@{yellow-6}', 4) `); +@yellow-5: color(~`colorPalette('@{yellow-6}', 5) `); +@yellow-6: @yellow-base; +@yellow-7: color(~`colorPalette('@{yellow-6}', 7) `); +@yellow-8: color(~`colorPalette('@{yellow-6}', 8) `); +@yellow-9: color(~`colorPalette('@{yellow-6}', 9) `); +@yellow-10: color(~`colorPalette('@{yellow-6}', 10) `); + +@volcano-base: #fa541c; +@volcano-1: color(~`colorPalette('@{volcano-6}', 1) `); +@volcano-2: color(~`colorPalette('@{volcano-6}', 2) `); +@volcano-3: color(~`colorPalette('@{volcano-6}', 3) `); +@volcano-4: color(~`colorPalette('@{volcano-6}', 4) `); +@volcano-5: color(~`colorPalette('@{volcano-6}', 5) `); +@volcano-6: @volcano-base; +@volcano-7: color(~`colorPalette('@{volcano-6}', 7) `); +@volcano-8: color(~`colorPalette('@{volcano-6}', 8) `); +@volcano-9: color(~`colorPalette('@{volcano-6}', 9) `); +@volcano-10: color(~`colorPalette('@{volcano-6}', 10) `); + +@geekblue-base: #2f54eb; +@geekblue-1: color(~`colorPalette('@{geekblue-6}', 1) `); +@geekblue-2: color(~`colorPalette('@{geekblue-6}', 2) `); +@geekblue-3: color(~`colorPalette('@{geekblue-6}', 3) `); +@geekblue-4: color(~`colorPalette('@{geekblue-6}', 4) `); +@geekblue-5: color(~`colorPalette('@{geekblue-6}', 5) `); +@geekblue-6: @geekblue-base; +@geekblue-7: color(~`colorPalette('@{geekblue-6}', 7) `); +@geekblue-8: color(~`colorPalette('@{geekblue-6}', 8) `); +@geekblue-9: color(~`colorPalette('@{geekblue-6}', 9) `); +@geekblue-10: color(~`colorPalette('@{geekblue-6}', 10) `); + +@lime-base: #a0d911; +@lime-1: color(~`colorPalette('@{lime-6}', 1) `); +@lime-2: color(~`colorPalette('@{lime-6}', 2) `); +@lime-3: color(~`colorPalette('@{lime-6}', 3) `); +@lime-4: color(~`colorPalette('@{lime-6}', 4) `); +@lime-5: color(~`colorPalette('@{lime-6}', 5) `); +@lime-6: @lime-base; +@lime-7: color(~`colorPalette('@{lime-6}', 7) `); +@lime-8: color(~`colorPalette('@{lime-6}', 8) `); +@lime-9: color(~`colorPalette('@{lime-6}', 9) `); +@lime-10: color(~`colorPalette('@{lime-6}', 10) `); + +@gold-base: #faad14; +@gold-1: color(~`colorPalette('@{gold-6}', 1) `); +@gold-2: color(~`colorPalette('@{gold-6}', 2) `); +@gold-3: color(~`colorPalette('@{gold-6}', 3) `); +@gold-4: color(~`colorPalette('@{gold-6}', 4) `); +@gold-5: color(~`colorPalette('@{gold-6}', 5) `); +@gold-6: @gold-base; +@gold-7: color(~`colorPalette('@{gold-6}', 7) `); +@gold-8: color(~`colorPalette('@{gold-6}', 8) `); +@gold-9: color(~`colorPalette('@{gold-6}', 9) `); +@gold-10: color(~`colorPalette('@{gold-6}', 10) `); + +@preset-colors: pink, magenta, red, volcano, orange, yellow, gold, cyan, lime, green, blue, geekblue, + purple; diff --git a/src/styles/color/tinyColor.less b/src/styles/color/tinyColor.less new file mode 100644 index 0000000..e576c78 --- /dev/null +++ b/src/styles/color/tinyColor.less @@ -0,0 +1,1184 @@ +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ +.tinyColorMixin() { +@functions: ~`(function() { +// TinyColor v1.4.1 +// https://github.com/bgrins/TinyColor +// 2016-07-07, Brian Grinstead, MIT License +var trimLeft = /^\s+/, + trimRight = /\s+$/, + tinyCounter = 0, + mathRound = Math.round, + mathMin = Math.min, + mathMax = Math.max, + mathRandom = Math.random; + +function tinycolor (color, opts) { + + color = (color) ? color : ''; + opts = opts || { }; + + // If input is already a tinycolor, return itself + if (color instanceof tinycolor) { + return color; + } + // If we are called as a function, call using new instead + if (!(this instanceof tinycolor)) { + return new tinycolor(color, opts); + } + + var rgb = inputToRGB(color); + this._originalInput = color, + this._r = rgb.r, + this._g = rgb.g, + this._b = rgb.b, + this._a = rgb.a, + this._roundA = mathRound(100*this._a) / 100, + this._format = opts.format || rgb.format; + this._gradientType = opts.gradientType; + + // Don't let the range of [0,255] come back in [0,1]. + // Potentially lose a little bit of precision here, but will fix issues where + // .5 gets interpreted as half of the total, instead of half of 1 + // If it was supposed to be 128, this was already taken care of by inputToRgb + if (this._r < 1) { this._r = mathRound(this._r); } + if (this._g < 1) { this._g = mathRound(this._g); } + if (this._b < 1) { this._b = mathRound(this._b); } + + this._ok = rgb.ok; + this._tc_id = tinyCounter++; +} + +tinycolor.prototype = { + isDark: function() { + return this.getBrightness() < 128; + }, + isLight: function() { + return !this.isDark(); + }, + isValid: function() { + return this._ok; + }, + getOriginalInput: function() { + return this._originalInput; + }, + getFormat: function() { + return this._format; + }, + getAlpha: function() { + return this._a; + }, + getBrightness: function() { + //http://www.w3.org/TR/AERT#color-contrast + var rgb = this.toRgb(); + return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000; + }, + getLuminance: function() { + //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef + var rgb = this.toRgb(); + var RsRGB, GsRGB, BsRGB, R, G, B; + RsRGB = rgb.r/255; + GsRGB = rgb.g/255; + BsRGB = rgb.b/255; + + if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);} + if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);} + if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);} + return (0.2126 * R) + (0.7152 * G) + (0.0722 * B); + }, + setAlpha: function(value) { + this._a = boundAlpha(value); + this._roundA = mathRound(100*this._a) / 100; + return this; + }, + toHsv: function() { + var hsv = rgbToHsv(this._r, this._g, this._b); + return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a }; + }, + toHsvString: function() { + var hsv = rgbToHsv(this._r, this._g, this._b); + var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100); + return (this._a == 1) ? + "hsv(" + h + ", " + s + "%, " + v + "%)" : + "hsva(" + h + ", " + s + "%, " + v + "%, "+ this._roundA + ")"; + }, + toHsl: function() { + var hsl = rgbToHsl(this._r, this._g, this._b); + return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a }; + }, + toHslString: function() { + var hsl = rgbToHsl(this._r, this._g, this._b); + var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100); + return (this._a == 1) ? + "hsl(" + h + ", " + s + "%, " + l + "%)" : + "hsla(" + h + ", " + s + "%, " + l + "%, "+ this._roundA + ")"; + }, + toHex: function(allow3Char) { + return rgbToHex(this._r, this._g, this._b, allow3Char); + }, + toHexString: function(allow3Char) { + return '#' + this.toHex(allow3Char); + }, + toHex8: function(allow4Char) { + return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char); + }, + toHex8String: function(allow4Char) { + return '#' + this.toHex8(allow4Char); + }, + toRgb: function() { + return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a }; + }, + toRgbString: function() { + return (this._a == 1) ? + "rgb(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ")" : + "rgba(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ", " + this._roundA + ")"; + }, + toPercentageRgb: function() { + return { r: mathRound(bound01(this._r, 255) * 100) + "%", g: mathRound(bound01(this._g, 255) * 100) + "%", b: mathRound(bound01(this._b, 255) * 100) + "%", a: this._a }; + }, + toPercentageRgbString: function() { + return (this._a == 1) ? + "rgb(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%)" : + "rgba(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")"; + }, + toName: function() { + if (this._a === 0) { + return "transparent"; + } + + if (this._a < 1) { + return false; + } + + return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false; + }, + toFilter: function(secondColor) { + var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a); + var secondHex8String = hex8String; + var gradientType = this._gradientType ? "GradientType = 1, " : ""; + + if (secondColor) { + var s = tinycolor(secondColor); + secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a); + } + + return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr="+hex8String+",endColorstr="+secondHex8String+")"; + }, + toString: function(format) { + var formatSet = !!format; + format = format || this._format; + + var formattedString = false; + var hasAlpha = this._a < 1 && this._a >= 0; + var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "hex4" || format === "hex8" || format === "name"); + + if (needsAlphaFormat) { + // Special case for "transparent", all other non-alpha formats + // will return rgba when there is transparency. + if (format === "name" && this._a === 0) { + return this.toName(); + } + return this.toRgbString(); + } + if (format === "rgb") { + formattedString = this.toRgbString(); + } + if (format === "prgb") { + formattedString = this.toPercentageRgbString(); + } + if (format === "hex" || format === "hex6") { + formattedString = this.toHexString(); + } + if (format === "hex3") { + formattedString = this.toHexString(true); + } + if (format === "hex4") { + formattedString = this.toHex8String(true); + } + if (format === "hex8") { + formattedString = this.toHex8String(); + } + if (format === "name") { + formattedString = this.toName(); + } + if (format === "hsl") { + formattedString = this.toHslString(); + } + if (format === "hsv") { + formattedString = this.toHsvString(); + } + + return formattedString || this.toHexString(); + }, + clone: function() { + return tinycolor(this.toString()); + }, + + _applyModification: function(fn, args) { + var color = fn.apply(null, [this].concat([].slice.call(args))); + this._r = color._r; + this._g = color._g; + this._b = color._b; + this.setAlpha(color._a); + return this; + }, + lighten: function() { + return this._applyModification(lighten, arguments); + }, + brighten: function() { + return this._applyModification(brighten, arguments); + }, + darken: function() { + return this._applyModification(darken, arguments); + }, + desaturate: function() { + return this._applyModification(desaturate, arguments); + }, + saturate: function() { + return this._applyModification(saturate, arguments); + }, + greyscale: function() { + return this._applyModification(greyscale, arguments); + }, + spin: function() { + return this._applyModification(spin, arguments); + }, + + _applyCombination: function(fn, args) { + return fn.apply(null, [this].concat([].slice.call(args))); + }, + analogous: function() { + return this._applyCombination(analogous, arguments); + }, + complement: function() { + return this._applyCombination(complement, arguments); + }, + monochromatic: function() { + return this._applyCombination(monochromatic, arguments); + }, + splitcomplement: function() { + return this._applyCombination(splitcomplement, arguments); + }, + triad: function() { + return this._applyCombination(triad, arguments); + }, + tetrad: function() { + return this._applyCombination(tetrad, arguments); + } +}; + +// If input is an object, force 1 into "1.0" to handle ratios properly +// String input requires "1.0" as input, so 1 will be treated as 1 +tinycolor.fromRatio = function(color, opts) { + if (typeof color == "object") { + var newColor = {}; + for (var i in color) { + if (color.hasOwnProperty(i)) { + if (i === "a") { + newColor[i] = color[i]; + } + else { + newColor[i] = convertToPercentage(color[i]); + } + } + } + color = newColor; + } + + return tinycolor(color, opts); +}; + +// Given a string or object, convert that input to RGB +// Possible string inputs: +// +// "red" +// "#f00" or "f00" +// "#ff0000" or "ff0000" +// "#ff000000" or "ff000000" +// "rgb 255 0 0" or "rgb (255, 0, 0)" +// "rgb 1.0 0 0" or "rgb (1, 0, 0)" +// "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" +// "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" +// "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" +// "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" +// "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" +// +function inputToRGB(color) { + + var rgb = { r: 0, g: 0, b: 0 }; + var a = 1; + var s = null; + var v = null; + var l = null; + var ok = false; + var format = false; + + if (typeof color == "string") { + color = stringInputToObject(color); + } + + if (typeof color == "object") { + if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) { + rgb = rgbToRgb(color.r, color.g, color.b); + ok = true; + format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; + } + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) { + s = convertToPercentage(color.s); + v = convertToPercentage(color.v); + rgb = hsvToRgb(color.h, s, v); + ok = true; + format = "hsv"; + } + else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) { + s = convertToPercentage(color.s); + l = convertToPercentage(color.l); + rgb = hslToRgb(color.h, s, l); + ok = true; + format = "hsl"; + } + + if (color.hasOwnProperty("a")) { + a = color.a; + } + } + + a = boundAlpha(a); + + return { + ok: ok, + format: color.format || format, + r: mathMin(255, mathMax(rgb.r, 0)), + g: mathMin(255, mathMax(rgb.g, 0)), + b: mathMin(255, mathMax(rgb.b, 0)), + a: a + }; +} + +// Conversion Functions +// -------------------- + +// rgbToHsl, rgbToHsv, hslToRgb, hsvToRgb modified from: +// + +// rgbToRgb +// Handle bounds / percentage checking to conform to CSS color spec +// +// *Assumes:* r, g, b in [0, 255] or [0, 1] +// *Returns:* { r, g, b } in [0, 255] +function rgbToRgb(r, g, b){ + return { + r: bound01(r, 255) * 255, + g: bound01(g, 255) * 255, + b: bound01(b, 255) * 255 + }; +} + +// rgbToHsl +// Converts an RGB color value to HSL. +// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] +// *Returns:* { h, s, l } in [0,1] +function rgbToHsl(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, l = (max + min) / 2; + + if(max == min) { + h = s = 0; // achromatic + } + else { + var d = max - min; + s = l > 0.5 ? d / (2 - max - min) : d / (max + min); + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + + h /= 6; + } + + return { h: h, s: s, l: l }; +} + +// hslToRgb +// Converts an HSL color value to RGB. +// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] +// *Returns:* { r, g, b } in the set [0, 255] +function hslToRgb(h, s, l) { + var r, g, b; + + h = bound01(h, 360); + s = bound01(s, 100); + l = bound01(l, 100); + + function hue2rgb(p, q, t) { + if(t < 0) t += 1; + if(t > 1) t -= 1; + if(t < 1/6) return p + (q - p) * 6 * t; + if(t < 1/2) return q; + if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; + return p; + } + + if(s === 0) { + r = g = b = l; // achromatic + } + else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hue2rgb(p, q, h + 1/3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1/3); + } + + return { r: r * 255, g: g * 255, b: b * 255 }; +} + +// rgbToHsv +// Converts an RGB color value to HSV +// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] +// *Returns:* { h, s, v } in [0,1] +function rgbToHsv(r, g, b) { + + r = bound01(r, 255); + g = bound01(g, 255); + b = bound01(b, 255); + + var max = mathMax(r, g, b), min = mathMin(r, g, b); + var h, s, v = max; + + var d = max - min; + s = max === 0 ? 0 : d / max; + + if(max == min) { + h = 0; // achromatic + } + else { + switch(max) { + case r: h = (g - b) / d + (g < b ? 6 : 0); break; + case g: h = (b - r) / d + 2; break; + case b: h = (r - g) / d + 4; break; + } + h /= 6; + } + return { h: h, s: s, v: v }; +} + +// hsvToRgb +// Converts an HSV color value to RGB. +// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] +// *Returns:* { r, g, b } in the set [0, 255] + function hsvToRgb(h, s, v) { + + h = bound01(h, 360) * 6; + s = bound01(s, 100); + v = bound01(v, 100); + + var i = Math.floor(h), + f = h - i, + p = v * (1 - s), + q = v * (1 - f * s), + t = v * (1 - (1 - f) * s), + mod = i % 6, + r = [v, q, p, p, t, v][mod], + g = [t, v, v, q, p, p][mod], + b = [p, p, t, v, v, q][mod]; + + return { r: r * 255, g: g * 255, b: b * 255 }; +} + +// rgbToHex +// Converts an RGB color to hex +// Assumes r, g, and b are contained in the set [0, 255] +// Returns a 3 or 6 character hex +function rgbToHex(r, g, b, allow3Char) { + + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + // Return a 3 character hex if possible + if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); + } + + return hex.join(""); +} + +// rgbaToHex +// Converts an RGBA color plus alpha transparency to hex +// Assumes r, g, b are contained in the set [0, 255] and +// a in [0, 1]. Returns a 4 or 8 character rgba hex +function rgbaToHex(r, g, b, a, allow4Char) { + + var hex = [ + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)), + pad2(convertDecimalToHex(a)) + ]; + + // Return a 4 character hex if possible + if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) { + return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0); + } + + return hex.join(""); +} + +// rgbaToArgbHex +// Converts an RGBA color to an ARGB Hex8 string +// Rarely used, but required for "toFilter()" +function rgbaToArgbHex(r, g, b, a) { + + var hex = [ + pad2(convertDecimalToHex(a)), + pad2(mathRound(r).toString(16)), + pad2(mathRound(g).toString(16)), + pad2(mathRound(b).toString(16)) + ]; + + return hex.join(""); +} + +// equals +// Can be called with any tinycolor input +tinycolor.equals = function (color1, color2) { + if (!color1 || !color2) { return false; } + return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); +}; + +tinycolor.random = function() { + return tinycolor.fromRatio({ + r: mathRandom(), + g: mathRandom(), + b: mathRandom() + }); +}; + +// Modification Functions +// ---------------------- +// Thanks to less.js for some of the basics here +// + +function desaturate(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s -= amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); +} + +function saturate(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.s += amount / 100; + hsl.s = clamp01(hsl.s); + return tinycolor(hsl); +} + +function greyscale(color) { + return tinycolor(color).desaturate(100); +} + +function lighten (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l += amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); +} + +function brighten(color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var rgb = tinycolor(color).toRgb(); + rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100)))); + rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100)))); + rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100)))); + return tinycolor(rgb); +} + +function darken (color, amount) { + amount = (amount === 0) ? 0 : (amount || 10); + var hsl = tinycolor(color).toHsl(); + hsl.l -= amount / 100; + hsl.l = clamp01(hsl.l); + return tinycolor(hsl); +} + +// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue. +// Values outside of this range will be wrapped into this range. +function spin(color, amount) { + var hsl = tinycolor(color).toHsl(); + var hue = (hsl.h + amount) % 360; + hsl.h = hue < 0 ? 360 + hue : hue; + return tinycolor(hsl); +} + +// Combination Functions +// --------------------- +// Thanks to jQuery xColor for some of the ideas behind these +// + +function complement(color) { + var hsl = tinycolor(color).toHsl(); + hsl.h = (hsl.h + 180) % 360; + return tinycolor(hsl); +} + +function triad(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }) + ]; +} + +function tetrad(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }), + tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }) + ]; +} + +function splitcomplement(color) { + var hsl = tinycolor(color).toHsl(); + var h = hsl.h; + return [ + tinycolor(color), + tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}), + tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l}) + ]; +} + +function analogous(color, results, slices) { + results = results || 6; + slices = slices || 30; + + var hsl = tinycolor(color).toHsl(); + var part = 360 / slices; + var ret = [tinycolor(color)]; + + for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) { + hsl.h = (hsl.h + part) % 360; + ret.push(tinycolor(hsl)); + } + return ret; +} + +function monochromatic(color, results) { + results = results || 6; + var hsv = tinycolor(color).toHsv(); + var h = hsv.h, s = hsv.s, v = hsv.v; + var ret = []; + var modification = 1 / results; + + while (results--) { + ret.push(tinycolor({ h: h, s: s, v: v})); + v = (v + modification) % 1; + } + + return ret; +} + +// Utility Functions +// --------------------- + +tinycolor.mix = function(color1, color2, amount) { + amount = (amount === 0) ? 0 : (amount || 50); + + var rgb1 = tinycolor(color1).toRgb(); + var rgb2 = tinycolor(color2).toRgb(); + + var p = amount / 100; + + var rgba = { + r: ((rgb2.r - rgb1.r) * p) + rgb1.r, + g: ((rgb2.g - rgb1.g) * p) + rgb1.g, + b: ((rgb2.b - rgb1.b) * p) + rgb1.b, + a: ((rgb2.a - rgb1.a) * p) + rgb1.a + }; + + return tinycolor(rgba); +}; + +// Readability Functions +// --------------------- +// false +// tinycolor.isReadable("#000", "#111",{level:"AA",size:"large"}) => false +tinycolor.isReadable = function(color1, color2, wcag2) { + var readability = tinycolor.readability(color1, color2); + var wcag2Parms, out; + + out = false; + + wcag2Parms = validateWCAG2Parms(wcag2); + switch (wcag2Parms.level + wcag2Parms.size) { + case "AAsmall": + case "AAAlarge": + out = readability >= 4.5; + break; + case "AAlarge": + out = readability >= 3; + break; + case "AAAsmall": + out = readability >= 7; + break; + } + return out; + +}; + +// mostReadable +// Given a base color and a list of possible foreground or background +// colors for that base, returns the most readable color. +// Optionally returns Black or White if the most readable color is unreadable. +// *Example* +// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:false}).toHexString(); // "#112255" +// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:true}).toHexString(); // "#ffffff" +// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"large"}).toHexString(); // "#faf3f3" +// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"small"}).toHexString(); // "#ffffff" +tinycolor.mostReadable = function(baseColor, colorList, args) { + var bestColor = null; + var bestScore = 0; + var readability; + var includeFallbackColors, level, size ; + args = args || {}; + includeFallbackColors = args.includeFallbackColors ; + level = args.level; + size = args.size; + + for (var i= 0; i < colorList.length ; i++) { + readability = tinycolor.readability(baseColor, colorList[i]); + if (readability > bestScore) { + bestScore = readability; + bestColor = tinycolor(colorList[i]); + } + } + + if (tinycolor.isReadable(baseColor, bestColor, {"level":level,"size":size}) || !includeFallbackColors) { + return bestColor; + } + else { + args.includeFallbackColors=false; + return tinycolor.mostReadable(baseColor,["#fff", "#000"],args); + } +}; + +// Big List of Colors +// ------------------ +// +var names = tinycolor.names = { + aliceblue: "f0f8ff", + antiquewhite: "faebd7", + aqua: "0ff", + aquamarine: "7fffd4", + azure: "f0ffff", + beige: "f5f5dc", + bisque: "ffe4c4", + black: "000", + blanchedalmond: "ffebcd", + blue: "00f", + blueviolet: "8a2be2", + brown: "a52a2a", + burlywood: "deb887", + burntsienna: "ea7e5d", + cadetblue: "5f9ea0", + chartreuse: "7fff00", + chocolate: "d2691e", + coral: "ff7f50", + cornflowerblue: "6495ed", + cornsilk: "fff8dc", + crimson: "dc143c", + cyan: "0ff", + darkblue: "00008b", + darkcyan: "008b8b", + darkgoldenrod: "b8860b", + darkgray: "a9a9a9", + darkgreen: "006400", + darkgrey: "a9a9a9", + darkkhaki: "bdb76b", + darkmagenta: "8b008b", + darkolivegreen: "556b2f", + darkorange: "ff8c00", + darkorchid: "9932cc", + darkred: "8b0000", + darksalmon: "e9967a", + darkseagreen: "8fbc8f", + darkslateblue: "483d8b", + darkslategray: "2f4f4f", + darkslategrey: "2f4f4f", + darkturquoise: "00ced1", + darkviolet: "9400d3", + deeppink: "ff1493", + deepskyblue: "00bfff", + dimgray: "696969", + dimgrey: "696969", + dodgerblue: "1e90ff", + firebrick: "b22222", + floralwhite: "fffaf0", + forestgreen: "228b22", + fuchsia: "f0f", + gainsboro: "dcdcdc", + ghostwhite: "f8f8ff", + gold: "ffd700", + goldenrod: "daa520", + gray: "808080", + green: "008000", + greenyellow: "adff2f", + grey: "808080", + honeydew: "f0fff0", + hotpink: "ff69b4", + indianred: "cd5c5c", + indigo: "4b0082", + ivory: "fffff0", + khaki: "f0e68c", + lavender: "e6e6fa", + lavenderblush: "fff0f5", + lawngreen: "7cfc00", + lemonchiffon: "fffacd", + lightblue: "add8e6", + lightcoral: "f08080", + lightcyan: "e0ffff", + lightgoldenrodyellow: "fafad2", + lightgray: "d3d3d3", + lightgreen: "90ee90", + lightgrey: "d3d3d3", + lightpink: "ffb6c1", + lightsalmon: "ffa07a", + lightseagreen: "20b2aa", + lightskyblue: "87cefa", + lightslategray: "789", + lightslategrey: "789", + lightsteelblue: "b0c4de", + lightyellow: "ffffe0", + lime: "0f0", + limegreen: "32cd32", + linen: "faf0e6", + magenta: "f0f", + maroon: "800000", + mediumaquamarine: "66cdaa", + mediumblue: "0000cd", + mediumorchid: "ba55d3", + mediumpurple: "9370db", + mediumseagreen: "3cb371", + mediumslateblue: "7b68ee", + mediumspringgreen: "00fa9a", + mediumturquoise: "48d1cc", + mediumvioletred: "c71585", + midnightblue: "191970", + mintcream: "f5fffa", + mistyrose: "ffe4e1", + moccasin: "ffe4b5", + navajowhite: "ffdead", + navy: "000080", + oldlace: "fdf5e6", + olive: "808000", + olivedrab: "6b8e23", + orange: "ffa500", + orangered: "ff4500", + orchid: "da70d6", + palegoldenrod: "eee8aa", + palegreen: "98fb98", + paleturquoise: "afeeee", + palevioletred: "db7093", + papayawhip: "ffefd5", + peachpuff: "ffdab9", + peru: "cd853f", + pink: "ffc0cb", + plum: "dda0dd", + powderblue: "b0e0e6", + purple: "800080", + rebeccapurple: "663399", + red: "f00", + rosybrown: "bc8f8f", + royalblue: "4169e1", + saddlebrown: "8b4513", + salmon: "fa8072", + sandybrown: "f4a460", + seagreen: "2e8b57", + seashell: "fff5ee", + sienna: "a0522d", + silver: "c0c0c0", + skyblue: "87ceeb", + slateblue: "6a5acd", + slategray: "708090", + slategrey: "708090", + snow: "fffafa", + springgreen: "00ff7f", + steelblue: "4682b4", + tan: "d2b48c", + teal: "008080", + thistle: "d8bfd8", + tomato: "ff6347", + turquoise: "40e0d0", + violet: "ee82ee", + wheat: "f5deb3", + white: "fff", + whitesmoke: "f5f5f5", + yellow: "ff0", + yellowgreen: "9acd32" +}; + +// Make it easy to access colors via hexNames[hex] +var hexNames = tinycolor.hexNames = flip(names); + +// Utilities +// --------- + +// { 'name1': 'val1' } becomes { 'val1': 'name1' } +function flip(o) { + var flipped = { }; + for (var i in o) { + if (o.hasOwnProperty(i)) { + flipped[o[i]] = i; + } + } + return flipped; +} + +// Return a valid alpha value [0,1] with all invalid values being set to 1 +function boundAlpha(a) { + a = parseFloat(a); + + if (isNaN(a) || a < 0 || a > 1) { + a = 1; + } + + return a; +} + +// Take input from [0, n] and return it as [0, 1] +function bound01(n, max) { + if (isOnePointZero(n)) { n = "100%"; } + + var processPercent = isPercentage(n); + n = mathMin(max, mathMax(0, parseFloat(n))); + + // Automatically convert percentage into number + if (processPercent) { + n = parseInt(n * max, 10) / 100; + } + + // Handle floating point rounding errors + if ((Math.abs(n - max) < 0.000001)) { + return 1; + } + + // Convert into [0, 1] range if it isn't already + return (n % max) / parseFloat(max); +} + +// Force a number between 0 and 1 +function clamp01(val) { + return mathMin(1, mathMax(0, val)); +} + +// Parse a base-16 hex value into a base-10 integer +function parseIntFromHex(val) { + return parseInt(val, 16); +} + +// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 +// +function isOnePointZero(n) { + return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1; +} + +// Check to see if string passed in is a percentage +function isPercentage(n) { + return typeof n === "string" && n.indexOf('%') != -1; +} + +// Force a hex value to have 2 characters +function pad2(c) { + return c.length == 1 ? '0' + c : '' + c; +} + +// Replace a decimal with it's percentage value +function convertToPercentage(n) { + if (n <= 1) { + n = (n * 100) + "%"; + } + + return n; +} + +// Converts a decimal to a hex value +function convertDecimalToHex(d) { + return Math.round(parseFloat(d) * 255).toString(16); +} +// Converts a hex value to a decimal +function convertHexToDecimal(h) { + return (parseIntFromHex(h) / 255); +} + +var matchers = (function() { + + // + var CSS_INTEGER = "[-\\+]?\\d+%?"; + + // + var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; + + // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. + var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; + + // Actual matching. + // Parentheses and commas are optional, but not required. + // Whitespace can take the place of commas or opening paren + var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; + + return { + CSS_UNIT: new RegExp(CSS_UNIT), + rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), + rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), + hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), + hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), + hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), + hsva: new RegExp("hsva" + PERMISSIVE_MATCH4), + hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, + hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, + hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ + }; +})(); + +// isValidCSSUnit +// Take in a single string / number and check to see if it looks like a CSS unit +// (see matchers above for definition). +function isValidCSSUnit(color) { + return !!matchers.CSS_UNIT.exec(color); +} + +// stringInputToObject +// Permissive string parsing. Take in a number of formats, and output an object +// based on detected format. Returns { r, g, b } or { h, s, l } or { h, s, v} +function stringInputToObject(color) { + + color = color.replace(trimLeft, '').replace(trimRight, '').toLowerCase(); + var named = false; + if (names[color]) { + color = names[color]; + named = true; + } + else if (color == 'transparent') { + return { r: 0, g: 0, b: 0, a: 0, format: "name" }; + } + + // Try to match string input using regular expressions. + // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] + // Just return an object and let the conversion functions handle that. + // This way the result will be the same whether the tinycolor is initialized with string or object. + var match; + if ((match = matchers.rgb.exec(color))) { + return { r: match[1], g: match[2], b: match[3] }; + } + if ((match = matchers.rgba.exec(color))) { + return { r: match[1], g: match[2], b: match[3], a: match[4] }; + } + if ((match = matchers.hsl.exec(color))) { + return { h: match[1], s: match[2], l: match[3] }; + } + if ((match = matchers.hsla.exec(color))) { + return { h: match[1], s: match[2], l: match[3], a: match[4] }; + } + if ((match = matchers.hsv.exec(color))) { + return { h: match[1], s: match[2], v: match[3] }; + } + if ((match = matchers.hsva.exec(color))) { + return { h: match[1], s: match[2], v: match[3], a: match[4] }; + } + if ((match = matchers.hex8.exec(color))) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + a: convertHexToDecimal(match[4]), + format: named ? "name" : "hex8" + }; + } + if ((match = matchers.hex6.exec(color))) { + return { + r: parseIntFromHex(match[1]), + g: parseIntFromHex(match[2]), + b: parseIntFromHex(match[3]), + format: named ? "name" : "hex" + }; + } + if ((match = matchers.hex4.exec(color))) { + return { + r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + a: convertHexToDecimal(match[4] + '' + match[4]), + format: named ? "name" : "hex8" + }; + } + if ((match = matchers.hex3.exec(color))) { + return { + r: parseIntFromHex(match[1] + '' + match[1]), + g: parseIntFromHex(match[2] + '' + match[2]), + b: parseIntFromHex(match[3] + '' + match[3]), + format: named ? "name" : "hex" + }; + } + + return false; +} + +function validateWCAG2Parms(parms) { + // return valid WCAG2 parms for isReadable. + // If input parms are invalid, return {"level":"AA", "size":"small"} + var level, size; + parms = parms || {"level":"AA", "size":"small"}; + level = (parms.level || "AA").toUpperCase(); + size = (parms.size || "small").toLowerCase(); + if (level !== "AA" && level !== "AAA") { + level = "AA"; + } + if (size !== "small" && size !== "large") { + size = "small"; + } + return {"level":level, "size":size}; +} + +this.tinycolor = tinycolor; + +})()`; +} +// It is hacky way to make this function will be compiled preferentially by less +// resolve error: `ReferenceError: colorPalette is not defined` +// https://github.com/ant-design/ant-motion/issues/44 +.tinyColorMixin(); diff --git a/src/styles/compact.less b/src/styles/compact.less new file mode 100644 index 0000000..ef0008b --- /dev/null +++ b/src/styles/compact.less @@ -0,0 +1,4 @@ +@root-entry-name: default; + +@import './themes/compact.less'; +@import './core/index'; diff --git a/src/styles/core/base.less b/src/styles/core/base.less new file mode 100644 index 0000000..a704c55 --- /dev/null +++ b/src/styles/core/base.less @@ -0,0 +1,10 @@ +// Config global less under antd +[class^=~'@{ant-prefix}-'], +[class*=~' @{ant-prefix}-'] { + // remove the clear button of a text input control in IE10+ + &::-ms-clear, + input::-ms-clear, + input::-ms-reveal { + display: none; + } +} diff --git a/src/styles/core/global.less b/src/styles/core/global.less new file mode 100644 index 0000000..cb26cce --- /dev/null +++ b/src/styles/core/global.less @@ -0,0 +1,491 @@ +/* stylelint-disable property-no-vendor-prefix, at-rule-no-vendor-prefix */ + +// Reboot +// +// Normalization of HTML elements, manually forked from Normalize.css to remove +// styles targeting irrelevant browsers while applying new styles. +// +// Normalize is licensed MIT. https://github.com/necolas/normalize.css + +// HTML & Body reset +@{html-selector}, +body { + .square(100%); +} + +// remove the clear button of a text input control in IE10+ +input::-ms-clear, +input::-ms-reveal { + display: none; +} + +// Document +// +// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`. +// 2. Change the default font family in all browsers. +// 3. Correct the line height in all browsers. +// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS. +// 5. Setting @viewport causes scrollbars to overlap content in IE11 and Edge, so +// we force a non-overlapping, non-auto-hiding scrollbar to counteract. +// 6. Change the default tap highlight to be completely transparent in iOS. + +*, +*::before, +*::after { + box-sizing: border-box; // 1 +} + +@{html-selector} { + font-family: sans-serif; // 2 + line-height: 1.15; // 3 + -webkit-text-size-adjust: 100%; // 4 + -ms-text-size-adjust: 100%; // 4 + -ms-overflow-style: scrollbar; // 5 + -webkit-tap-highlight-color: fade(@black, 0%); // 6 +} + +// IE10+ doesn't honor `` in some cases. +@-ms-viewport { + width: device-width; +} + +// Body +// +// 1. remove the margin in all browsers. +// 2. As a best practice, apply a default `body-background`. + +body { + margin: 0; // 1 + color: @text-color; + font-size: @font-size-base; + font-family: @font-family; + font-variant: @font-variant-base; + line-height: @line-height-base; + background-color: @body-background; // 2 + font-feature-settings: @font-feature-settings-base; +} + +// Suppress the focus outline on elements that cannot be accessed via keyboard. +// This prevents an unwanted focus outline from appearing around elements that +// might still respond to pointer events. +// +// Credit: https://github.com/suitcss/base +[tabindex='-1']:focus { + outline: none !important; +} + +// Content grouping +// +// 1. Add the correct box sizing in Firefox. +// 2. Show the overflow in Edge and IE. + +hr { + box-sizing: content-box; // 1 + height: 0; // 1 + overflow: visible; // 2 +} + +// +// Typography +// + +// remove top margins from headings +// +// By default, `

`-`

` all receive top and bottom margins. We nuke the top +// margin for easier control within type scales as it avoids margin collapsing. +h1, +h2, +h3, +h4, +h5, +h6 { + margin-top: 0; + margin-bottom: 0.5em; + color: @heading-color; + font-weight: 500; +} + +// Reset margins on paragraphs +// +// Similarly, the top margin on `

`s get reset. However, we also reset the +// bottom margin to use `em` units instead of `em`. +p { + margin-top: 0; + margin-bottom: 1em; +} + +// Abbreviations +// +// 1. remove the bottom border in Firefox 39-. +// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. +// 3. Add explicit cursor to indicate changed behavior. +// 4. Duplicate behavior to the data-* attribute for our tooltip plugin + +abbr[title], +abbr[data-original-title] { + // 4 + text-decoration: underline; // 2 + text-decoration: underline dotted; // 2 + border-bottom: 0; // 1 + cursor: help; // 3 +} + +address { + margin-bottom: 1em; + font-style: normal; + line-height: inherit; +} + +input[type='text'], +input[type='password'], +input[type='number'], +textarea { + -webkit-appearance: none; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1em; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 500; +} + +dd { + margin-bottom: 0.5em; + margin-left: 0; // Undo browser default +} + +blockquote { + margin: 0 0 1em; +} + +dfn { + font-style: italic; // Add the correct font style in Android 4.3- +} + +b, +strong { + font-weight: bolder; // Add the correct font weight in Chrome, Edge, and Safari +} + +small { + font-size: 80%; // Add the correct font size in all browsers +} + +// +// Prevent `sub` and `sup` elements from affecting the line height in +// all browsers. +// + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +// +// Links +// + +a { + color: @link-color; + text-decoration: @link-decoration; + background-color: transparent; // remove the gray background on active links in IE 10. + outline: none; + cursor: pointer; + transition: color 0.3s; + -webkit-text-decoration-skip: objects; // remove gaps in links underline in iOS 8+ and Safari 8+. + + &:hover { + color: @link-hover-color; + } + + &:active { + color: @link-active-color; + } + + &:active, + &:hover { + text-decoration: @link-hover-decoration; + outline: 0; + } + + // https://github.com/ant-design/ant-design/issues/22503 + &:focus { + text-decoration: @link-focus-decoration; + outline: @link-focus-outline; + } + + &[disabled] { + color: @disabled-color; + cursor: not-allowed; + } +} + +// +// Code +// + +pre, +code, +kbd, +samp { + font-size: 1em; // Correct the odd `em` font sizing in all browsers. + font-family: @code-family; +} + +pre { + // remove browser default top margin + margin-top: 0; + // Reset browser default of `1em` to use `em`s + margin-bottom: 1em; + // Don't allow content to break outside + overflow: auto; +} + +// +// Figures +// +figure { + // Apply a consistent margin strategy (matches our type styles). + margin: 0 0 1em; +} + +// +// Images and content +// + +img { + vertical-align: middle; + border-style: none; // remove the border on images inside links in IE 10-. +} + +// Avoid 300ms click delay on touch devices that support the `touch-action` CSS property. +// +// In particular, unlike most other browsers, IE11+Edge on Windows 10 on touch devices and IE Mobile 10-11 +// DON'T remove the click delay when `` is present. +// However, they DO support emoving the click delay via `touch-action: manipulation`. +// See: +// * https://getbootstrap.com/docs/4.0/content/reboot/#click-delay-optimization-for-touch +// * http://caniuse.com/#feat=css-touch-action +// * https://patrickhlauke.github.io/touch/tests/results/#suppressing-300ms-delay + +a, +area, +button, +[role='button'], +input:not([type='range']), +label, +select, +summary, +textarea { + touch-action: manipulation; +} + +// +// Tables +// + +table { + border-collapse: collapse; // Prevent double borders +} + +caption { + padding-top: 0.75em; + padding-bottom: 0.3em; + color: @text-color-secondary; + text-align: left; + caption-side: bottom; +} + +// +// Forms +// + +input, +button, +select, +optgroup, +textarea { + margin: 0; // remove the margin in Firefox and Safari + color: inherit; + font-size: inherit; + font-family: inherit; + line-height: inherit; +} + +button, +input { + overflow: visible; // Show the overflow in Edge +} + +button, +select { + text-transform: none; // remove the inheritance of text transform in Firefox +} + +// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video` +// controls in Android 4. +// 2. Correct the inability to style clickable types in iOS and Safari. +button, +@{html-selector} [type="button"], /* 1 */ +[type="reset"], +[type="submit"] { + -webkit-appearance: button; // 2 +} + +// remove inner border and padding from Firefox, but don't restore the outline like Normalize. +button::-moz-focus-inner, +[type='button']::-moz-focus-inner, +[type='reset']::-moz-focus-inner, +[type='submit']::-moz-focus-inner { + padding: 0; + border-style: none; +} + +input[type='radio'], +input[type='checkbox'] { + box-sizing: border-box; // 1. Add the correct box sizing in IE 10- + padding: 0; // 2. remove the padding in IE 10- +} + +input[type='date'], +input[type='time'], +input[type='datetime-local'], +input[type='month'] { + // remove the default appearance of temporal inputs to avoid a Mobile Safari + // bug where setting a custom line-height prevents text from being vertically + // centered within the input. + // See https://bugs.webkit.org/show_bug.cgi?id=139848 + // and https://github.com/twbs/bootstrap/issues/11266 + -webkit-appearance: listbox; +} + +textarea { + overflow: auto; // remove the default vertical scrollbar in IE. + // Textareas should really only resize vertically so they don't break their (horizontal) containers. + resize: vertical; +} + +fieldset { + // Browsers set a default `min-width: min-content;` on fieldsets, + // unlike e.g. `

`s, which have `min-width: 0;` by default. + // So we reset that to ensure fieldsets behave more like a standard block element. + // See https://github.com/twbs/bootstrap/issues/12359 + // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements + min-width: 0; + margin: 0; + // Reset the default outline behavior of fieldsets so they don't affect page layout. + padding: 0; + border: 0; +} + +// 1. Correct the text wrapping in Edge and IE. +// 2. Correct the color inheritance from `fieldset` elements in IE. +legend { + display: block; + width: 100%; + max-width: 100%; // 1 + margin-bottom: 0.5em; + padding: 0; + color: inherit; // 2 + font-size: 1.5em; + line-height: inherit; + white-space: normal; // 1 +} + +progress { + vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera. +} + +// Correct the cursor style of incement and decement buttons in Chrome. +[type='number']::-webkit-inner-spin-button, +[type='number']::-webkit-outer-spin-button { + height: auto; +} + +[type='search'] { + // This overrides the extra rounded corners on search inputs in iOS so that our + // `.form-control` class can properly style them. Note that this cannot simply + // be added to `.form-control` as it's not specific enough. For details, see + // https://github.com/twbs/bootstrap/issues/11586. + outline-offset: -2px; // 2. Correct the outline style in Safari. + -webkit-appearance: none; +} + +// +// remove the inner padding and cancel buttons in Chrome and Safari on macOS. +// + +[type='search']::-webkit-search-cancel-button, +[type='search']::-webkit-search-decoration { + -webkit-appearance: none; +} + +// +// 1. Correct the inability to style clickable types in iOS and Safari. +// 2. Change font properties to `inherit` in Safari. +// + +::-webkit-file-upload-button { + font: inherit; // 2 + -webkit-appearance: button; // 1 +} + +// +// Correct element displays +// + +output { + display: inline-block; +} + +summary { + display: list-item; // Add the correct display in all browsers +} + +template { + display: none; // Add the correct display in IE +} + +// Always hide an element with the `hidden` HTML attribute (from PureCSS). +// Needed for proper display in IE 10-. +[hidden] { + display: none !important; +} + +mark { + padding: 0.2em; + background-color: @yellow-1; +} + +::selection { + color: @text-color-inverse; + background: @text-selection-bg; +} + +// Utility classes +.clearfix { + .clearfix(); +} diff --git a/src/styles/core/iconfont.less b/src/styles/core/iconfont.less new file mode 100644 index 0000000..597b854 --- /dev/null +++ b/src/styles/core/iconfont.less @@ -0,0 +1,22 @@ +@import '../themes/index'; +@import '../mixins/iconfont'; + +.@{iconfont-css-prefix} { + .iconfont-mixin(); + + // https://github.com/ant-design/ant-design/issues/33703 + & > & { + line-height: 0; + vertical-align: 0; + } + + &[tabindex] { + cursor: pointer; + } +} + +.@{iconfont-css-prefix}-spin, +.@{iconfont-css-prefix}-spin::before { + display: inline-block; + animation: loadingCircle 1s infinite linear; +} diff --git a/src/styles/core/index.less b/src/styles/core/index.less new file mode 100644 index 0000000..c493947 --- /dev/null +++ b/src/styles/core/index.less @@ -0,0 +1,5 @@ +@import '../mixins/index'; +@import 'base'; +@import 'global'; +@import 'iconfont'; +@import 'motion'; diff --git a/src/styles/core/motion.less b/src/styles/core/motion.less new file mode 100644 index 0000000..286d50e --- /dev/null +++ b/src/styles/core/motion.less @@ -0,0 +1,22 @@ +// @import '../mixins/motion'; This has moved to theme/xxx inside. +@import 'motion/fade'; +@import 'motion/move'; +@import 'motion/other'; +@import 'motion/slide'; +@import 'motion/zoom'; + +// For common/openAnimation +.ant-motion-collapse-legacy { + overflow: hidden; + + &-active { + transition: height @animation-duration-base @ease-in-out, + opacity @animation-duration-base @ease-in-out !important; + } +} + +.ant-motion-collapse { + overflow: hidden; + transition: height @animation-duration-base @ease-in-out, + opacity @animation-duration-base @ease-in-out !important; +} diff --git a/src/styles/core/motion/fade.less b/src/styles/core/motion/fade.less new file mode 100644 index 0000000..f4a9513 --- /dev/null +++ b/src/styles/core/motion/fade.less @@ -0,0 +1,34 @@ +.fade-motion(@className, @keyframeName) { + @name: ~'@{ant-prefix}-@{className}'; + .make-motion(@name, @keyframeName); + .@{name}-enter, + .@{name}-appear { + opacity: 0; + animation-timing-function: linear; + } + .@{name}-leave { + animation-timing-function: linear; + } +} + +.fade-motion(fade, antFade); + +@keyframes antFadeIn { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} + +@keyframes antFadeOut { + 0% { + opacity: 1; + } + + 100% { + opacity: 0; + } +} diff --git a/src/styles/core/motion/move.less b/src/styles/core/motion/move.less new file mode 100644 index 0000000..733f26d --- /dev/null +++ b/src/styles/core/motion/move.less @@ -0,0 +1,129 @@ +.move-motion(@className, @keyframeName) { + @name: ~'@{ant-prefix}-@{className}'; + .make-motion(@name, @keyframeName); + .@{name}-enter, + .@{name}-appear { + opacity: 0; + animation-timing-function: @ease-out-circ; + } + .@{name}-leave { + animation-timing-function: @ease-in-circ; + } +} + +.move-motion(move-up, antMoveUp); +.move-motion(move-down, antMoveDown); +.move-motion(move-left, antMoveLeft); +.move-motion(move-right, antMoveRight); + +@keyframes antMoveDownIn { + 0% { + transform: translateY(100%); + transform-origin: 0 0; + opacity: 0; + } + + 100% { + transform: translateY(0%); + transform-origin: 0 0; + opacity: 1; + } +} + +@keyframes antMoveDownOut { + 0% { + transform: translateY(0%); + transform-origin: 0 0; + opacity: 1; + } + + 100% { + transform: translateY(100%); + transform-origin: 0 0; + opacity: 0; + } +} + +@keyframes antMoveLeftIn { + 0% { + transform: translateX(-100%); + transform-origin: 0 0; + opacity: 0; + } + + 100% { + transform: translateX(0%); + transform-origin: 0 0; + opacity: 1; + } +} + +@keyframes antMoveLeftOut { + 0% { + transform: translateX(0%); + transform-origin: 0 0; + opacity: 1; + } + + 100% { + transform: translateX(-100%); + transform-origin: 0 0; + opacity: 0; + } +} + +@keyframes antMoveRightIn { + 0% { + transform: translateX(100%); + transform-origin: 0 0; + opacity: 0; + } + + 100% { + transform: translateX(0%); + transform-origin: 0 0; + opacity: 1; + } +} + +@keyframes antMoveRightOut { + 0% { + transform: translateX(0%); + transform-origin: 0 0; + opacity: 1; + } + + 100% { + transform: translateX(100%); + transform-origin: 0 0; + opacity: 0; + } +} + +@keyframes antMoveUpIn { + 0% { + transform: translateY(-100%); + transform-origin: 0 0; + opacity: 0; + } + + 100% { + transform: translateY(0%); + transform-origin: 0 0; + opacity: 1; + } +} + +@keyframes antMoveUpOut { + 0% { + transform: translateY(0%); + transform-origin: 0 0; + opacity: 1; + } + + 100% { + transform: translateY(-100%); + transform-origin: 0 0; + opacity: 0; + } +} diff --git a/src/styles/core/motion/other.less b/src/styles/core/motion/other.less new file mode 100644 index 0000000..d1a2549 --- /dev/null +++ b/src/styles/core/motion/other.less @@ -0,0 +1,51 @@ +@keyframes loadingCircle { + 100% { + transform: rotate(360deg); + } +} + +@click-animating-true: ~"[@{ant-prefix}-click-animating='true']"; +@click-animating-with-extra-node-true: ~"[@{ant-prefix}-click-animating-without-extra-node='true']"; + +@{click-animating-true}, +@{click-animating-with-extra-node-true} { + position: relative; +} + +html { + --antd-wave-shadow-color: @primary-color; + --scroll-bar: 0; +} + +@click-animating-with-extra-node-true-after: ~'@{click-animating-with-extra-node-true}::after'; + +@{click-animating-with-extra-node-true-after}, +.@{ant-prefix}-click-animating-node { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + display: block; + border-radius: inherit; + box-shadow: 0 0 0 0 @primary-color; + box-shadow: 0 0 0 0 var(--antd-wave-shadow-color); + opacity: 0.2; + animation: fadeEffect 2s @ease-out-circ, waveEffect 0.4s @ease-out-circ; + animation-fill-mode: forwards; + content: ''; + pointer-events: none; +} + +@keyframes waveEffect { + 100% { + box-shadow: 0 0 0 @primary-color; + box-shadow: 0 0 0 @wave-animation-width var(--antd-wave-shadow-color); + } +} + +@keyframes fadeEffect { + 100% { + opacity: 0; + } +} diff --git a/src/styles/core/motion/slide.less b/src/styles/core/motion/slide.less new file mode 100644 index 0000000..7831b4b --- /dev/null +++ b/src/styles/core/motion/slide.less @@ -0,0 +1,131 @@ +.slide-motion(@className, @keyframeName) { + @name: ~'@{ant-prefix}-@{className}'; + .make-motion(@name, @keyframeName); + .@{name}-enter, + .@{name}-appear { + transform: scale(0); + transform-origin: 0% 0%; + opacity: 0; + animation-timing-function: @ease-out-quint; + } + .@{name}-leave { + animation-timing-function: @ease-in-quint; + } +} + +.slide-motion(slide-up, antSlideUp); +.slide-motion(slide-down, antSlideDown); +.slide-motion(slide-left, antSlideLeft); +.slide-motion(slide-right, antSlideRight); + +@keyframes antSlideUpIn { + 0% { + transform: scaleY(0.8); + transform-origin: 0% 0%; + opacity: 0; + } + + 100% { + transform: scaleY(1); + transform-origin: 0% 0%; + opacity: 1; + } +} + +@keyframes antSlideUpOut { + 0% { + transform: scaleY(1); + transform-origin: 0% 0%; + opacity: 1; + } + + 100% { + transform: scaleY(0.8); + transform-origin: 0% 0%; + opacity: 0; + } +} + +@keyframes antSlideDownIn { + 0% { + transform: scaleY(0.8); + transform-origin: 100% 100%; + opacity: 0; + } + + 100% { + transform: scaleY(1); + transform-origin: 100% 100%; + opacity: 1; + } +} + +@keyframes antSlideDownOut { + 0% { + transform: scaleY(1); + transform-origin: 100% 100%; + opacity: 1; + } + + 100% { + transform: scaleY(0.8); + transform-origin: 100% 100%; + opacity: 0; + } +} + +@keyframes antSlideLeftIn { + 0% { + transform: scaleX(0.8); + transform-origin: 0% 0%; + opacity: 0; + } + + 100% { + transform: scaleX(1); + transform-origin: 0% 0%; + opacity: 1; + } +} + +@keyframes antSlideLeftOut { + 0% { + transform: scaleX(1); + transform-origin: 0% 0%; + opacity: 1; + } + + 100% { + transform: scaleX(0.8); + transform-origin: 0% 0%; + opacity: 0; + } +} + +@keyframes antSlideRightIn { + 0% { + transform: scaleX(0.8); + transform-origin: 100% 0%; + opacity: 0; + } + + 100% { + transform: scaleX(1); + transform-origin: 100% 0%; + opacity: 1; + } +} + +@keyframes antSlideRightOut { + 0% { + transform: scaleX(1); + transform-origin: 100% 0%; + opacity: 1; + } + + 100% { + transform: scaleX(0.8); + transform-origin: 100% 0%; + opacity: 0; + } +} diff --git a/src/styles/core/motion/zoom.less b/src/styles/core/motion/zoom.less new file mode 100644 index 0000000..72739b7 --- /dev/null +++ b/src/styles/core/motion/zoom.less @@ -0,0 +1,179 @@ +.zoom-motion(@className, @keyframeName, @duration: @animation-duration-base) { + @name: ~'@{ant-prefix}-@{className}'; + .make-motion(@name, @keyframeName, @duration); + .@{name}-enter, + .@{name}-appear { + transform: scale(0); // need this by yiminghe + opacity: 0; + animation-timing-function: @ease-out-circ; + + &-prepare { + transform: none; + } + } + .@{name}-leave { + animation-timing-function: @ease-in-out-circ; + } +} + +// For Modal, Select choosen item +.zoom-motion(zoom, antZoom); +// For Popover, Popconfirm, Dropdown +.zoom-motion(zoom-big, antZoomBig); +// For Tooltip +.zoom-motion(zoom-big-fast, antZoomBig, @animation-duration-fast); + +.zoom-motion(zoom-up, antZoomUp); +.zoom-motion(zoom-down, antZoomDown); +.zoom-motion(zoom-left, antZoomLeft); +.zoom-motion(zoom-right, antZoomRight); + +@keyframes antZoomIn { + 0% { + transform: scale(0.2); + opacity: 0; + } + + 100% { + transform: scale(1); + opacity: 1; + } +} + +@keyframes antZoomOut { + 0% { + transform: scale(1); + } + + 100% { + transform: scale(0.2); + opacity: 0; + } +} + +@keyframes antZoomBigIn { + 0% { + transform: scale(0.8); + opacity: 0; + } + + 100% { + transform: scale(1); + opacity: 1; + } +} + +@keyframes antZoomBigOut { + 0% { + transform: scale(1); + } + + 100% { + transform: scale(0.8); + opacity: 0; + } +} + +@keyframes antZoomUpIn { + 0% { + transform: scale(0.8); + transform-origin: 50% 0%; + opacity: 0; + } + + 100% { + transform: scale(1); + transform-origin: 50% 0%; + } +} + +@keyframes antZoomUpOut { + 0% { + transform: scale(1); + transform-origin: 50% 0%; + } + + 100% { + transform: scale(0.8); + transform-origin: 50% 0%; + opacity: 0; + } +} + +@keyframes antZoomLeftIn { + 0% { + transform: scale(0.8); + transform-origin: 0% 50%; + opacity: 0; + } + + 100% { + transform: scale(1); + transform-origin: 0% 50%; + } +} + +@keyframes antZoomLeftOut { + 0% { + transform: scale(1); + transform-origin: 0% 50%; + } + + 100% { + transform: scale(0.8); + transform-origin: 0% 50%; + opacity: 0; + } +} + +@keyframes antZoomRightIn { + 0% { + transform: scale(0.8); + transform-origin: 100% 50%; + opacity: 0; + } + + 100% { + transform: scale(1); + transform-origin: 100% 50%; + } +} + +@keyframes antZoomRightOut { + 0% { + transform: scale(1); + transform-origin: 100% 50%; + } + + 100% { + transform: scale(0.8); + transform-origin: 100% 50%; + opacity: 0; + } +} + +@keyframes antZoomDownIn { + 0% { + transform: scale(0.8); + transform-origin: 50% 100%; + opacity: 0; + } + + 100% { + transform: scale(1); + transform-origin: 50% 100%; + } +} + +@keyframes antZoomDownOut { + 0% { + transform: scale(1); + transform-origin: 50% 100%; + } + + 100% { + transform: scale(0.8); + transform-origin: 50% 100%; + opacity: 0; + } +} diff --git a/src/styles/css.js b/src/styles/css.js new file mode 100644 index 0000000..b67dcb9 --- /dev/null +++ b/src/styles/css.js @@ -0,0 +1 @@ +import './index.css'; \ No newline at end of file diff --git a/src/styles/dark.less b/src/styles/dark.less new file mode 100644 index 0000000..12a3731 --- /dev/null +++ b/src/styles/dark.less @@ -0,0 +1,4 @@ +@root-entry-name: default; + +@import './themes/dark.less'; +@import './core/index'; diff --git a/src/styles/default.css b/src/styles/default.css new file mode 100644 index 0000000..b363d91 --- /dev/null +++ b/src/styles/default.css @@ -0,0 +1,1248 @@ +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +/* stylelint-disable no-duplicate-selectors */ +/* stylelint-disable */ +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ +[class^=ant-]::-ms-clear, +[class*= ant-]::-ms-clear, +[class^=ant-] input::-ms-clear, +[class*= ant-] input::-ms-clear, +[class^=ant-] input::-ms-reveal, +[class*= ant-] input::-ms-reveal { + display: none; +} +/* stylelint-disable property-no-vendor-prefix, at-rule-no-vendor-prefix */ +html, +body { + width: 100%; + height: 100%; +} +input::-ms-clear, +input::-ms-reveal { + display: none; +} +*, +*::before, +*::after { + box-sizing: border-box; +} +html { + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + -ms-overflow-style: scrollbar; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +@-ms-viewport { + width: device-width; +} +body { + margin: 0; + color: rgba(0, 0, 0, 0.85); + font-size: 14px; + 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'; + font-variant: tabular-nums; + line-height: 1.5715; + background-color: #fff; + font-feature-settings: 'tnum'; +} +[tabindex='-1']:focus { + outline: none !important; +} +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} +h1, +h2, +h3, +h4, +h5, +h6 { + margin-top: 0; + margin-bottom: 0.5em; + color: rgba(0, 0, 0, 0.85); + font-weight: 500; +} +p { + margin-top: 0; + margin-bottom: 1em; +} +abbr[title], +abbr[data-original-title] { + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + border-bottom: 0; + cursor: help; +} +address { + margin-bottom: 1em; + font-style: normal; + line-height: inherit; +} +input[type='text'], +input[type='password'], +input[type='number'], +textarea { + -webkit-appearance: none; +} +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1em; +} +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} +dt { + font-weight: 500; +} +dd { + margin-bottom: 0.5em; + margin-left: 0; +} +blockquote { + margin: 0 0 1em; +} +dfn { + font-style: italic; +} +b, +strong { + font-weight: bolder; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sub { + bottom: -0.25em; +} +sup { + top: -0.5em; +} +a { + color: #1890ff; + text-decoration: none; + background-color: transparent; + outline: none; + cursor: pointer; + transition: color 0.3s; + -webkit-text-decoration-skip: objects; +} +a:hover { + color: #40a9ff; +} +a:active { + color: #096dd9; +} +a:active, +a:hover { + text-decoration: none; + outline: 0; +} +a:focus { + text-decoration: none; + outline: 0; +} +a[disabled] { + color: rgba(0, 0, 0, 0.25); + cursor: not-allowed; +} +pre, +code, +kbd, +samp { + font-size: 1em; + font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; +} +pre { + margin-top: 0; + margin-bottom: 1em; + overflow: auto; +} +figure { + margin: 0 0 1em; +} +img { + vertical-align: middle; + border-style: none; +} +a, +area, +button, +[role='button'], +input:not([type='range']), +label, +select, +summary, +textarea { + touch-action: manipulation; +} +table { + border-collapse: collapse; +} +caption { + padding-top: 0.75em; + padding-bottom: 0.3em; + color: rgba(0, 0, 0, 0.45); + text-align: left; + caption-side: bottom; +} +input, +button, +select, +optgroup, +textarea { + margin: 0; + color: inherit; + font-size: inherit; + font-family: inherit; + line-height: inherit; +} +button, +input { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} +button::-moz-focus-inner, +[type='button']::-moz-focus-inner, +[type='reset']::-moz-focus-inner, +[type='submit']::-moz-focus-inner { + padding: 0; + border-style: none; +} +input[type='radio'], +input[type='checkbox'] { + box-sizing: border-box; + padding: 0; +} +input[type='date'], +input[type='time'], +input[type='datetime-local'], +input[type='month'] { + -webkit-appearance: listbox; +} +textarea { + overflow: auto; + resize: vertical; +} +fieldset { + min-width: 0; + margin: 0; + padding: 0; + border: 0; +} +legend { + display: block; + width: 100%; + max-width: 100%; + margin-bottom: 0.5em; + padding: 0; + color: inherit; + font-size: 1.5em; + line-height: inherit; + white-space: normal; +} +progress { + vertical-align: baseline; +} +[type='number']::-webkit-inner-spin-button, +[type='number']::-webkit-outer-spin-button { + height: auto; +} +[type='search'] { + outline-offset: -2px; + -webkit-appearance: none; +} +[type='search']::-webkit-search-cancel-button, +[type='search']::-webkit-search-decoration { + -webkit-appearance: none; +} +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} +output { + display: inline-block; +} +summary { + display: list-item; +} +template { + display: none; +} +[hidden] { + display: none !important; +} +mark { + padding: 0.2em; + background-color: #feffe6; +} +::-moz-selection { + color: #fff; + background: #1890ff; +} +::selection { + color: #fff; + background: #1890ff; +} +.clearfix::before { + display: table; + content: ''; +} +.clearfix::after { + display: table; + clear: both; + content: ''; +} +.anticon { + display: inline-flex; + align-items: center; + color: inherit; + font-style: normal; + line-height: 0; + text-align: center; + text-transform: none; + vertical-align: -0.125em; + text-rendering: optimizelegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.anticon > * { + line-height: 1; +} +.anticon svg { + display: inline-block; +} +.anticon::before { + display: none; +} +.anticon .anticon-icon { + display: block; +} +.anticon > .anticon { + line-height: 0; + vertical-align: 0; +} +.anticon[tabindex] { + cursor: pointer; +} +.anticon-spin, +.anticon-spin::before { + display: inline-block; + animation: loadingCircle 1s infinite linear; +} +.ant-fade-enter, +.ant-fade-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-fade-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-fade-enter.ant-fade-enter-active, +.ant-fade-appear.ant-fade-appear-active { + animation-name: antFadeIn; + animation-play-state: running; +} +.ant-fade-leave.ant-fade-leave-active { + animation-name: antFadeOut; + animation-play-state: running; + pointer-events: none; +} +.ant-fade-enter, +.ant-fade-appear { + opacity: 0; + animation-timing-function: linear; +} +.ant-fade-leave { + animation-timing-function: linear; +} +@keyframes antFadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes antFadeOut { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} +.ant-move-up-enter, +.ant-move-up-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-move-up-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-move-up-enter.ant-move-up-enter-active, +.ant-move-up-appear.ant-move-up-appear-active { + animation-name: antMoveUpIn; + animation-play-state: running; +} +.ant-move-up-leave.ant-move-up-leave-active { + animation-name: antMoveUpOut; + animation-play-state: running; + pointer-events: none; +} +.ant-move-up-enter, +.ant-move-up-appear { + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-move-up-leave { + animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); +} +.ant-move-down-enter, +.ant-move-down-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-move-down-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-move-down-enter.ant-move-down-enter-active, +.ant-move-down-appear.ant-move-down-appear-active { + animation-name: antMoveDownIn; + animation-play-state: running; +} +.ant-move-down-leave.ant-move-down-leave-active { + animation-name: antMoveDownOut; + animation-play-state: running; + pointer-events: none; +} +.ant-move-down-enter, +.ant-move-down-appear { + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-move-down-leave { + animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); +} +.ant-move-left-enter, +.ant-move-left-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-move-left-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-move-left-enter.ant-move-left-enter-active, +.ant-move-left-appear.ant-move-left-appear-active { + animation-name: antMoveLeftIn; + animation-play-state: running; +} +.ant-move-left-leave.ant-move-left-leave-active { + animation-name: antMoveLeftOut; + animation-play-state: running; + pointer-events: none; +} +.ant-move-left-enter, +.ant-move-left-appear { + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-move-left-leave { + animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); +} +.ant-move-right-enter, +.ant-move-right-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-move-right-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-move-right-enter.ant-move-right-enter-active, +.ant-move-right-appear.ant-move-right-appear-active { + animation-name: antMoveRightIn; + animation-play-state: running; +} +.ant-move-right-leave.ant-move-right-leave-active { + animation-name: antMoveRightOut; + animation-play-state: running; + pointer-events: none; +} +.ant-move-right-enter, +.ant-move-right-appear { + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-move-right-leave { + animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); +} +@keyframes antMoveDownIn { + 0% { + transform: translateY(100%); + transform-origin: 0 0; + opacity: 0; + } + 100% { + transform: translateY(0%); + transform-origin: 0 0; + opacity: 1; + } +} +@keyframes antMoveDownOut { + 0% { + transform: translateY(0%); + transform-origin: 0 0; + opacity: 1; + } + 100% { + transform: translateY(100%); + transform-origin: 0 0; + opacity: 0; + } +} +@keyframes antMoveLeftIn { + 0% { + transform: translateX(-100%); + transform-origin: 0 0; + opacity: 0; + } + 100% { + transform: translateX(0%); + transform-origin: 0 0; + opacity: 1; + } +} +@keyframes antMoveLeftOut { + 0% { + transform: translateX(0%); + transform-origin: 0 0; + opacity: 1; + } + 100% { + transform: translateX(-100%); + transform-origin: 0 0; + opacity: 0; + } +} +@keyframes antMoveRightIn { + 0% { + transform: translateX(100%); + transform-origin: 0 0; + opacity: 0; + } + 100% { + transform: translateX(0%); + transform-origin: 0 0; + opacity: 1; + } +} +@keyframes antMoveRightOut { + 0% { + transform: translateX(0%); + transform-origin: 0 0; + opacity: 1; + } + 100% { + transform: translateX(100%); + transform-origin: 0 0; + opacity: 0; + } +} +@keyframes antMoveUpIn { + 0% { + transform: translateY(-100%); + transform-origin: 0 0; + opacity: 0; + } + 100% { + transform: translateY(0%); + transform-origin: 0 0; + opacity: 1; + } +} +@keyframes antMoveUpOut { + 0% { + transform: translateY(0%); + transform-origin: 0 0; + opacity: 1; + } + 100% { + transform: translateY(-100%); + transform-origin: 0 0; + opacity: 0; + } +} +@keyframes loadingCircle { + 100% { + transform: rotate(360deg); + } +} +[ant-click-animating='true'], +[ant-click-animating-without-extra-node='true'] { + position: relative; +} +html { + --antd-wave-shadow-color: #1890ff; + --scroll-bar: 0; +} +[ant-click-animating-without-extra-node='true']::after, +.ant-click-animating-node { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + display: block; + border-radius: inherit; + box-shadow: 0 0 0 0 #1890ff; + box-shadow: 0 0 0 0 var(--antd-wave-shadow-color); + opacity: 0.2; + animation: fadeEffect 2s cubic-bezier(0.08, 0.82, 0.17, 1), waveEffect 0.4s cubic-bezier(0.08, 0.82, 0.17, 1); + animation-fill-mode: forwards; + content: ''; + pointer-events: none; +} +@keyframes waveEffect { + 100% { + box-shadow: 0 0 0 #1890ff; + box-shadow: 0 0 0 6px var(--antd-wave-shadow-color); + } +} +@keyframes fadeEffect { + 100% { + opacity: 0; + } +} +.ant-slide-up-enter, +.ant-slide-up-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-slide-up-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-slide-up-enter.ant-slide-up-enter-active, +.ant-slide-up-appear.ant-slide-up-appear-active { + animation-name: antSlideUpIn; + animation-play-state: running; +} +.ant-slide-up-leave.ant-slide-up-leave-active { + animation-name: antSlideUpOut; + animation-play-state: running; + pointer-events: none; +} +.ant-slide-up-enter, +.ant-slide-up-appear { + transform: scale(0); + transform-origin: 0% 0%; + opacity: 0; + animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); +} +.ant-slide-up-leave { + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); +} +.ant-slide-down-enter, +.ant-slide-down-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-slide-down-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-slide-down-enter.ant-slide-down-enter-active, +.ant-slide-down-appear.ant-slide-down-appear-active { + animation-name: antSlideDownIn; + animation-play-state: running; +} +.ant-slide-down-leave.ant-slide-down-leave-active { + animation-name: antSlideDownOut; + animation-play-state: running; + pointer-events: none; +} +.ant-slide-down-enter, +.ant-slide-down-appear { + transform: scale(0); + transform-origin: 0% 0%; + opacity: 0; + animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); +} +.ant-slide-down-leave { + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); +} +.ant-slide-left-enter, +.ant-slide-left-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-slide-left-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-slide-left-enter.ant-slide-left-enter-active, +.ant-slide-left-appear.ant-slide-left-appear-active { + animation-name: antSlideLeftIn; + animation-play-state: running; +} +.ant-slide-left-leave.ant-slide-left-leave-active { + animation-name: antSlideLeftOut; + animation-play-state: running; + pointer-events: none; +} +.ant-slide-left-enter, +.ant-slide-left-appear { + transform: scale(0); + transform-origin: 0% 0%; + opacity: 0; + animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); +} +.ant-slide-left-leave { + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); +} +.ant-slide-right-enter, +.ant-slide-right-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-slide-right-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-slide-right-enter.ant-slide-right-enter-active, +.ant-slide-right-appear.ant-slide-right-appear-active { + animation-name: antSlideRightIn; + animation-play-state: running; +} +.ant-slide-right-leave.ant-slide-right-leave-active { + animation-name: antSlideRightOut; + animation-play-state: running; + pointer-events: none; +} +.ant-slide-right-enter, +.ant-slide-right-appear { + transform: scale(0); + transform-origin: 0% 0%; + opacity: 0; + animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); +} +.ant-slide-right-leave { + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); +} +@keyframes antSlideUpIn { + 0% { + transform: scaleY(0.8); + transform-origin: 0% 0%; + opacity: 0; + } + 100% { + transform: scaleY(1); + transform-origin: 0% 0%; + opacity: 1; + } +} +@keyframes antSlideUpOut { + 0% { + transform: scaleY(1); + transform-origin: 0% 0%; + opacity: 1; + } + 100% { + transform: scaleY(0.8); + transform-origin: 0% 0%; + opacity: 0; + } +} +@keyframes antSlideDownIn { + 0% { + transform: scaleY(0.8); + transform-origin: 100% 100%; + opacity: 0; + } + 100% { + transform: scaleY(1); + transform-origin: 100% 100%; + opacity: 1; + } +} +@keyframes antSlideDownOut { + 0% { + transform: scaleY(1); + transform-origin: 100% 100%; + opacity: 1; + } + 100% { + transform: scaleY(0.8); + transform-origin: 100% 100%; + opacity: 0; + } +} +@keyframes antSlideLeftIn { + 0% { + transform: scaleX(0.8); + transform-origin: 0% 0%; + opacity: 0; + } + 100% { + transform: scaleX(1); + transform-origin: 0% 0%; + opacity: 1; + } +} +@keyframes antSlideLeftOut { + 0% { + transform: scaleX(1); + transform-origin: 0% 0%; + opacity: 1; + } + 100% { + transform: scaleX(0.8); + transform-origin: 0% 0%; + opacity: 0; + } +} +@keyframes antSlideRightIn { + 0% { + transform: scaleX(0.8); + transform-origin: 100% 0%; + opacity: 0; + } + 100% { + transform: scaleX(1); + transform-origin: 100% 0%; + opacity: 1; + } +} +@keyframes antSlideRightOut { + 0% { + transform: scaleX(1); + transform-origin: 100% 0%; + opacity: 1; + } + 100% { + transform: scaleX(0.8); + transform-origin: 100% 0%; + opacity: 0; + } +} +.ant-zoom-enter, +.ant-zoom-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-enter.ant-zoom-enter-active, +.ant-zoom-appear.ant-zoom-appear-active { + animation-name: antZoomIn; + animation-play-state: running; +} +.ant-zoom-leave.ant-zoom-leave-active { + animation-name: antZoomOut; + animation-play-state: running; + pointer-events: none; +} +.ant-zoom-enter, +.ant-zoom-appear { + transform: scale(0); + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-zoom-enter-prepare, +.ant-zoom-appear-prepare { + transform: none; +} +.ant-zoom-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.ant-zoom-big-enter, +.ant-zoom-big-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-big-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-big-enter.ant-zoom-big-enter-active, +.ant-zoom-big-appear.ant-zoom-big-appear-active { + animation-name: antZoomBigIn; + animation-play-state: running; +} +.ant-zoom-big-leave.ant-zoom-big-leave-active { + animation-name: antZoomBigOut; + animation-play-state: running; + pointer-events: none; +} +.ant-zoom-big-enter, +.ant-zoom-big-appear { + transform: scale(0); + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-zoom-big-enter-prepare, +.ant-zoom-big-appear-prepare { + transform: none; +} +.ant-zoom-big-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.ant-zoom-big-fast-enter, +.ant-zoom-big-fast-appear { + animation-duration: 0.1s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-big-fast-leave { + animation-duration: 0.1s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-big-fast-enter.ant-zoom-big-fast-enter-active, +.ant-zoom-big-fast-appear.ant-zoom-big-fast-appear-active { + animation-name: antZoomBigIn; + animation-play-state: running; +} +.ant-zoom-big-fast-leave.ant-zoom-big-fast-leave-active { + animation-name: antZoomBigOut; + animation-play-state: running; + pointer-events: none; +} +.ant-zoom-big-fast-enter, +.ant-zoom-big-fast-appear { + transform: scale(0); + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-zoom-big-fast-enter-prepare, +.ant-zoom-big-fast-appear-prepare { + transform: none; +} +.ant-zoom-big-fast-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.ant-zoom-up-enter, +.ant-zoom-up-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-up-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-up-enter.ant-zoom-up-enter-active, +.ant-zoom-up-appear.ant-zoom-up-appear-active { + animation-name: antZoomUpIn; + animation-play-state: running; +} +.ant-zoom-up-leave.ant-zoom-up-leave-active { + animation-name: antZoomUpOut; + animation-play-state: running; + pointer-events: none; +} +.ant-zoom-up-enter, +.ant-zoom-up-appear { + transform: scale(0); + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-zoom-up-enter-prepare, +.ant-zoom-up-appear-prepare { + transform: none; +} +.ant-zoom-up-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.ant-zoom-down-enter, +.ant-zoom-down-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-down-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-down-enter.ant-zoom-down-enter-active, +.ant-zoom-down-appear.ant-zoom-down-appear-active { + animation-name: antZoomDownIn; + animation-play-state: running; +} +.ant-zoom-down-leave.ant-zoom-down-leave-active { + animation-name: antZoomDownOut; + animation-play-state: running; + pointer-events: none; +} +.ant-zoom-down-enter, +.ant-zoom-down-appear { + transform: scale(0); + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-zoom-down-enter-prepare, +.ant-zoom-down-appear-prepare { + transform: none; +} +.ant-zoom-down-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.ant-zoom-left-enter, +.ant-zoom-left-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-left-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-left-enter.ant-zoom-left-enter-active, +.ant-zoom-left-appear.ant-zoom-left-appear-active { + animation-name: antZoomLeftIn; + animation-play-state: running; +} +.ant-zoom-left-leave.ant-zoom-left-leave-active { + animation-name: antZoomLeftOut; + animation-play-state: running; + pointer-events: none; +} +.ant-zoom-left-enter, +.ant-zoom-left-appear { + transform: scale(0); + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-zoom-left-enter-prepare, +.ant-zoom-left-appear-prepare { + transform: none; +} +.ant-zoom-left-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.ant-zoom-right-enter, +.ant-zoom-right-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-right-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-right-enter.ant-zoom-right-enter-active, +.ant-zoom-right-appear.ant-zoom-right-appear-active { + animation-name: antZoomRightIn; + animation-play-state: running; +} +.ant-zoom-right-leave.ant-zoom-right-leave-active { + animation-name: antZoomRightOut; + animation-play-state: running; + pointer-events: none; +} +.ant-zoom-right-enter, +.ant-zoom-right-appear { + transform: scale(0); + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-zoom-right-enter-prepare, +.ant-zoom-right-appear-prepare { + transform: none; +} +.ant-zoom-right-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +@keyframes antZoomIn { + 0% { + transform: scale(0.2); + opacity: 0; + } + 100% { + transform: scale(1); + opacity: 1; + } +} +@keyframes antZoomOut { + 0% { + transform: scale(1); + } + 100% { + transform: scale(0.2); + opacity: 0; + } +} +@keyframes antZoomBigIn { + 0% { + transform: scale(0.8); + opacity: 0; + } + 100% { + transform: scale(1); + opacity: 1; + } +} +@keyframes antZoomBigOut { + 0% { + transform: scale(1); + } + 100% { + transform: scale(0.8); + opacity: 0; + } +} +@keyframes antZoomUpIn { + 0% { + transform: scale(0.8); + transform-origin: 50% 0%; + opacity: 0; + } + 100% { + transform: scale(1); + transform-origin: 50% 0%; + } +} +@keyframes antZoomUpOut { + 0% { + transform: scale(1); + transform-origin: 50% 0%; + } + 100% { + transform: scale(0.8); + transform-origin: 50% 0%; + opacity: 0; + } +} +@keyframes antZoomLeftIn { + 0% { + transform: scale(0.8); + transform-origin: 0% 50%; + opacity: 0; + } + 100% { + transform: scale(1); + transform-origin: 0% 50%; + } +} +@keyframes antZoomLeftOut { + 0% { + transform: scale(1); + transform-origin: 0% 50%; + } + 100% { + transform: scale(0.8); + transform-origin: 0% 50%; + opacity: 0; + } +} +@keyframes antZoomRightIn { + 0% { + transform: scale(0.8); + transform-origin: 100% 50%; + opacity: 0; + } + 100% { + transform: scale(1); + transform-origin: 100% 50%; + } +} +@keyframes antZoomRightOut { + 0% { + transform: scale(1); + transform-origin: 100% 50%; + } + 100% { + transform: scale(0.8); + transform-origin: 100% 50%; + opacity: 0; + } +} +@keyframes antZoomDownIn { + 0% { + transform: scale(0.8); + transform-origin: 50% 100%; + opacity: 0; + } + 100% { + transform: scale(1); + transform-origin: 50% 100%; + } +} +@keyframes antZoomDownOut { + 0% { + transform: scale(1); + transform-origin: 50% 100%; + } + 100% { + transform: scale(0.8); + transform-origin: 50% 100%; + opacity: 0; + } +} +.ant-motion-collapse-legacy { + overflow: hidden; +} +.ant-motion-collapse-legacy-active { + transition: height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1) !important; +} +.ant-motion-collapse { + overflow: hidden; + transition: height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1) !important; +} diff --git a/src/styles/default.less b/src/styles/default.less new file mode 100644 index 0000000..ecec084 --- /dev/null +++ b/src/styles/default.less @@ -0,0 +1,4 @@ +// This is same as `index.less` but given `root-entry-name` for `dist/antd.less` usage +@root-entry-name: default; + +@import './index'; diff --git a/src/styles/index-pure.less b/src/styles/index-pure.less new file mode 100644 index 0000000..04efa3b --- /dev/null +++ b/src/styles/index-pure.less @@ -0,0 +1,2 @@ +@import './themes/index'; +@import './core/index'; diff --git a/src/styles/index.css b/src/styles/index.css new file mode 100644 index 0000000..b363d91 --- /dev/null +++ b/src/styles/index.css @@ -0,0 +1,1248 @@ +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +/* stylelint-disable no-duplicate-selectors */ +/* stylelint-disable */ +/* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */ +[class^=ant-]::-ms-clear, +[class*= ant-]::-ms-clear, +[class^=ant-] input::-ms-clear, +[class*= ant-] input::-ms-clear, +[class^=ant-] input::-ms-reveal, +[class*= ant-] input::-ms-reveal { + display: none; +} +/* stylelint-disable property-no-vendor-prefix, at-rule-no-vendor-prefix */ +html, +body { + width: 100%; + height: 100%; +} +input::-ms-clear, +input::-ms-reveal { + display: none; +} +*, +*::before, +*::after { + box-sizing: border-box; +} +html { + font-family: sans-serif; + line-height: 1.15; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + -ms-overflow-style: scrollbar; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +@-ms-viewport { + width: device-width; +} +body { + margin: 0; + color: rgba(0, 0, 0, 0.85); + font-size: 14px; + 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'; + font-variant: tabular-nums; + line-height: 1.5715; + background-color: #fff; + font-feature-settings: 'tnum'; +} +[tabindex='-1']:focus { + outline: none !important; +} +hr { + box-sizing: content-box; + height: 0; + overflow: visible; +} +h1, +h2, +h3, +h4, +h5, +h6 { + margin-top: 0; + margin-bottom: 0.5em; + color: rgba(0, 0, 0, 0.85); + font-weight: 500; +} +p { + margin-top: 0; + margin-bottom: 1em; +} +abbr[title], +abbr[data-original-title] { + text-decoration: underline; + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + border-bottom: 0; + cursor: help; +} +address { + margin-bottom: 1em; + font-style: normal; + line-height: inherit; +} +input[type='text'], +input[type='password'], +input[type='number'], +textarea { + -webkit-appearance: none; +} +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1em; +} +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} +dt { + font-weight: 500; +} +dd { + margin-bottom: 0.5em; + margin-left: 0; +} +blockquote { + margin: 0 0 1em; +} +dfn { + font-style: italic; +} +b, +strong { + font-weight: bolder; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sub { + bottom: -0.25em; +} +sup { + top: -0.5em; +} +a { + color: #1890ff; + text-decoration: none; + background-color: transparent; + outline: none; + cursor: pointer; + transition: color 0.3s; + -webkit-text-decoration-skip: objects; +} +a:hover { + color: #40a9ff; +} +a:active { + color: #096dd9; +} +a:active, +a:hover { + text-decoration: none; + outline: 0; +} +a:focus { + text-decoration: none; + outline: 0; +} +a[disabled] { + color: rgba(0, 0, 0, 0.25); + cursor: not-allowed; +} +pre, +code, +kbd, +samp { + font-size: 1em; + font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; +} +pre { + margin-top: 0; + margin-bottom: 1em; + overflow: auto; +} +figure { + margin: 0 0 1em; +} +img { + vertical-align: middle; + border-style: none; +} +a, +area, +button, +[role='button'], +input:not([type='range']), +label, +select, +summary, +textarea { + touch-action: manipulation; +} +table { + border-collapse: collapse; +} +caption { + padding-top: 0.75em; + padding-bottom: 0.3em; + color: rgba(0, 0, 0, 0.45); + text-align: left; + caption-side: bottom; +} +input, +button, +select, +optgroup, +textarea { + margin: 0; + color: inherit; + font-size: inherit; + font-family: inherit; + line-height: inherit; +} +button, +input { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html [type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} +button::-moz-focus-inner, +[type='button']::-moz-focus-inner, +[type='reset']::-moz-focus-inner, +[type='submit']::-moz-focus-inner { + padding: 0; + border-style: none; +} +input[type='radio'], +input[type='checkbox'] { + box-sizing: border-box; + padding: 0; +} +input[type='date'], +input[type='time'], +input[type='datetime-local'], +input[type='month'] { + -webkit-appearance: listbox; +} +textarea { + overflow: auto; + resize: vertical; +} +fieldset { + min-width: 0; + margin: 0; + padding: 0; + border: 0; +} +legend { + display: block; + width: 100%; + max-width: 100%; + margin-bottom: 0.5em; + padding: 0; + color: inherit; + font-size: 1.5em; + line-height: inherit; + white-space: normal; +} +progress { + vertical-align: baseline; +} +[type='number']::-webkit-inner-spin-button, +[type='number']::-webkit-outer-spin-button { + height: auto; +} +[type='search'] { + outline-offset: -2px; + -webkit-appearance: none; +} +[type='search']::-webkit-search-cancel-button, +[type='search']::-webkit-search-decoration { + -webkit-appearance: none; +} +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} +output { + display: inline-block; +} +summary { + display: list-item; +} +template { + display: none; +} +[hidden] { + display: none !important; +} +mark { + padding: 0.2em; + background-color: #feffe6; +} +::-moz-selection { + color: #fff; + background: #1890ff; +} +::selection { + color: #fff; + background: #1890ff; +} +.clearfix::before { + display: table; + content: ''; +} +.clearfix::after { + display: table; + clear: both; + content: ''; +} +.anticon { + display: inline-flex; + align-items: center; + color: inherit; + font-style: normal; + line-height: 0; + text-align: center; + text-transform: none; + vertical-align: -0.125em; + text-rendering: optimizelegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.anticon > * { + line-height: 1; +} +.anticon svg { + display: inline-block; +} +.anticon::before { + display: none; +} +.anticon .anticon-icon { + display: block; +} +.anticon > .anticon { + line-height: 0; + vertical-align: 0; +} +.anticon[tabindex] { + cursor: pointer; +} +.anticon-spin, +.anticon-spin::before { + display: inline-block; + animation: loadingCircle 1s infinite linear; +} +.ant-fade-enter, +.ant-fade-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-fade-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-fade-enter.ant-fade-enter-active, +.ant-fade-appear.ant-fade-appear-active { + animation-name: antFadeIn; + animation-play-state: running; +} +.ant-fade-leave.ant-fade-leave-active { + animation-name: antFadeOut; + animation-play-state: running; + pointer-events: none; +} +.ant-fade-enter, +.ant-fade-appear { + opacity: 0; + animation-timing-function: linear; +} +.ant-fade-leave { + animation-timing-function: linear; +} +@keyframes antFadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes antFadeOut { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} +.ant-move-up-enter, +.ant-move-up-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-move-up-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-move-up-enter.ant-move-up-enter-active, +.ant-move-up-appear.ant-move-up-appear-active { + animation-name: antMoveUpIn; + animation-play-state: running; +} +.ant-move-up-leave.ant-move-up-leave-active { + animation-name: antMoveUpOut; + animation-play-state: running; + pointer-events: none; +} +.ant-move-up-enter, +.ant-move-up-appear { + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-move-up-leave { + animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); +} +.ant-move-down-enter, +.ant-move-down-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-move-down-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-move-down-enter.ant-move-down-enter-active, +.ant-move-down-appear.ant-move-down-appear-active { + animation-name: antMoveDownIn; + animation-play-state: running; +} +.ant-move-down-leave.ant-move-down-leave-active { + animation-name: antMoveDownOut; + animation-play-state: running; + pointer-events: none; +} +.ant-move-down-enter, +.ant-move-down-appear { + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-move-down-leave { + animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); +} +.ant-move-left-enter, +.ant-move-left-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-move-left-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-move-left-enter.ant-move-left-enter-active, +.ant-move-left-appear.ant-move-left-appear-active { + animation-name: antMoveLeftIn; + animation-play-state: running; +} +.ant-move-left-leave.ant-move-left-leave-active { + animation-name: antMoveLeftOut; + animation-play-state: running; + pointer-events: none; +} +.ant-move-left-enter, +.ant-move-left-appear { + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-move-left-leave { + animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); +} +.ant-move-right-enter, +.ant-move-right-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-move-right-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-move-right-enter.ant-move-right-enter-active, +.ant-move-right-appear.ant-move-right-appear-active { + animation-name: antMoveRightIn; + animation-play-state: running; +} +.ant-move-right-leave.ant-move-right-leave-active { + animation-name: antMoveRightOut; + animation-play-state: running; + pointer-events: none; +} +.ant-move-right-enter, +.ant-move-right-appear { + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-move-right-leave { + animation-timing-function: cubic-bezier(0.6, 0.04, 0.98, 0.34); +} +@keyframes antMoveDownIn { + 0% { + transform: translateY(100%); + transform-origin: 0 0; + opacity: 0; + } + 100% { + transform: translateY(0%); + transform-origin: 0 0; + opacity: 1; + } +} +@keyframes antMoveDownOut { + 0% { + transform: translateY(0%); + transform-origin: 0 0; + opacity: 1; + } + 100% { + transform: translateY(100%); + transform-origin: 0 0; + opacity: 0; + } +} +@keyframes antMoveLeftIn { + 0% { + transform: translateX(-100%); + transform-origin: 0 0; + opacity: 0; + } + 100% { + transform: translateX(0%); + transform-origin: 0 0; + opacity: 1; + } +} +@keyframes antMoveLeftOut { + 0% { + transform: translateX(0%); + transform-origin: 0 0; + opacity: 1; + } + 100% { + transform: translateX(-100%); + transform-origin: 0 0; + opacity: 0; + } +} +@keyframes antMoveRightIn { + 0% { + transform: translateX(100%); + transform-origin: 0 0; + opacity: 0; + } + 100% { + transform: translateX(0%); + transform-origin: 0 0; + opacity: 1; + } +} +@keyframes antMoveRightOut { + 0% { + transform: translateX(0%); + transform-origin: 0 0; + opacity: 1; + } + 100% { + transform: translateX(100%); + transform-origin: 0 0; + opacity: 0; + } +} +@keyframes antMoveUpIn { + 0% { + transform: translateY(-100%); + transform-origin: 0 0; + opacity: 0; + } + 100% { + transform: translateY(0%); + transform-origin: 0 0; + opacity: 1; + } +} +@keyframes antMoveUpOut { + 0% { + transform: translateY(0%); + transform-origin: 0 0; + opacity: 1; + } + 100% { + transform: translateY(-100%); + transform-origin: 0 0; + opacity: 0; + } +} +@keyframes loadingCircle { + 100% { + transform: rotate(360deg); + } +} +[ant-click-animating='true'], +[ant-click-animating-without-extra-node='true'] { + position: relative; +} +html { + --antd-wave-shadow-color: #1890ff; + --scroll-bar: 0; +} +[ant-click-animating-without-extra-node='true']::after, +.ant-click-animating-node { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + display: block; + border-radius: inherit; + box-shadow: 0 0 0 0 #1890ff; + box-shadow: 0 0 0 0 var(--antd-wave-shadow-color); + opacity: 0.2; + animation: fadeEffect 2s cubic-bezier(0.08, 0.82, 0.17, 1), waveEffect 0.4s cubic-bezier(0.08, 0.82, 0.17, 1); + animation-fill-mode: forwards; + content: ''; + pointer-events: none; +} +@keyframes waveEffect { + 100% { + box-shadow: 0 0 0 #1890ff; + box-shadow: 0 0 0 6px var(--antd-wave-shadow-color); + } +} +@keyframes fadeEffect { + 100% { + opacity: 0; + } +} +.ant-slide-up-enter, +.ant-slide-up-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-slide-up-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-slide-up-enter.ant-slide-up-enter-active, +.ant-slide-up-appear.ant-slide-up-appear-active { + animation-name: antSlideUpIn; + animation-play-state: running; +} +.ant-slide-up-leave.ant-slide-up-leave-active { + animation-name: antSlideUpOut; + animation-play-state: running; + pointer-events: none; +} +.ant-slide-up-enter, +.ant-slide-up-appear { + transform: scale(0); + transform-origin: 0% 0%; + opacity: 0; + animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); +} +.ant-slide-up-leave { + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); +} +.ant-slide-down-enter, +.ant-slide-down-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-slide-down-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-slide-down-enter.ant-slide-down-enter-active, +.ant-slide-down-appear.ant-slide-down-appear-active { + animation-name: antSlideDownIn; + animation-play-state: running; +} +.ant-slide-down-leave.ant-slide-down-leave-active { + animation-name: antSlideDownOut; + animation-play-state: running; + pointer-events: none; +} +.ant-slide-down-enter, +.ant-slide-down-appear { + transform: scale(0); + transform-origin: 0% 0%; + opacity: 0; + animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); +} +.ant-slide-down-leave { + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); +} +.ant-slide-left-enter, +.ant-slide-left-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-slide-left-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-slide-left-enter.ant-slide-left-enter-active, +.ant-slide-left-appear.ant-slide-left-appear-active { + animation-name: antSlideLeftIn; + animation-play-state: running; +} +.ant-slide-left-leave.ant-slide-left-leave-active { + animation-name: antSlideLeftOut; + animation-play-state: running; + pointer-events: none; +} +.ant-slide-left-enter, +.ant-slide-left-appear { + transform: scale(0); + transform-origin: 0% 0%; + opacity: 0; + animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); +} +.ant-slide-left-leave { + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); +} +.ant-slide-right-enter, +.ant-slide-right-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-slide-right-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-slide-right-enter.ant-slide-right-enter-active, +.ant-slide-right-appear.ant-slide-right-appear-active { + animation-name: antSlideRightIn; + animation-play-state: running; +} +.ant-slide-right-leave.ant-slide-right-leave-active { + animation-name: antSlideRightOut; + animation-play-state: running; + pointer-events: none; +} +.ant-slide-right-enter, +.ant-slide-right-appear { + transform: scale(0); + transform-origin: 0% 0%; + opacity: 0; + animation-timing-function: cubic-bezier(0.23, 1, 0.32, 1); +} +.ant-slide-right-leave { + animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06); +} +@keyframes antSlideUpIn { + 0% { + transform: scaleY(0.8); + transform-origin: 0% 0%; + opacity: 0; + } + 100% { + transform: scaleY(1); + transform-origin: 0% 0%; + opacity: 1; + } +} +@keyframes antSlideUpOut { + 0% { + transform: scaleY(1); + transform-origin: 0% 0%; + opacity: 1; + } + 100% { + transform: scaleY(0.8); + transform-origin: 0% 0%; + opacity: 0; + } +} +@keyframes antSlideDownIn { + 0% { + transform: scaleY(0.8); + transform-origin: 100% 100%; + opacity: 0; + } + 100% { + transform: scaleY(1); + transform-origin: 100% 100%; + opacity: 1; + } +} +@keyframes antSlideDownOut { + 0% { + transform: scaleY(1); + transform-origin: 100% 100%; + opacity: 1; + } + 100% { + transform: scaleY(0.8); + transform-origin: 100% 100%; + opacity: 0; + } +} +@keyframes antSlideLeftIn { + 0% { + transform: scaleX(0.8); + transform-origin: 0% 0%; + opacity: 0; + } + 100% { + transform: scaleX(1); + transform-origin: 0% 0%; + opacity: 1; + } +} +@keyframes antSlideLeftOut { + 0% { + transform: scaleX(1); + transform-origin: 0% 0%; + opacity: 1; + } + 100% { + transform: scaleX(0.8); + transform-origin: 0% 0%; + opacity: 0; + } +} +@keyframes antSlideRightIn { + 0% { + transform: scaleX(0.8); + transform-origin: 100% 0%; + opacity: 0; + } + 100% { + transform: scaleX(1); + transform-origin: 100% 0%; + opacity: 1; + } +} +@keyframes antSlideRightOut { + 0% { + transform: scaleX(1); + transform-origin: 100% 0%; + opacity: 1; + } + 100% { + transform: scaleX(0.8); + transform-origin: 100% 0%; + opacity: 0; + } +} +.ant-zoom-enter, +.ant-zoom-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-enter.ant-zoom-enter-active, +.ant-zoom-appear.ant-zoom-appear-active { + animation-name: antZoomIn; + animation-play-state: running; +} +.ant-zoom-leave.ant-zoom-leave-active { + animation-name: antZoomOut; + animation-play-state: running; + pointer-events: none; +} +.ant-zoom-enter, +.ant-zoom-appear { + transform: scale(0); + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-zoom-enter-prepare, +.ant-zoom-appear-prepare { + transform: none; +} +.ant-zoom-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.ant-zoom-big-enter, +.ant-zoom-big-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-big-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-big-enter.ant-zoom-big-enter-active, +.ant-zoom-big-appear.ant-zoom-big-appear-active { + animation-name: antZoomBigIn; + animation-play-state: running; +} +.ant-zoom-big-leave.ant-zoom-big-leave-active { + animation-name: antZoomBigOut; + animation-play-state: running; + pointer-events: none; +} +.ant-zoom-big-enter, +.ant-zoom-big-appear { + transform: scale(0); + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-zoom-big-enter-prepare, +.ant-zoom-big-appear-prepare { + transform: none; +} +.ant-zoom-big-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.ant-zoom-big-fast-enter, +.ant-zoom-big-fast-appear { + animation-duration: 0.1s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-big-fast-leave { + animation-duration: 0.1s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-big-fast-enter.ant-zoom-big-fast-enter-active, +.ant-zoom-big-fast-appear.ant-zoom-big-fast-appear-active { + animation-name: antZoomBigIn; + animation-play-state: running; +} +.ant-zoom-big-fast-leave.ant-zoom-big-fast-leave-active { + animation-name: antZoomBigOut; + animation-play-state: running; + pointer-events: none; +} +.ant-zoom-big-fast-enter, +.ant-zoom-big-fast-appear { + transform: scale(0); + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-zoom-big-fast-enter-prepare, +.ant-zoom-big-fast-appear-prepare { + transform: none; +} +.ant-zoom-big-fast-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.ant-zoom-up-enter, +.ant-zoom-up-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-up-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-up-enter.ant-zoom-up-enter-active, +.ant-zoom-up-appear.ant-zoom-up-appear-active { + animation-name: antZoomUpIn; + animation-play-state: running; +} +.ant-zoom-up-leave.ant-zoom-up-leave-active { + animation-name: antZoomUpOut; + animation-play-state: running; + pointer-events: none; +} +.ant-zoom-up-enter, +.ant-zoom-up-appear { + transform: scale(0); + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-zoom-up-enter-prepare, +.ant-zoom-up-appear-prepare { + transform: none; +} +.ant-zoom-up-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.ant-zoom-down-enter, +.ant-zoom-down-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-down-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-down-enter.ant-zoom-down-enter-active, +.ant-zoom-down-appear.ant-zoom-down-appear-active { + animation-name: antZoomDownIn; + animation-play-state: running; +} +.ant-zoom-down-leave.ant-zoom-down-leave-active { + animation-name: antZoomDownOut; + animation-play-state: running; + pointer-events: none; +} +.ant-zoom-down-enter, +.ant-zoom-down-appear { + transform: scale(0); + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-zoom-down-enter-prepare, +.ant-zoom-down-appear-prepare { + transform: none; +} +.ant-zoom-down-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.ant-zoom-left-enter, +.ant-zoom-left-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-left-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-left-enter.ant-zoom-left-enter-active, +.ant-zoom-left-appear.ant-zoom-left-appear-active { + animation-name: antZoomLeftIn; + animation-play-state: running; +} +.ant-zoom-left-leave.ant-zoom-left-leave-active { + animation-name: antZoomLeftOut; + animation-play-state: running; + pointer-events: none; +} +.ant-zoom-left-enter, +.ant-zoom-left-appear { + transform: scale(0); + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-zoom-left-enter-prepare, +.ant-zoom-left-appear-prepare { + transform: none; +} +.ant-zoom-left-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +.ant-zoom-right-enter, +.ant-zoom-right-appear { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-right-leave { + animation-duration: 0.2s; + animation-fill-mode: both; + animation-play-state: paused; +} +.ant-zoom-right-enter.ant-zoom-right-enter-active, +.ant-zoom-right-appear.ant-zoom-right-appear-active { + animation-name: antZoomRightIn; + animation-play-state: running; +} +.ant-zoom-right-leave.ant-zoom-right-leave-active { + animation-name: antZoomRightOut; + animation-play-state: running; + pointer-events: none; +} +.ant-zoom-right-enter, +.ant-zoom-right-appear { + transform: scale(0); + opacity: 0; + animation-timing-function: cubic-bezier(0.08, 0.82, 0.17, 1); +} +.ant-zoom-right-enter-prepare, +.ant-zoom-right-appear-prepare { + transform: none; +} +.ant-zoom-right-leave { + animation-timing-function: cubic-bezier(0.78, 0.14, 0.15, 0.86); +} +@keyframes antZoomIn { + 0% { + transform: scale(0.2); + opacity: 0; + } + 100% { + transform: scale(1); + opacity: 1; + } +} +@keyframes antZoomOut { + 0% { + transform: scale(1); + } + 100% { + transform: scale(0.2); + opacity: 0; + } +} +@keyframes antZoomBigIn { + 0% { + transform: scale(0.8); + opacity: 0; + } + 100% { + transform: scale(1); + opacity: 1; + } +} +@keyframes antZoomBigOut { + 0% { + transform: scale(1); + } + 100% { + transform: scale(0.8); + opacity: 0; + } +} +@keyframes antZoomUpIn { + 0% { + transform: scale(0.8); + transform-origin: 50% 0%; + opacity: 0; + } + 100% { + transform: scale(1); + transform-origin: 50% 0%; + } +} +@keyframes antZoomUpOut { + 0% { + transform: scale(1); + transform-origin: 50% 0%; + } + 100% { + transform: scale(0.8); + transform-origin: 50% 0%; + opacity: 0; + } +} +@keyframes antZoomLeftIn { + 0% { + transform: scale(0.8); + transform-origin: 0% 50%; + opacity: 0; + } + 100% { + transform: scale(1); + transform-origin: 0% 50%; + } +} +@keyframes antZoomLeftOut { + 0% { + transform: scale(1); + transform-origin: 0% 50%; + } + 100% { + transform: scale(0.8); + transform-origin: 0% 50%; + opacity: 0; + } +} +@keyframes antZoomRightIn { + 0% { + transform: scale(0.8); + transform-origin: 100% 50%; + opacity: 0; + } + 100% { + transform: scale(1); + transform-origin: 100% 50%; + } +} +@keyframes antZoomRightOut { + 0% { + transform: scale(1); + transform-origin: 100% 50%; + } + 100% { + transform: scale(0.8); + transform-origin: 100% 50%; + opacity: 0; + } +} +@keyframes antZoomDownIn { + 0% { + transform: scale(0.8); + transform-origin: 50% 100%; + opacity: 0; + } + 100% { + transform: scale(1); + transform-origin: 50% 100%; + } +} +@keyframes antZoomDownOut { + 0% { + transform: scale(1); + transform-origin: 50% 100%; + } + 100% { + transform: scale(0.8); + transform-origin: 50% 100%; + opacity: 0; + } +} +.ant-motion-collapse-legacy { + overflow: hidden; +} +.ant-motion-collapse-legacy-active { + transition: height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1) !important; +} +.ant-motion-collapse { + overflow: hidden; + transition: height 0.2s cubic-bezier(0.645, 0.045, 0.355, 1), opacity 0.2s cubic-bezier(0.645, 0.045, 0.355, 1) !important; +} diff --git a/src/styles/index.d.ts b/src/styles/index.d.ts new file mode 100644 index 0000000..d74e52e --- /dev/null +++ b/src/styles/index.d.ts @@ -0,0 +1 @@ +import './index.less'; diff --git a/src/styles/index.js b/src/styles/index.js new file mode 100644 index 0000000..17665f8 --- /dev/null +++ b/src/styles/index.js @@ -0,0 +1 @@ +import './index.less'; \ No newline at end of file diff --git a/src/styles/index.less b/src/styles/index.less new file mode 100644 index 0000000..7882cea --- /dev/null +++ b/src/styles/index.less @@ -0,0 +1,3 @@ +@root-entry-name: default; + +@import './index-pure.less'; \ No newline at end of file diff --git a/src/styles/mixins/box.less b/src/styles/mixins/box.less new file mode 100644 index 0000000..4bd3ffa --- /dev/null +++ b/src/styles/mixins/box.less @@ -0,0 +1,7 @@ +.box(@position: absolute) { + position: @position; + top: 0; + right: 0; + bottom: 0; + left: 0; +} diff --git a/src/styles/mixins/clearfix.less b/src/styles/mixins/clearfix.less new file mode 100644 index 0000000..07e89f8 --- /dev/null +++ b/src/styles/mixins/clearfix.less @@ -0,0 +1,16 @@ +// mixins for clearfix +// ------------------------ +.clearfix() { + // https://github.com/ant-design/ant-design/issues/21301#issuecomment-583955229 + &::before { + display: table; + content: ''; + } + + &::after { + // https://github.com/ant-design/ant-design/issues/21864 + display: table; + clear: both; + content: ''; + } +} diff --git a/src/styles/mixins/compact-item-vertical.less b/src/styles/mixins/compact-item-vertical.less new file mode 100644 index 0000000..503b1f0 --- /dev/null +++ b/src/styles/mixins/compact-item-vertical.less @@ -0,0 +1,41 @@ +.compact-item-vertical-border-radius(@prefix-cls) { + &-item:not(&-first-item):not(&-last-item) { + border-radius: 0; + } + + &-item&-first-item:not(&-last-item) { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + + &-item&-last-item:not(&-first-item) { + border-top-left-radius: 0; + border-top-right-radius: 0; + } +} + +.compact-item-vertical-border(@prefix-cls) { + // border collapse + &-item:not(&-last-item) { + margin-bottom: -@border-width-base; + } + + &-item { + &:hover, + &:focus, + &:active { + z-index: 2; + } + + &[disabled] { + z-index: 0; + } + } +} + +.compact-item-vertical(@prefix-cls) { + &-compact-vertical { + .compact-item-vertical-border(@prefix-cls); + .compact-item-vertical-border-radius(@prefix-cls); + } +} diff --git a/src/styles/mixins/compact-item.less b/src/styles/mixins/compact-item.less new file mode 100644 index 0000000..cb49027 --- /dev/null +++ b/src/styles/mixins/compact-item.less @@ -0,0 +1,133 @@ +.compact-item-border-radius(@prefix-cls, @bordered-item-cls: null) { + & when (@bordered-item-cls = null) { + // border-radius + &-item:not(&-first-item):not(&-last-item).@{prefix-cls} { + border-radius: 0; + } + + &-item.@{prefix-cls}&-first-item:not(&-last-item):not(&-item-rtl) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + + &-item.@{prefix-cls}&-last-item:not(&-first-item):not(&-item-rtl) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + // ----------rtl for first item---------- + &-item.@{prefix-cls}&-item-rtl&-first-item:not(&-last-item) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + // ----------rtl for last item---------- + &-item.@{prefix-cls}&-item-rtl&-last-item:not(&-first-item) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + } + + & when (not (@bordered-item-cls = null)) { + // border-radius + &-item:not(&-first-item):not(&-last-item).@{prefix-cls} > .@{bordered-item-cls} { + border-radius: 0; + } + + &-item&-first-item.@{prefix-cls}:not(&-last-item):not(&-item-rtl) > .@{bordered-item-cls} { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + + &-item&-last-item.@{prefix-cls}:not(&-first-item):not(&-item-rtl) > .@{bordered-item-cls} { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + // ----------rtl for first item---------- + &-item.@{prefix-cls}&-first-item&-item-rtl:not(&-last-item) > .@{bordered-item-cls} { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + // ----------rtl for last item---------- + &-item.@{prefix-cls}&-last-item&-item-rtl:not(&-first-item) > .@{bordered-item-cls} { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + } +} + +.compact-item-border(@prefix-cls, @bordered-item-cls: null, @special-open-cls) { + & when (@bordered-item-cls = null) { + // border collapse + &-item:not(&-last-item):not(&-item-rtl) { + margin-right: -@border-width-base; + } + + // rtl border collapse + &-item:not(&-last-item)&-item-rtl { + margin-left: -@border-width-base; + } + + &-item { + &:hover, + &:focus, + &:active { + z-index: 2; + } + + // Select has an extra focus className + & when (not (@special-item-cls = null)) { + &.@{special-item-cls} { + z-index: 2; + } + } + + &[disabled] { + z-index: 0; + } + } + } + + & when (not (@bordered-item-cls = null)) { + // border collapse + &-item:not(&-last-item) { + margin-right: -@border-width-base; + + &.@{prefix-cls}-compact-item-rtl { + margin-right: 0; + margin-left: -@border-width-base; + } + } + + &-item { + &:hover, + &:focus, + &:active { + > * { + z-index: 2; + } + } + + // Select has an special focus-item + & when (not (@special-item-cls = null)) { + &.@{special-item-cls} > * { + z-index: 2; + } + } + + &[disabled] > * { + z-index: 0; + } + } + } +} + +.compact-item(@prefix-cls, @bordered-item-cls: null, @special-item-cls: null) { + &-compact { + .compact-item-border(@prefix-cls, @bordered-item-cls, @special-item-cls); + + .compact-item-border-radius(@prefix-cls, @bordered-item-cls); + } +} diff --git a/src/styles/mixins/compatibility.less b/src/styles/mixins/compatibility.less new file mode 100644 index 0000000..9464a75 --- /dev/null +++ b/src/styles/mixins/compatibility.less @@ -0,0 +1,13 @@ +// Compatibility for browsers. + +// Placeholder text +.placeholder(@color: @input-placeholder-color) { + &::placeholder { + color: @color; + user-select: none; // https://github.com/ant-design/ant-design/pull/32639 + } + + &:placeholder-shown { + text-overflow: ellipsis; + } +} diff --git a/src/styles/mixins/customize.less b/src/styles/mixins/customize.less new file mode 100644 index 0000000..6f6fc18 --- /dev/null +++ b/src/styles/mixins/customize.less @@ -0,0 +1,181 @@ +// customize dark components background in popover containers(like Modal, Drawer, Card, Popover, Popconfirm, Notification, ...) +// for dark theme +.popover-customize-bg(@containerClass, @background: @popover-background, @prefix: @ant-prefix) + when + (@theme = dark) { + @picker-prefix-cls: ~'@{prefix}-picker'; + @slider-prefix-cls: ~'@{prefix}-slider'; + @anchor-prefix-cls: ~'@{prefix}-anchor'; + @collapse-prefix-cls: ~'@{prefix}-collapse'; + @tab-prefix-cls: ~'@{prefix}-tabs'; + @timeline-prefix-cls: ~'@{prefix}-timeline'; + @tree-prefix-cls: ~'@{prefix}-tree'; + @card-prefix-cls: ~'@{prefix}-card'; + @badge-prefix-cls: ~'@{prefix}-badge'; + @transfer-prefix-cls: ~'@{prefix}-transfer'; + @calendar-prefix-cls: ~'@{prefix}-picker-calendar'; + @calendar-picker-prefix-cls: ~'@{prefix}-picker'; + @table-prefix-cls: ~'@{prefix}-table'; + + @popover-border: @border-width-base @border-style-base @popover-customize-border-color; + + .@{containerClass} { + .@{picker-prefix-cls}-clear, + .@{slider-prefix-cls}-handle, + .@{anchor-prefix-cls}-wrapper, + .@{collapse-prefix-cls}-content, + .@{timeline-prefix-cls}-item-head, + .@{card-prefix-cls} { + background-color: @background; + } + + .@{transfer-prefix-cls} { + &-list { + &-header { + background: @background; + border-bottom: @popover-border; + } + &-content-item:not(.@{transfer-prefix-cls}-list-content-item-disabled):hover { + background-color: @item-hover-bg; + } + } + } + + tr.@{table-prefix-cls}-expanded-row { + &, + &:hover { + > td { + background: #272727; + } + } + } + .@{table-prefix-cls}.@{table-prefix-cls}-small { + thead { + > tr { + > th { + background-color: @background; + border-bottom: @popover-border; + } + } + } + } + .@{table-prefix-cls} { + background-color: @background; + .@{table-prefix-cls}-row-expand-icon { + border: @popover-border; + } + + tfoot { + > tr { + > th, + > td { + border-bottom: @popover-border; + } + } + } + + thead { + > tr { + > th { + background-color: #272727; + border-bottom: @popover-border; + } + } + } + + tbody { + > tr { + > td { + border-bottom: @popover-border; + &.@{table-prefix-cls}-cell-fix-left, + &.@{table-prefix-cls}-cell-fix-right { + background-color: @background; + } + } + &.@{table-prefix-cls}-row:hover { + > td { + background: @table-header-sort-active-bg; + } + } + } + } + &.@{table-prefix-cls}-bordered { + .@{table-prefix-cls}-title { + border: @popover-border; + } + + // ============================= Cell ============================= + thead > tr > th, + tbody > tr > td, + tfoot > tr > th, + tfoot > tr > td { + border-right: @popover-border; + } + + // Fixed right should provides additional border + .@{table-prefix-cls}-cell-fix-right-first::after { + border-right: @popover-border; + } + + // ============================ Header ============================ + table > { + thead { + > tr:not(:last-child) > th { + border-bottom: @border-width-base @border-style-base @border-color-split; + } + } + } + + // =========================== Content ============================ + .@{table-prefix-cls}-container { + border: @popover-border; + } + + // ========================== Expandable ========================== + .@{table-prefix-cls}-expanded-row-fixed { + &::after { + border-right: @popover-border; + } + } + + .@{table-prefix-cls}-footer { + border: @popover-border; + } + } + .@{table-prefix-cls}-filter-trigger-container-open { + background-color: #525252; + } + } + + .@{calendar-prefix-cls}-full { + background-color: @background; + .@{calendar-picker-prefix-cls}-panel { + background-color: @background; + .@{calendar-prefix-cls}-date { + border-top: 2px solid @popover-customize-border-color; + } + } + } + + .@{tab-prefix-cls} { + &.@{tab-prefix-cls}-card .@{tab-prefix-cls}-card-bar .@{tab-prefix-cls}-tab-active { + background-color: @background; + border-bottom: @border-width-base solid @background; + } + } + + .@{badge-prefix-cls} { + &-count { + box-shadow: 0 0 0 1px @background; + } + } + + .@{tree-prefix-cls} { + &-show-line { + .@{tree-prefix-cls}-switcher { + background: @background; + } + } + } + } +} diff --git a/src/styles/mixins/iconfont.less b/src/styles/mixins/iconfont.less new file mode 100644 index 0000000..aeb4e96 --- /dev/null +++ b/src/styles/mixins/iconfont.less @@ -0,0 +1,29 @@ +.iconfont-mixin() { + display: inline-flex; + align-items: center; + color: @icon-color; + font-style: normal; + line-height: 0; + text-align: center; + text-transform: none; + vertical-align: -0.125em; // for SVG icon, see https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4 + text-rendering: optimizelegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + > * { + line-height: 1; + } + + svg { + display: inline-block; + } + + &::before { + display: none; // dont display old icon. + } + + & &-icon { + display: block; + } +} diff --git a/src/styles/mixins/index.less b/src/styles/mixins/index.less new file mode 100644 index 0000000..5438846 --- /dev/null +++ b/src/styles/mixins/index.less @@ -0,0 +1,16 @@ +// Mixins +// -------------------------------------------------- +@import 'size'; +@import 'compatibility'; +@import 'clearfix'; +@import 'iconfont'; +@import 'typography'; +@import 'customize'; +@import 'box'; +@import 'modal-mask'; +@import 'motion'; +@import 'reset'; +@import 'operation-unit'; +@import 'rounded-arrow'; +@import 'compact-item'; +@import 'compact-item-vertical'; diff --git a/src/styles/mixins/modal-mask.less b/src/styles/mixins/modal-mask.less new file mode 100644 index 0000000..b406bc1 --- /dev/null +++ b/src/styles/mixins/modal-mask.less @@ -0,0 +1,30 @@ +@import 'box'; + +.modal-mask() { + pointer-events: none; + + &.@{ant-prefix}-zoom-enter, + &.@{ant-prefix}-zoom-appear { + transform: none; // reset scale avoid mousePosition bug + opacity: 0; + animation-duration: @animation-duration-slow; + user-select: none; // https://github.com/ant-design/ant-design/issues/11777 + } + + &-mask { + .box(fixed); + z-index: @zindex-modal-mask; + height: 100%; + background-color: @modal-mask-bg; + + &-hidden { + display: none; + } + } + + &-wrap { + .box(fixed); + overflow: auto; + outline: 0; + } +} diff --git a/src/styles/mixins/motion.less b/src/styles/mixins/motion.less new file mode 100644 index 0000000..1e15350 --- /dev/null +++ b/src/styles/mixins/motion.less @@ -0,0 +1,33 @@ +.motion-common(@duration: @animation-duration-base) { + animation-duration: @duration; + animation-fill-mode: both; +} + +.motion-common-leave(@duration: @animation-duration-base) { + animation-duration: @duration; + animation-fill-mode: both; +} + +.make-motion(@className, @keyframeName, @duration: @animation-duration-base) { + .@{className}-enter, + .@{className}-appear { + .motion-common(@duration); + + animation-play-state: paused; + } + .@{className}-leave { + .motion-common-leave(@duration); + + animation-play-state: paused; + } + .@{className}-enter.@{className}-enter-active, + .@{className}-appear.@{className}-appear-active { + animation-name: ~'@{keyframeName}In'; + animation-play-state: running; + } + .@{className}-leave.@{className}-leave-active { + animation-name: ~'@{keyframeName}Out'; + animation-play-state: running; + pointer-events: none; + } +} diff --git a/src/styles/mixins/operation-unit.less b/src/styles/mixins/operation-unit.less new file mode 100644 index 0000000..b695171 --- /dev/null +++ b/src/styles/mixins/operation-unit.less @@ -0,0 +1,15 @@ +.operation-unit() { + color: @link-color; + outline: none; + cursor: pointer; + transition: color 0.3s; + + &:focus-visible, + &:hover { + color: @link-hover-color; + } + + &:active { + color: @link-active-color; + } +} diff --git a/src/styles/mixins/reset.less b/src/styles/mixins/reset.less new file mode 100644 index 0000000..905c16e --- /dev/null +++ b/src/styles/mixins/reset.less @@ -0,0 +1,11 @@ +.reset-component() { + box-sizing: border-box; + margin: 0; + padding: 0; + color: @text-color; + font-size: @font-size-base; + font-variant: @font-variant-base; + line-height: @line-height-base; + list-style: none; + font-feature-settings: @font-feature-settings-base; +} diff --git a/src/styles/mixins/rounded-arrow.less b/src/styles/mixins/rounded-arrow.less new file mode 100644 index 0000000..1c82643 --- /dev/null +++ b/src/styles/mixins/rounded-arrow.less @@ -0,0 +1,44 @@ +.roundedArrow(@width, @outer-radius, @bg-color: var(--antd-arrow-background-color)) { + @corner-height: unit(((@outer-radius) * (1 - 1 / sqrt(2)))); + + @width-without-unit: unit(@width); + @outer-radius-without-unit: unit(@outer-radius); + @inner-radius-without-unit: unit(@arrow-border-radius); + + @a-x: @width-without-unit - @corner-height; + @a-y: 2 * @width-without-unit + @corner-height; + @b-x: @a-x + @outer-radius-without-unit * (1 / sqrt(2)); + @b-y: 2 * @width-without-unit; + @c-x: 2 * @width-without-unit - @inner-radius-without-unit; + @c-y: 2 * @width-without-unit; + @d-x: 2 * @width-without-unit; + @d-y: 2 * @width-without-unit - @inner-radius-without-unit; + @e-x: 2 * @width-without-unit; + @e-y: @f-y + @outer-radius-without-unit * (1 / sqrt(2)); + @f-x: 2 * @width-without-unit + @corner-height; + @f-y: @width-without-unit - @corner-height; + @g-x: @f-x - 1; + @g-y: @f-y; + @h-x: @a-x; + @h-y: @a-y - 1; + + border-radius: 0 0 @arrow-border-radius; + pointer-events: none; + + &::before { + position: absolute; + top: -@width; + left: -@width; + width: @width * 3; + height: @width * 3; + background: @bg-color; + // Hack firefox: https://github.com/ant-design/ant-design/pull/33710#issuecomment-1015287825 + background-repeat: no-repeat; + background-position: ceil(-@width + 1px) ceil(-@width + 1px); + content: ''; + clip-path: inset(33% 33%); // For browsers that do not support path() + clip-path: path( + 'M @{a-x} @{a-y} A @{outer-radius-without-unit} @{outer-radius-without-unit} 0 0 1 @{b-x} @{b-y} L @{c-x} @{c-y} A @{inner-radius-without-unit} @{inner-radius-without-unit} 0 0 0 @{d-x} @{d-y} L @{e-x} @{e-y} A @{outer-radius-without-unit} @{outer-radius-without-unit} 0 0 1 @{f-x} @{f-y} L @{g-x} @{g-y} L @{h-x} @{h-y} Z' + ); + } +} diff --git a/src/styles/mixins/size.less b/src/styles/mixins/size.less new file mode 100644 index 0000000..a8be650 --- /dev/null +++ b/src/styles/mixins/size.less @@ -0,0 +1,10 @@ +// Sizing shortcuts + +.size(@width; @height) { + width: @width; + height: @height; +} + +.square(@size) { + .size(@size; @size); +} diff --git a/src/styles/mixins/typography.less b/src/styles/mixins/typography.less new file mode 100644 index 0000000..71a4d39 --- /dev/null +++ b/src/styles/mixins/typography.less @@ -0,0 +1,58 @@ +// =============== Common =============== +.typography-paragraph() { + margin-bottom: 1em; +} + +.typography-title(@fontSize; @fontWeight; @lineHeight; @headingColor; @headingMarginBottom;) { + margin-bottom: @headingMarginBottom; + color: @headingColor; + font-weight: @fontWeight; + font-size: @fontSize; + line-height: @lineHeight; +} + +.typography-title-1() { + .typography-title( + @heading-1-size, + @typography-title-font-weight, + 1.23, + @heading-color, + @typography-title-margin-bottom + ); +} +.typography-title-2() { + .typography-title( + @heading-2-size, + @typography-title-font-weight, + 1.35, + @heading-color, + @typography-title-margin-bottom + ); +} +.typography-title-3() { + .typography-title( + @heading-3-size, + @typography-title-font-weight, + 1.35, + @heading-color, + @typography-title-margin-bottom + ); +} +.typography-title-4() { + .typography-title( + @heading-4-size, + @typography-title-font-weight, + 1.4, + @heading-color, + @typography-title-margin-bottom + ); +} +.typography-title-5() { + .typography-title( + @heading-5-size, + @typography-title-font-weight, + 1.5, + @heading-color, + @typography-title-margin-bottom + ); +} diff --git a/src/styles/themes/compact.less b/src/styles/themes/compact.less new file mode 100644 index 0000000..bd0b01d --- /dev/null +++ b/src/styles/themes/compact.less @@ -0,0 +1,295 @@ +@import './default.less'; + +@line-height-base: 1.66667; +@mode: compact; +@font-size-base: 12px; +@font-size-lg: @font-size-base + 2px; + +// default paddings +@default-padding-lg: 24px; // containers +@default-padding-md: 16px; // small containers and buttons +@default-padding-sm: 12px; // Form controls and items +@default-padding-xs: 8px; // small items +@default-padding-xss: 4px; // more small + +// vertical paddings +@padding-lg: 16px; // containers +@padding-md: 8px; // small containers and buttons +@padding-sm: 8px; // Form controls and items +@padding-xs: 4px; // small items +@padding-xss: 0px; // more small + +// vertical padding for all form controls +@control-padding-horizontal: @padding-sm; +@control-padding-horizontal-sm: @default-padding-xs; + +// vertical margins +@margin-lg: 16px; // containers +@margin-md: 8px; // small containers and buttons +@margin-sm: 8px; // Form controls and items +@margin-xs: 4px; // small items +@margin-xss: 0px; // more small + +// height rules +@height-base: 28px; +@height-lg: 32px; +@height-sm: 22px; + +// Button +// --- +@btn-padding-horizontal-base: @default-padding-sm - 1px; +@btn-padding-horizontal-lg: @btn-padding-horizontal-base; +@btn-padding-horizontal-sm: @default-padding-xs - 1px; +@btn-square-only-icon-size-lg: 16px; +@btn-square-only-icon-size: 14px; +@btn-square-only-icon-size-sm: 12px; + +// Breadcrumb +// --- +@breadcrumb-font-size: @font-size-base; +@breadcrumb-icon-font-size: @font-size-base; + +//Dropdown +@dropdown-line-height: 18px; + +// Menu +@menu-item-padding-horizontal: 12px; +@menu-horizontal-line-height: 38px; +@menu-inline-toplevel-item-height: 32px; +@menu-item-height: 32px; +@menu-item-vertical-margin: 0px; +@menu-item-boundary-margin: 0px; +@menu-icon-margin-right: 8px; + +// Checkbox +@checkbox-size: 14px; +@checkbox-group-item-margin-right: 6px; + +// picker +@picker-panel-cell-height: 22px; +@picker-panel-cell-width: 32px; +@picker-text-height: 32px; +@picker-time-panel-cell-height: 24px; +@picker-panel-without-time-cell-height: 48px; + +// Form +// --- +@form-item-margin-bottom: 16px; +@form-vertical-label-padding: 0 0 4px; + +// Rate +// --- +@rate-star-size: 16px; + +// Radio +// --- +@radio-size: 14px; +@radio-wrapper-margin-right: 6px; + +// Switch +// --- +@switch-height: 20px; +@switch-sm-height: 14px; +@switch-min-width: 40px; +@switch-sm-min-width: 24px; +@switch-inner-margin-min: 4px; +@switch-inner-margin-max: 22px; + +// Slider +// --- +@slider-handle-size: 12px; +@slider-handle-margin-top: -4px; + +// Input +// --- +@input-padding-vertical-base: round( + max( + (round(((@input-height-base - @font-size-base * @line-height-base) / 2) * 10) / 10) - + @border-width-base, + 2px + ) +); +@input-padding-horizontal-lg: 11px; + +// PageHeader +// --- +@page-header-padding: 16px; +@page-header-padding-vertical: 8px; +@page-header-heading-title: 16px; +@page-header-heading-sub-title: 12px; +@page-header-tabs-tab-font-size: 14px; + +// Pagination +// --- +@pagination-mini-options-size-changer-top: 1px; +@pagination-item-size-sm: 22px; + +// Cascader +// ---- +@cascader-dropdown-line-height: @dropdown-line-height; + +// Select +// --- +@select-dropdown-height: @height-base; +@select-single-item-height-lg: 32px; +@select-multiple-item-height: @input-height-base - max(@input-padding-vertical-base, 4) * 2; // Normal 24px +@select-multiple-item-height-lg: 24px; +@select-multiple-item-spacing-half: 3px; + +// Tree +// --- +@tree-title-height: 20px; + +// Transfer +// --- +@transfer-item-padding-vertical: 3px; +@transfer-list-search-icon-top: 8px; +@transfer-header-height: 36px; + +// Comment +// --- +@comment-actions-margin-bottom: 0px; +@comment-actions-margin-top: @margin-xs; +@comment-content-detail-p-margin-bottom: 0px; + +// Steps +// --- +@steps-icon-size: 24px; +@steps-icon-custom-size: 20px; +@steps-icon-custom-font-size: 20px; +@steps-icon-custom-top: 2px; +@steps-icon-margin: 2px 8px 2px 0; +@steps-icon-font-size: @font-size-base; +@steps-dot-top: 4px; +@steps-icon-top: 0px; +@steps-small-icon-size: 20px; +@steps-vertical-icon-width: 12px; +@steps-vertical-tail-width: 12px; +@steps-vertical-tail-width-sm: 10px; +// Collapse +// --- +//@collapse-header-padding-extra: 32px; +@collapse-content-padding: @padding-md @padding-lg; + +// List +// --- +@list-item-meta-description-font-size: @font-size-sm; +@list-item-padding-sm: 4px 12px; +@list-item-padding-lg: 12px 16px; + +// Drawer +// --- +@drawer-header-padding: 11px @padding-lg; +@drawer-footer-padding-vertical: @padding-sm; +@drawer-footer-padding-horizontal: @padding-sm; +@drawer-header-close-size: 44px; + +// Modal +// -- +@modal-header-padding-vertical: 11px; +@modal-header-padding: @modal-header-padding-vertical @modal-header-padding-horizontal; +@modal-footer-padding-vertical: @padding-sm; +@modal-header-close-size: @modal-header-title-line-height + 2 * @modal-header-padding-vertical; +@modal-confirm-body-padding: 24px 24px 16px; + +// Message +// --- +@message-notice-content-padding: 8px 16px; + +// popover +// -- +@popover-min-height: 28px; +@popover-padding-horizontal: @default-padding-sm; + +// Card +// --- +@card-head-height: 36px; +@card-head-font-size: @card-head-font-size-sm; +@card-head-padding: 8.5px; +@card-padding-base: 12px; +@card-padding-base-sm: @card-padding-base; +@card-head-height-sm: 30px; +@card-head-padding-sm: 6px; +@card-actions-li-margin: 4px 0; +@card-head-tabs-margin-bottom: -9px; + +// Table +// --- +@table-padding-vertical: 12px; +@table-padding-horizontal: 8px; +@table-padding-vertical-md: 8px; +@table-padding-horizontal-md: 8px; +@table-padding-vertical-sm: 4px; +@table-padding-horizontal-sm: 4px; +@table-selection-column-width: 32px; + +// Statistic +// --- +@statistic-content-font-size: 20px; + +// Alert +// --- +@alert-with-description-no-icon-padding-vertical: 7px; +@alert-with-description-padding-vertical: 11px; +@alert-icon-top: 7px + @font-size-base * (@line-height-base / 2) - (@font-size-base / 2); +@alert-with-description-icon-size: 20px; + +// Skeleton +// --- +@skeleton-paragraph-margin-top: 20px; +@skeleton-paragraph-li-margin-top: 12px; +@skeleton-paragraph-li-height: 14px; +@skeleton-title-height: 14px; +@skeleton-title-paragraph-margin-top: 20px; + +// Descriptions +@descriptions-title-margin-bottom: 8px; +@descriptions-default-padding: 12px @padding-lg; +@descriptions-item-padding-bottom: @padding-xs; + +// Avatar +// --- +@avatar-size-base: 28px; +@avatar-size-lg: 32px; +@avatar-size-sm: 22px; +@avatar-font-size-base: 16px; +@avatar-font-size-lg: 20px; +@avatar-font-size-sm: 12px; + +// Badge +// --- +@badge-height: 18px; + +// Tag +// --- +@tag-line-height: 18px; + +// Notification +// --- +@notification-padding-vertical: 12px; +@notification-padding-horizontal: 16px; + +// Result +// --- +@result-title-font-size: 20px; +@result-icon-font-size: 64px; +@result-extra-margin: 24px 0 0 0; + +// Anchor +// --- +@anchor-link-top: 4px; +@anchor-link-left: 16px; +@anchor-link-padding: @anchor-link-top 0 @anchor-link-top @anchor-link-left; + +// Tabs +// --- +@tabs-card-horizontal-padding: 4px @padding-md; + +// Progress +// --- +@progress-circle-text-font-size: 0.833333em; + +// Image +// --- +@image-size-base: 48px; +@image-font-size-base: 24px; diff --git a/src/styles/themes/dark.less b/src/styles/themes/dark.less new file mode 100644 index 0000000..4cfda90 --- /dev/null +++ b/src/styles/themes/dark.less @@ -0,0 +1,457 @@ +@import './default.less'; + +@theme: dark; +// color palettes +@blue-1: mix(color(~`colorPalette('@{blue-base}', 8) `), @component-background, 15%); +@blue-2: mix(color(~`colorPalette('@{blue-base}', 7) `), @component-background, 25%); +@blue-3: mix(@blue-base, @component-background, 30%); +@blue-4: mix(@blue-base, @component-background, 45%); +@blue-5: mix(@blue-base, @component-background, 65%); +@blue-6: mix(@blue-base, @component-background, 85%); +@blue-7: mix(color(~`colorPalette('@{blue-base}', 5) `), @component-background, 90%); +@blue-8: mix(color(~`colorPalette('@{blue-base}', 4) `), @component-background, 95%); +@blue-9: mix(color(~`colorPalette('@{blue-base}', 3) `), @component-background, 97%); +@blue-10: mix(color(~`colorPalette('@{blue-base}', 2) `), @component-background, 98%); + +@purple-1: mix(color(~`colorPalette('@{purple-base}', 8) `), @component-background, 15%); +@purple-2: mix(color(~`colorPalette('@{purple-base}', 7) `), @component-background, 25%); +@purple-3: mix(@purple-base, @component-background, 30%); +@purple-4: mix(@purple-base, @component-background, 45%); +@purple-5: mix(@purple-base, @component-background, 65%); +@purple-6: mix(@purple-base, @component-background, 85%); +@purple-7: mix(color(~`colorPalette('@{purple-base}', 5) `), @component-background, 90%); +@purple-8: mix(color(~`colorPalette('@{purple-base}', 4) `), @component-background, 95%); +@purple-9: mix(color(~`colorPalette('@{purple-base}', 3) `), @component-background, 97%); +@purple-10: mix(color(~`colorPalette('@{purple-base}', 2) `), @component-background, 98%); + +@cyan-1: mix(color(~`colorPalette('@{cyan-base}', 8) `), @component-background, 15%); +@cyan-2: mix(color(~`colorPalette('@{cyan-base}', 7) `), @component-background, 25%); +@cyan-3: mix(@cyan-base, @component-background, 30%); +@cyan-4: mix(@cyan-base, @component-background, 45%); +@cyan-5: mix(@cyan-base, @component-background, 65%); +@cyan-6: mix(@cyan-base, @component-background, 85%); +@cyan-7: mix(color(~`colorPalette('@{cyan-base}', 5) `), @component-background, 90%); +@cyan-8: mix(color(~`colorPalette('@{cyan-base}', 4) `), @component-background, 95%); +@cyan-9: mix(color(~`colorPalette('@{cyan-base}', 3) `), @component-background, 97%); +@cyan-10: mix(color(~`colorPalette('@{cyan-base}', 2) `), @component-background, 98%); + +@green-1: mix(color(~`colorPalette('@{green-base}', 8) `), @component-background, 15%); +@green-2: mix(color(~`colorPalette('@{green-base}', 7) `), @component-background, 25%); +@green-3: mix(@green-base, @component-background, 30%); +@green-4: mix(@green-base, @component-background, 45%); +@green-5: mix(@green-base, @component-background, 65%); +@green-6: mix(@green-base, @component-background, 85%); +@green-7: mix(color(~`colorPalette('@{green-base}', 5) `), @component-background, 90%); +@green-8: mix(color(~`colorPalette('@{green-base}', 4) `), @component-background, 95%); +@green-9: mix(color(~`colorPalette('@{green-base}', 3) `), @component-background, 97%); +@green-10: mix(color(~`colorPalette('@{green-base}', 2) `), @component-background, 98%); + +@magenta-1: mix(color(~`colorPalette('@{magenta-base}', 8) `), @component-background, 15%); +@magenta-2: mix(color(~`colorPalette('@{magenta-base}', 7) `), @component-background, 25%); +@magenta-3: mix(@magenta-base, @component-background, 30%); +@magenta-4: mix(@magenta-base, @component-background, 45%); +@magenta-5: mix(@magenta-base, @component-background, 65%); +@magenta-6: mix(@magenta-base, @component-background, 85%); +@magenta-7: mix(color(~`colorPalette('@{magenta-base}', 5) `), @component-background, 90%); +@magenta-8: mix(color(~`colorPalette('@{magenta-base}', 4) `), @component-background, 95%); +@magenta-9: mix(color(~`colorPalette('@{magenta-base}', 3) `), @component-background, 97%); +@magenta-10: mix(color(~`colorPalette('@{magenta-base}', 2) `), @component-background, 98%); + +@pink-1: mix(color(~`colorPalette('@{pink-base}', 8) `), @component-background, 15%); +@pink-2: mix(color(~`colorPalette('@{pink-base}', 7) `), @component-background, 25%); +@pink-3: mix(@pink-base, @component-background, 30%); +@pink-4: mix(@pink-base, @component-background, 45%); +@pink-5: mix(@pink-base, @component-background, 65%); +@pink-6: mix(@pink-base, @component-background, 85%); +@pink-7: mix(color(~`colorPalette('@{pink-base}', 5) `), @component-background, 90%); +@pink-8: mix(color(~`colorPalette('@{pink-base}', 4) `), @component-background, 95%); +@pink-9: mix(color(~`colorPalette('@{pink-base}', 3) `), @component-background, 97%); +@pink-10: mix(color(~`colorPalette('@{pink-base}', 2) `), @component-background, 98%); + +@red-1: mix(color(~`colorPalette('@{red-base}', 8) `), @component-background, 15%); +@red-2: mix(color(~`colorPalette('@{red-base}', 7) `), @component-background, 25%); +@red-3: mix(@red-base, @component-background, 30%); +@red-4: mix(@red-base, @component-background, 45%); +@red-5: mix(@red-base, @component-background, 65%); +@red-6: mix(@red-base, @component-background, 85%); +@red-7: mix(color(~`colorPalette('@{red-base}', 5) `), @component-background, 90%); +@red-8: mix(color(~`colorPalette('@{red-base}', 4) `), @component-background, 95%); +@red-9: mix(color(~`colorPalette('@{red-base}', 3) `), @component-background, 97%); +@red-10: mix(color(~`colorPalette('@{red-base}', 2) `), @component-background, 98%); + +@orange-1: mix(color(~`colorPalette('@{orange-base}', 8) `), @component-background, 15%); +@orange-2: mix(color(~`colorPalette('@{orange-base}', 7) `), @component-background, 25%); +@orange-3: mix(@orange-base, @component-background, 30%); +@orange-4: mix(@orange-base, @component-background, 45%); +@orange-5: mix(@orange-base, @component-background, 65%); +@orange-6: mix(@orange-base, @component-background, 85%); +@orange-7: mix(color(~`colorPalette('@{orange-base}', 5) `), @component-background, 90%); +@orange-8: mix(color(~`colorPalette('@{orange-base}', 4) `), @component-background, 95%); +@orange-9: mix(color(~`colorPalette('@{orange-base}', 3) `), @component-background, 97%); +@orange-10: mix(color(~`colorPalette('@{orange-base}', 2) `), @component-background, 98%); + +@yellow-1: mix(color(~`colorPalette('@{yellow-base}', 8) `), @component-background, 15%); +@yellow-2: mix(color(~`colorPalette('@{yellow-base}', 7) `), @component-background, 25%); +@yellow-3: mix(@yellow-base, @component-background, 30%); +@yellow-4: mix(@yellow-base, @component-background, 45%); +@yellow-5: mix(@yellow-base, @component-background, 65%); +@yellow-6: mix(@yellow-base, @component-background, 85%); +@yellow-7: mix(color(~`colorPalette('@{yellow-base}', 5) `), @component-background, 90%); +@yellow-8: mix(color(~`colorPalette('@{yellow-base}', 4) `), @component-background, 95%); +@yellow-9: mix(color(~`colorPalette('@{yellow-base}', 3) `), @component-background, 97%); +@yellow-10: mix(color(~`colorPalette('@{yellow-base}', 2) `), @component-background, 98%); + +@volcano-1: mix(color(~`colorPalette('@{volcano-base}', 8) `), @component-background, 15%); +@volcano-2: mix(color(~`colorPalette('@{volcano-base}', 7) `), @component-background, 25%); +@volcano-3: mix(@volcano-base, @component-background, 30%); +@volcano-4: mix(@volcano-base, @component-background, 45%); +@volcano-5: mix(@volcano-base, @component-background, 65%); +@volcano-6: mix(@volcano-base, @component-background, 85%); +@volcano-7: mix(color(~`colorPalette('@{volcano-base}', 5) `), @component-background, 90%); +@volcano-8: mix(color(~`colorPalette('@{volcano-base}', 4) `), @component-background, 95%); +@volcano-9: mix(color(~`colorPalette('@{volcano-base}', 3) `), @component-background, 97%); +@volcano-10: mix(color(~`colorPalette('@{volcano-base}', 2) `), @component-background, 98%); + +@geekblue-1: mix(color(~`colorPalette('@{geekblue-base}', 8) `), @component-background, 15%); +@geekblue-2: mix(color(~`colorPalette('@{geekblue-base}', 7) `), @component-background, 25%); +@geekblue-3: mix(@geekblue-base, @component-background, 30%); +@geekblue-4: mix(@geekblue-base, @component-background, 45%); +@geekblue-5: mix(@geekblue-base, @component-background, 65%); +@geekblue-6: mix(@geekblue-base, @component-background, 85%); +@geekblue-7: mix(color(~`colorPalette('@{geekblue-base}', 5) `), @component-background, 90%); +@geekblue-8: mix(color(~`colorPalette('@{geekblue-base}', 4) `), @component-background, 95%); +@geekblue-9: mix(color(~`colorPalette('@{geekblue-base}', 3) `), @component-background, 97%); +@geekblue-10: mix(color(~`colorPalette('@{geekblue-base}', 2) `), @component-background, 98%); + +@lime-1: mix(color(~`colorPalette('@{lime-base}', 8) `), @component-background, 15%); +@lime-2: mix(color(~`colorPalette('@{lime-base}', 7) `), @component-background, 25%); +@lime-3: mix(@lime-base, @component-background, 30%); +@lime-4: mix(@lime-base, @component-background, 45%); +@lime-5: mix(@lime-base, @component-background, 65%); +@lime-6: mix(@lime-base, @component-background, 85%); +@lime-7: mix(color(~`colorPalette('@{lime-base}', 5) `), @component-background, 90%); +@lime-8: mix(color(~`colorPalette('@{lime-base}', 4) `), @component-background, 95%); +@lime-9: mix(color(~`colorPalette('@{lime-base}', 3) `), @component-background, 97%); +@lime-10: mix(color(~`colorPalette('@{lime-base}', 2) `), @component-background, 98%); + +@gold-1: mix(color(~`colorPalette('@{gold-base}', 8) `), @component-background, 15%); +@gold-2: mix(color(~`colorPalette('@{gold-base}', 7) `), @component-background, 25%); +@gold-3: mix(@gold-base, @component-background, 30%); +@gold-4: mix(@gold-base, @component-background, 45%); +@gold-5: mix(@gold-base, @component-background, 65%); +@gold-6: mix(@gold-base, @component-background, 85%); +@gold-7: mix(color(~`colorPalette('@{gold-base}', 5) `), @component-background, 90%); +@gold-8: mix(color(~`colorPalette('@{gold-base}', 4) `), @component-background, 95%); +@gold-9: mix(color(~`colorPalette('@{gold-base}', 3) `), @component-background, 97%); +@gold-10: mix(color(~`colorPalette('@{gold-base}', 2) `), @component-background, 98%); + +// Color used by default to control hover and active backgrounds and for +// alert info backgrounds. +@primary-1: mix(color(~`colorPalette('@{primary-color}', 8) `), @component-background, 15%); +@primary-2: mix(color(~`colorPalette('@{primary-color}', 7) `), @component-background, 25%); +@primary-3: mix(@primary-color, @component-background, 30%); +@primary-4: mix(@primary-color, @component-background, 45%); +@primary-5: mix(@primary-color, @component-background, 65%); +@primary-6: @primary-color; +@primary-7: mix(color(~`colorPalette('@{primary-color}', 5) `), @component-background, 90%); +@primary-8: mix(color(~`colorPalette('@{primary-color}', 4) `), @component-background, 95%); +@primary-9: mix(color(~`colorPalette('@{primary-color}', 3) `), @component-background, 97%); +@primary-10: mix(color(~`colorPalette('@{primary-color}', 2) `), @component-background, 98%); + +// Layer background +@popover-background: #1f1f1f; +@popover-customize-border-color: #3a3a3a; +@body-background: @black; +@component-background: #141414; + +@text-color: fade(@white, 85%); +@text-color-secondary: fade(@white, 45%); +@text-color-inverse: @white; +@icon-color-hover: fade(@white, 75%); +@heading-color: fade(@white, 85%); + +// The background colors for active and hover states for things like +// list items or table cells. +@item-active-bg: @primary-1; +@item-hover-bg: fade(@white, 8%); + +// Border color +@border-color-base: #434343; // base border outline a component +@border-color-split: #303030; // split border inside a component + +@background-color-light: fade(@white, 4%); // background of header and selected item +@background-color-base: fade(@white, 8%); // Default grey background color + +// Disabled states +@disabled-color: fade(@white, 30%); +@disabled-bg: @background-color-base; +@disabled-color-dark: fade(@white, 30%); + +// Tree +// --- +@tree-bg: transparent; + +// List +// --- +@list-customize-card-bg: transparent; + +// Shadow +// --- +@shadow-color: rgba(0, 0, 0, 0.45); +@shadow-color-inverse: @component-background; +@box-shadow-base: @shadow-2; +@shadow-1-up: 0 -6px 16px -8px rgba(0, 0, 0, 0.32), 0 -9px 28px 0 rgba(0, 0, 0, 0.2), + 0 -12px 48px 16px rgba(0, 0, 0, 0.12); +@shadow-1-down: 0 6px 16px -8px rgba(0, 0, 0, 0.32), 0 9px 28px 0 rgba(0, 0, 0, 0.2), + 0 12px 48px 16px rgba(0, 0, 0, 0.12); +@shadow-1-right: 6px 0 16px -8px rgba(0, 0, 0, 0.32), 9px 0 28px 0 rgba(0, 0, 0, 0.2), + 12px 0 48px 16px rgba(0, 0, 0, 0.12); +@shadow-2: 0 3px 6px -4px rgba(0, 0, 0, 0.48), 0 6px 16px 0 rgba(0, 0, 0, 0.32), + 0 9px 28px 8px rgba(0, 0, 0, 0.2); + +// Buttons +// --- +@btn-shadow: 0 2px 0 rgba(0, 0, 0, 0.015); +@btn-primary-shadow: 0 2px 0 rgba(0, 0, 0, 0.045); +@btn-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12); + +@btn-default-bg: transparent; + +@btn-default-ghost-color: @text-color; +@btn-default-ghost-border: fade(@white, 25%); + +@btn-text-hover-bg: rgba(255, 255, 255, 0.03); + +// Checkbox +// --- +@checkbox-check-bg: transparent; + +// Descriptions +// --- +@descriptions-bg: @background-color-light; + +// Divider +// --- +@divider-color: rgba(255, 255, 255, 12%); + +// Modal +// --- +@modal-header-bg: @popover-background; +@modal-header-border-color-split: @border-color-split; +@modal-content-bg: @popover-background; +@modal-footer-border-color-split: @border-color-split; + +// Radio +// --- +@radio-solid-checked-color: @white; +@radio-dot-disabled-color: fade(@white, 20%); + +// Radio buttons +// --- +@radio-disabled-button-checked-bg: fade(@white, 20%); +@radio-disabled-button-checked-color: @disabled-color; + +// Layout +// --- +@layout-body-background: @body-background; +@layout-header-background: @popover-background; +@layout-trigger-background: #262626; + +// Input +// --- +@input-bg: transparent; +@input-placeholder-color: fade(@white, 30%); +@input-icon-color: fade(@white, 30%); +@input-number-handler-active-bg: @item-hover-bg; +@input-icon-hover-color: fade(@white, 85%); + +// Select +// --- +@select-background: transparent; +@select-dropdown-bg: @popover-background; +@select-clear-background: @component-background; +@select-selection-item-bg: fade(@white, 8); +@select-selection-item-border-color: @border-color-split; +@select-multiple-disabled-background: @component-background; +@select-multiple-item-disabled-color: #595959; +@select-multiple-item-disabled-border-color: @popover-background; + +// Cascader +// --- +@cascader-bg: transparent; +@cascader-menu-bg: @popover-background; +@cascader-menu-border-color-split: @border-color-split; + +// Tooltip +// --- +// Tooltip background color +@tooltip-bg: #434343; + +// Menu +// --- +// dark theme +@menu-dark-inline-submenu-bg: @component-background; +@menu-dark-bg: @popover-background; +@menu-popup-bg: @popover-background; + +// Message +// --- +@message-notice-content-bg: @popover-background; + +// Notification +@notification-bg: @popover-background; + +// LINK +@link-hover-color: @primary-5; +@link-active-color: @primary-7; + +// Table +// -- +@table-header-bg: #1d1d1d; +@table-body-sort-bg: fade(@white, 1%); +@table-row-hover-bg: #262626; +@table-header-cell-split-color: fade(@white, 8%); +@table-header-sort-bg: #262626; +@table-header-filter-active-bg: #434343; +@table-header-sort-active-bg: #303030; +@table-fixed-header-sort-active-bg: #222; +@table-filter-btns-bg: @popover-background; +@table-expanded-row-bg: @table-header-bg; +@table-filter-dropdown-bg: @popover-background; +@table-expand-icon-bg: transparent; + +// Tag +// --- +@info-color-deprecated-bg: @primary-1; +@info-color-deprecated-border: @primary-3; +@success-color-deprecated-bg: @green-1; +@success-color-deprecated-border: @green-3; +@warning-color-deprecated-bg: @orange-1; +@warning-color-deprecated-border: @orange-3; +@error-color-deprecated-bg: @red-1; +@error-color-deprecated-border: @red-3; + +// TimePicker +// --- +@picker-basic-cell-hover-with-range-color: darken(@primary-color, 35%); +@picker-basic-cell-disabled-bg: #303030; +@picker-border-color: @border-color-split; +@picker-bg: transparent; +@picker-date-hover-range-border-color: darken(@primary-color, 20%); + +// Dropdown +// --- +@dropdown-menu-bg: @popover-background; +@dropdown-menu-submenu-disabled-bg: transparent; + +// Steps +// --- +@steps-nav-arrow-color: fade(@white, 20%); +@steps-background: transparent; + +// Avatar +// --- +@avatar-bg: fade(@white, 30%); + +// Progress +// --- +@progress-steps-item-bg: fade(@white, 8%); + +// Calendar +// --- +@calendar-bg: @popover-background; +@calendar-input-bg: @calendar-bg; +@calendar-border-color: transparent; +@calendar-full-bg: @component-background; + +// Badge +// --- +@badge-text-color: @white; + +// Popover +@popover-bg: @popover-background; + +// Drawer +@drawer-bg: @popover-background; + +// Card +// --- +@card-actions-background: @component-background; +@card-skeleton-bg: #303030; +@card-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.64), 0 3px 6px 0 rgba(0, 0, 0, 0.48), + 0 5px 12px 4px rgba(0, 0, 0, 0.36); + +// Transfer +// --- +@transfer-item-hover-bg: #262626; + +// Comment +// --- +@comment-bg: transparent; +@comment-author-time-color: fade(@white, 30%); +@comment-action-hover-color: fade(@white, 65%); + +// Rate +// --- +@rate-star-bg: fade(@white, 12%); + +// Switch +// --- +@switch-bg: @white; + +// Pagination +// --- +@pagination-item-bg: transparent; +@pagination-item-bg-active: transparent; +@pagination-item-link-bg: transparent; +@pagination-item-disabled-bg-active: fade(@white, 25%); +@pagination-item-disabled-color-active: @black; +@pagination-item-input-bg: @pagination-item-bg; + +// PageHeader +// --- +@page-header-back-color: @icon-color; +@page-header-ghost-bg: transparent; + +// Slider +// --- +@slider-rail-background-color: #262626; +@slider-rail-background-color-hover: @border-color-base; +@slider-dot-border-color: @border-color-split; +@slider-dot-border-color-active: @primary-4; + +// Skeleton +// --- +@skeleton-to-color: fade(@white, 16%); + +// Alert +// --- +@alert-success-border-color: @green-3; +@alert-success-bg-color: @green-1; +@alert-success-icon-color: @success-color; +@alert-info-border-color: @primary-3; +@alert-info-bg-color: @primary-1; +@alert-info-icon-color: @info-color; +@alert-warning-border-color: @gold-3; +@alert-warning-bg-color: @gold-1; +@alert-warning-icon-color: @warning-color; +@alert-error-border-color: @red-3; +@alert-error-bg-color: @red-1; +@alert-error-icon-color: @error-color; + +// Timeline +// --- +@timeline-color: @border-color-split; +@timeline-dot-color: @primary-color; + +// Mentions +// --- +@mentions-dropdown-bg: @popover-background; + +// Segmented +// --- +@segmented-bg: fade(@black, 25%); +@segmented-hover-bg: fade(@black, 45%); +@segmented-selected-bg: #333333; +@segmented-label-color: fade(@white, 65%); +@segmented-label-hover-color: fade(@white, 85%); diff --git a/src/styles/themes/default.less b/src/styles/themes/default.less new file mode 100644 index 0000000..5c5b47f --- /dev/null +++ b/src/styles/themes/default.less @@ -0,0 +1,1084 @@ +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +@import '../color/colors'; + +@theme: default; + +// The prefix to use on all css classes from ant. +@ant-prefix: ant; + +// An override for the html selector for theme prefixes +@html-selector: html; + +// [CSS-VARIABLE-REPLACE-BEGIN: html-variables] +// [CSS-VARIABLE-REPLACE-END: html-variables] + +// -------- Colors ----------- +// >>> Primary +@primary-color: @blue-6; +@primary-color-hover: color(~`colorPalette('@{primary-color}', 5) `); +@primary-color-active: color(~`colorPalette('@{primary-color}', 7) `); +@primary-color-outline: fade(@primary-color, @outline-fade); + +@processing-color: @blue-6; + +// >>> Info +@info-color: @primary-color; +@info-color-deprecated-bg: color(~`colorPalette('@{info-color}', 1) `); +@info-color-deprecated-border: color(~`colorPalette('@{info-color}', 3) `); + +// >>> Success +@success-color: @green-6; +@success-color-hover: color(~`colorPalette('@{success-color}', 5) `); +@success-color-active: color(~`colorPalette('@{success-color}', 7) `); +@success-color-outline: fade(@success-color, @outline-fade); +@success-color-deprecated-bg: color(~`colorPalette('@{success-color}', 1) `); +@success-color-deprecated-border: color(~`colorPalette('@{success-color}', 3) `); + +// >>> Warning +@warning-color: @gold-6; +@warning-color-hover: color(~`colorPalette('@{warning-color}', 5) `); +@warning-color-active: color(~`colorPalette('@{warning-color}', 7) `); +@warning-color-outline: fade(@warning-color, @outline-fade); +@warning-color-deprecated-bg: color(~`colorPalette('@{warning-color}', 1) `); +@warning-color-deprecated-border: color(~`colorPalette('@{warning-color}', 3) `); + +// >>> Error +@error-color: @red-5; +@error-color-hover: color(~`colorPalette('@{error-color}', 5) `); +@error-color-active: color(~`colorPalette('@{error-color}', 7) `); +@error-color-outline: fade(@error-color, @outline-fade); +@error-color-deprecated-bg: color(~`colorPalette('@{error-color}', 1) `); +@error-color-deprecated-border: color(~`colorPalette('@{error-color}', 3) `); + +@highlight-color: @red-5; +@normal-color: #d9d9d9; +@white: #fff; +@black: #000; + +// Color used by default to control hover and active backgrounds and for +// alert info backgrounds. +@primary-1: color(~`colorPalette('@{primary-color}', 1) `); // replace tint(@primary-color, 90%) +@primary-2: color(~`colorPalette('@{primary-color}', 2) `); // replace tint(@primary-color, 80%) +@primary-3: color(~`colorPalette('@{primary-color}', 3) `); // unused +@primary-4: color(~`colorPalette('@{primary-color}', 4) `); // unused +@primary-5: color( + ~`colorPalette('@{primary-color}', 5) ` +); // color used to control the text color in many active and hover states, replace tint(@primary-color, 20%) +@primary-6: @primary-color; // color used to control the text color of active buttons, don't use, use @primary-color +@primary-7: color(~`colorPalette('@{primary-color}', 7) `); // replace shade(@primary-color, 5%) +@primary-8: color(~`colorPalette('@{primary-color}', 8) `); // unused +@primary-9: color(~`colorPalette('@{primary-color}', 9) `); // unused +@primary-10: color(~`colorPalette('@{primary-color}', 10) `); // unused + +// Base Scaffolding Variables +// --- + +// Background color for `` +@body-background: #fff; +// Base background color for most components +@component-background: #fff; +// Popover background color +@popover-background: @component-background; +@popover-customize-border-color: @border-color-split; +@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'; +@code-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; +@text-color: fade(@black, 85%); +@text-color-secondary: fade(@black, 45%); +@text-color-inverse: @white; +@icon-color: inherit; +@icon-color-hover: fade(@black, 75%); +@heading-color: fade(@black, 85%); +@text-color-dark: fade(@white, 85%); +@text-color-secondary-dark: fade(@white, 65%); +@text-selection-bg: @primary-color; +@font-variant-base: tabular-nums; +@font-feature-settings-base: 'tnum'; +@font-size-base: 14px; +@font-size-lg: @font-size-base + 2px; +@font-size-sm: 12px; +@heading-1-size: ceil(@font-size-base * 2.71); +@heading-2-size: ceil(@font-size-base * 2.14); +@heading-3-size: ceil(@font-size-base * 1.71); +@heading-4-size: ceil(@font-size-base * 1.42); +@heading-5-size: ceil(@font-size-base * 1.14); +// https://github.com/ant-design/ant-design/issues/20210 +@line-height-base: 1.5715; +@border-radius-base: 2px; +@border-radius-sm: 2px; + +// control border +@control-border-radius: @border-radius-base; + +// arrow border +@arrow-border-radius: 2px; + +// vertical paddings +@padding-lg: 24px; // containers +@padding-md: 16px; // small containers and buttons +@padding-sm: 12px; // Form controls and items +@padding-xs: 8px; // small items +@padding-xss: 4px; // more small + +// vertical padding for all form controls +@control-padding-horizontal: @padding-sm; +@control-padding-horizontal-sm: @padding-xs; + +// vertical margins +@margin-lg: 24px; // containers +@margin-md: 16px; // small containers and buttons +@margin-sm: 12px; // Form controls and items +@margin-xs: 8px; // small items +@margin-xss: 4px; // more small + +// height rules +@height-base: 32px; +@height-lg: 40px; +@height-sm: 24px; + +// The background colors for active and hover states for things like +// list items or table cells. +@item-active-bg: @primary-1; +@item-hover-bg: #f5f5f5; + +// ICONFONT +@iconfont-css-prefix: anticon; + +// LINK +@link-color: @primary-color; +@link-hover-color: color(~`colorPalette('@{link-color}', 5) `); +@link-active-color: color(~`colorPalette('@{link-color}', 7) `); +@link-decoration: none; +@link-hover-decoration: none; +@link-focus-decoration: none; +@link-focus-outline: 0; + +// Animation +@ease-base-out: cubic-bezier(0.7, 0.3, 0.1, 1); +@ease-base-in: cubic-bezier(0.9, 0, 0.3, 0.7); +@ease-out: cubic-bezier(0.215, 0.61, 0.355, 1); +@ease-in: cubic-bezier(0.55, 0.055, 0.675, 0.19); +@ease-in-out: cubic-bezier(0.645, 0.045, 0.355, 1); +@ease-out-back: cubic-bezier(0.12, 0.4, 0.29, 1.46); +@ease-in-back: cubic-bezier(0.71, -0.46, 0.88, 0.6); +@ease-in-out-back: cubic-bezier(0.71, -0.46, 0.29, 1.46); +@ease-out-circ: cubic-bezier(0.08, 0.82, 0.17, 1); +@ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.34); +@ease-in-out-circ: cubic-bezier(0.78, 0.14, 0.15, 0.86); +@ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1); +@ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06); +@ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1); + +// Border color +@border-color-base: hsv(0, 0, 85%); // base border outline a component +@border-color-split: hsv(0, 0, 94%); // split border inside a component +@border-color-inverse: @white; +@border-width-base: 1px; // width of the border for a component +@border-style-base: solid; // style of a components border + +// Outline +@outline-blur-size: 0; +@outline-width: 2px; +@outline-color: @primary-color; // No use anymore +@outline-fade: 20%; + +@background-color-light: hsv(0, 0, 98%); // background of header and selected item +@background-color-base: hsv(0, 0, 96%); // Default grey background color + +// Disabled states +@disabled-color: fade(#000, 25%); +@disabled-bg: @background-color-base; +@disabled-active-bg: tint(@black, 90%); +@disabled-color-dark: fade(#fff, 35%); + +// Shadow +@shadow-color: rgba(0, 0, 0, 0.15); +@shadow-color-inverse: @component-background; +@box-shadow-base: @shadow-2; +@shadow-1-up: 0 -6px 16px -8px rgba(0, 0, 0, 0.08), 0 -9px 28px 0 rgba(0, 0, 0, 0.05), + 0 -12px 48px 16px rgba(0, 0, 0, 0.03); +@shadow-1-down: 0 6px 16px -8px rgba(0, 0, 0, 0.08), 0 9px 28px 0 rgba(0, 0, 0, 0.05), + 0 12px 48px 16px rgba(0, 0, 0, 0.03); +@shadow-1-left: -6px 0 16px -8px rgba(0, 0, 0, 0.08), -9px 0 28px 0 rgba(0, 0, 0, 0.05), + -12px 0 48px 16px rgba(0, 0, 0, 0.03); +@shadow-1-right: 6px 0 16px -8px rgba(0, 0, 0, 0.08), 9px 0 28px 0 rgba(0, 0, 0, 0.05), + 12px 0 48px 16px rgba(0, 0, 0, 0.03); +@shadow-2: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), + 0 9px 28px 8px rgba(0, 0, 0, 0.05); + +// Buttons +@btn-font-weight: 400; +@btn-border-radius-base: @border-radius-base; +@btn-border-radius-sm: @border-radius-base; +@btn-border-width: @border-width-base; +@btn-border-style: @border-style-base; +@btn-shadow: 0 2px 0 rgba(0, 0, 0, 0.015); +@btn-primary-shadow: 0 2px 0 rgba(0, 0, 0, 0.045); +@btn-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12); + +@btn-primary-color: #fff; +@btn-primary-bg: @primary-color; + +@btn-default-color: @text-color; +@btn-default-bg: @component-background; +@btn-default-border: @border-color-base; + +@btn-danger-color: #fff; +@btn-danger-bg: @error-color; +@btn-danger-border: @error-color; + +@btn-disable-color: @disabled-color; +@btn-disable-bg: @disabled-bg; +@btn-disable-border: @border-color-base; + +@btn-default-ghost-color: @component-background; +@btn-default-ghost-bg: transparent; +@btn-default-ghost-border: @component-background; + +@btn-font-size-lg: @font-size-lg; +@btn-font-size-sm: @font-size-base; +@btn-padding-horizontal-base: @padding-md - 1px; +@btn-padding-horizontal-lg: @btn-padding-horizontal-base; +@btn-padding-horizontal-sm: @padding-xs - 1px; + +@btn-height-base: @height-base; +@btn-height-lg: @height-lg; +@btn-height-sm: @height-sm; + +@btn-line-height: @line-height-base; + +@btn-circle-size: @btn-height-base; +@btn-circle-size-lg: @btn-height-lg; +@btn-circle-size-sm: @btn-height-sm; + +@btn-square-size: @btn-height-base; +@btn-square-size-lg: @btn-height-lg; +@btn-square-size-sm: @btn-height-sm; +@btn-square-only-icon-size: @font-size-base + 2px; +@btn-square-only-icon-size-sm: @font-size-base; +@btn-square-only-icon-size-lg: @btn-font-size-lg + 2px; + +@btn-group-border: @primary-5; + +@btn-link-hover-bg: transparent; +@btn-text-hover-bg: rgba(0, 0, 0, 0.018); + +// Checkbox +@checkbox-size: 16px; +@checkbox-color: @primary-color; +@checkbox-check-color: #fff; +@checkbox-check-bg: @checkbox-check-color; +@checkbox-border-width: @border-width-base; +@checkbox-border-radius: @border-radius-sm; +@checkbox-group-item-margin-right: 8px; + +// Descriptions +@descriptions-bg: #fafafa; +@descriptions-title-margin-bottom: 20px; +@descriptions-default-padding: @padding-md @padding-lg; +@descriptions-middle-padding: @padding-sm @padding-lg; +@descriptions-small-padding: @padding-xs @padding-md; +@descriptions-item-padding-bottom: @padding-md; +@descriptions-item-trailing-colon: true; +@descriptions-item-label-colon-margin-right: 8px; +@descriptions-item-label-colon-margin-left: 2px; +@descriptions-extra-color: @text-color; + +// Divider +@divider-text-padding: 1em; +@divider-orientation-margin: 5%; +@divider-color: rgba(0, 0, 0, 6%); +@divider-vertical-gutter: 8px; + +// Dropdown +@dropdown-selected-color: @primary-color; +@dropdown-menu-submenu-disabled-bg: @component-background; +@dropdown-selected-bg: @item-active-bg; + +// Empty +@empty-font-size: @font-size-base; + +// Radio +@radio-size: 16px; +@radio-top: 0.2em; +@radio-border-width: 1px; +@radio-dot-size: @radio-size - 8px; +@radio-dot-color: @primary-color; +@radio-dot-disabled-color: fade(@black, 20%); +@radio-solid-checked-color: @component-background; + +// Radio buttons +@radio-button-bg: @btn-default-bg; +@radio-button-checked-bg: @btn-default-bg; +@radio-button-color: @btn-default-color; +@radio-button-hover-color: @primary-5; +@radio-button-active-color: @primary-7; +@radio-button-padding-horizontal: @padding-md - 1px; +@radio-disabled-button-checked-bg: @disabled-active-bg; +@radio-disabled-button-checked-color: @disabled-color; +@radio-wrapper-margin-right: 8px; + +// Media queries breakpoints +// @screen-xs and @screen-xs-min is not used in Grid +// smallest break point is @screen-md +@screen-xs: 480px; +@screen-xs-min: @screen-xs; +// 👆 Extra small screen / phone + +// 👇 Small screen / tablet +@screen-sm: 576px; +@screen-sm-min: @screen-sm; + +// Medium screen / desktop +@screen-md: 768px; +@screen-md-min: @screen-md; + +// Large screen / wide desktop +@screen-lg: 992px; +@screen-lg-min: @screen-lg; + +// Extra large screen / full hd +@screen-xl: 1200px; +@screen-xl-min: @screen-xl; + +// Extra extra large screen / large desktop +@screen-xxl: 1600px; +@screen-xxl-min: @screen-xxl; + +// provide a maximum +@screen-xs-max: (@screen-sm-min - 1px); +@screen-sm-max: (@screen-md-min - 1px); +@screen-md-max: (@screen-lg-min - 1px); +@screen-lg-max: (@screen-xl-min - 1px); +@screen-xl-max: (@screen-xxl-min - 1px); + +// Grid system +@grid-columns: 24; + +// Layout +@layout-body-background: #f0f2f5; +@layout-header-background: #001529; +@layout-header-height: 64px; +@layout-header-padding: 0 50px; +@layout-header-color: @text-color; +@layout-footer-padding: 24px 50px; +@layout-footer-background: @layout-body-background; +@layout-sider-background: @layout-header-background; +@layout-trigger-height: 48px; +@layout-trigger-background: #002140; +@layout-trigger-color: #fff; +@layout-zero-trigger-width: 36px; +@layout-zero-trigger-height: 42px; +// Layout light theme +@layout-sider-background-light: #fff; +@layout-trigger-background-light: #fff; +@layout-trigger-color-light: @text-color; + +// z-index list, order by `z-index` +@zindex-badge: auto; +@zindex-table-fixed: 2; +@zindex-affix: 10; +@zindex-back-top: 10; +@zindex-picker-panel: 10; +@zindex-popup-close: 10; +@zindex-modal: 1000; +@zindex-modal-mask: 1000; +@zindex-message: 1010; +@zindex-notification: 1010; +@zindex-popover: 1030; +@zindex-dropdown: 1050; +@zindex-picker: 1050; +@zindex-popoconfirm: 1060; +@zindex-tooltip: 1070; +@zindex-image: 1080; + +// Animation +@animation-duration-slow: 0.3s; // Modal +@animation-duration-base: 0.2s; +@animation-duration-fast: 0.1s; // Tooltip + +//CollapsePanel +@collapse-panel-border-radius: @border-radius-base; + +//Dropdown +@dropdown-menu-bg: @component-background; +@dropdown-vertical-padding: 5px; +@dropdown-edge-child-vertical-padding: 4px; +@dropdown-font-size: @font-size-base; +@dropdown-line-height: 22px; + +// Form +// --- +@label-required-color: @highlight-color; +@label-color: @heading-color; +@form-warning-input-bg: @input-bg; +@form-item-margin-bottom: 24px; +@form-item-trailing-colon: true; +@form-vertical-label-padding: 0 0 8px; +@form-vertical-label-margin: 0; +@form-item-label-font-size: @font-size-base; +@form-item-label-height: @input-height-base; +@form-item-label-colon-margin-right: 8px; +@form-item-label-colon-margin-left: 2px; +@form-error-input-bg: @input-bg; + +// Input +// --- +@input-height-base: @height-base; +@input-height-lg: @height-lg; +@input-height-sm: @height-sm; +@input-padding-horizontal: @control-padding-horizontal - 1px; +@input-padding-horizontal-base: @input-padding-horizontal; +@input-padding-horizontal-sm: @control-padding-horizontal-sm - 1px; +@input-padding-horizontal-lg: @input-padding-horizontal; +@input-padding-vertical-base: max( + (round(((@input-height-base - @font-size-base * @line-height-base) / 2) * 10) / 10) - + @border-width-base, + 3px +); +@input-padding-vertical-sm: max( + (round(((@input-height-sm - @font-size-base * @line-height-base) / 2) * 10) / 10) - + @border-width-base, + 0 +); +@input-padding-vertical-lg: ( + ceil(((@input-height-lg - @font-size-lg * @line-height-base) / 2) * 10) / 10 + ) - @border-width-base; +@input-placeholder-color: hsv(0, 0, 75%); +@input-color: @text-color; +@input-icon-color: @input-color; +@input-border-color: @border-color-base; +@input-bg: @component-background; +@input-number-hover-border-color: @input-hover-border-color; +@input-number-handler-active-bg: #f4f4f4; +@input-number-handler-hover-bg: @primary-5; +@input-number-handler-bg: @component-background; +@input-number-handler-border-color: @border-color-base; +@input-addon-bg: @background-color-light; +@input-hover-border-color: @primary-5; +@input-disabled-bg: @disabled-bg; +@input-outline-offset: 0 0; +@input-icon-hover-color: fade(@black, 85%); +@input-disabled-color: @disabled-color; + +// Mentions +// --- +@mentions-dropdown-bg: @component-background; +@mentions-dropdown-menu-item-hover-bg: @mentions-dropdown-bg; + +// Select +// --- +@select-border-color: @border-color-base; +@select-item-selected-color: @text-color; +@select-item-selected-font-weight: 600; +@select-dropdown-bg: @component-background; +@select-item-selected-bg: @primary-1; +@select-item-active-bg: @item-hover-bg; +@select-dropdown-vertical-padding: @dropdown-vertical-padding; +@select-dropdown-font-size: @dropdown-font-size; +@select-dropdown-line-height: @dropdown-line-height; +@select-dropdown-height: 32px; +@select-background: @component-background; +@select-clear-background: @select-background; +@select-selection-item-bg: @background-color-base; +@select-selection-item-border-color: @border-color-split; +@select-single-item-height-lg: 40px; +@select-multiple-item-height: @input-height-base - @input-padding-vertical-base * 2; // Normal 24px +@select-multiple-item-height-lg: 32px; +@select-multiple-item-spacing-half: ceil((@input-padding-vertical-base / 2)); +@select-multiple-disabled-background: @input-disabled-bg; +@select-multiple-item-disabled-color: #bfbfbf; +@select-multiple-item-disabled-border-color: @select-border-color; + +// Cascader +// --- +@cascader-bg: @component-background; +@cascader-item-selected-bg: @primary-1; +@cascader-menu-bg: @component-background; +@cascader-menu-border-color-split: @border-color-split; + +// Cascader +// ---- +@cascader-dropdown-vertical-padding: @dropdown-vertical-padding; +@cascader-dropdown-edge-child-vertical-padding: @dropdown-edge-child-vertical-padding; +@cascader-dropdown-font-size: @dropdown-font-size; +@cascader-dropdown-line-height: @dropdown-line-height; + +// Anchor +// --- +@anchor-bg: transparent; +@anchor-border-color: @border-color-split; +@anchor-link-top: 4px; +@anchor-link-left: 16px; +@anchor-link-padding: @anchor-link-top 0 @anchor-link-top @anchor-link-left; + +// Tooltip +// --- +// Tooltip max width +@tooltip-max-width: 250px; +// Tooltip text color +@tooltip-color: #fff; +// Tooltip background color +@tooltip-bg: rgba(0, 0, 0, 0.75); +// Tooltip arrow width +@tooltip-arrow-width: 8px * sqrt(2); +// Tooltip distance with trigger +@tooltip-distance: @tooltip-arrow-width - 1px + 4px; +// Tooltip arrow color +@tooltip-arrow-color: @tooltip-bg; +@tooltip-border-radius: @border-radius-base; + +// Popover +// --- +// Popover body background color +@popover-bg: @component-background; +// Popover text color +@popover-color: @text-color; +// Popover maximum width +@popover-min-width: 177px; +@popover-min-height: 32px; +// Popover arrow width +@popover-arrow-width: @tooltip-arrow-width; +// Popover arrow color +@popover-arrow-color: @popover-bg; +// Popover outer arrow width +// Popover outer arrow color +@popover-arrow-outer-color: @popover-bg; +// Popover distance with trigger +@popover-distance: @popover-arrow-width + 4px; +@popover-padding-horizontal: @padding-md; + +// Modal +// -- +@modal-header-padding-vertical: @padding-md; +@modal-header-padding-horizontal: @padding-lg; +@modal-body-padding: @padding-lg; +@modal-header-bg: @component-background; +@modal-header-padding: @modal-header-padding-vertical @modal-header-padding-horizontal; +@modal-header-border-width: @border-width-base; +@modal-header-border-style: @border-style-base; +@modal-header-title-line-height: 22px; +@modal-header-title-font-size: @font-size-lg; +@modal-header-border-color-split: @border-color-split; +@modal-header-close-size: @modal-header-title-line-height + 2 * @modal-header-padding-vertical; +@modal-content-bg: @component-background; +@modal-heading-color: @heading-color; +@modal-close-color: @text-color-secondary; +@modal-footer-bg: transparent; +@modal-footer-border-color-split: @border-color-split; +@modal-footer-border-style: @border-style-base; +@modal-footer-padding-vertical: 10px; +@modal-footer-padding-horizontal: 16px; +@modal-footer-border-width: @border-width-base; +@modal-mask-bg: fade(@black, 45%); +@modal-confirm-body-padding: 32px 32px 24px; +@modal-confirm-title-font-size: @font-size-lg; +@modal-border-radius: @border-radius-base; + +// Progress +// -- +@progress-default-color: @processing-color; +@progress-remaining-color: @background-color-base; +@progress-info-text-color: @progress-text-color; +@progress-radius: 100px; +@progress-steps-item-bg: #f3f3f3; +@progress-text-font-size: 1em; +@progress-text-color: @text-color; // This is for circle text color, should be renamed better +@progress-circle-text-font-size: 1em; +// Menu +// --- +@menu-inline-toplevel-item-height: 40px; +@menu-item-height: 40px; +@menu-item-group-height: @line-height-base; +@menu-collapsed-width: 80px; +@menu-bg: @component-background; +@menu-popup-bg: @component-background; +@menu-item-color: @text-color; +@menu-inline-submenu-bg: @background-color-light; +@menu-highlight-color: @primary-color; +@menu-highlight-danger-color: @error-color; +@menu-item-active-bg: @primary-1; +@menu-item-active-danger-bg: @red-1; +@menu-item-active-border-width: 3px; +@menu-item-group-title-color: @text-color-secondary; +@menu-item-vertical-margin: 4px; +@menu-item-font-size: @font-size-base; +@menu-item-boundary-margin: 8px; +@menu-item-padding-horizontal: 20px; +@menu-item-padding: 0 @menu-item-padding-horizontal; +@menu-horizontal-line-height: 46px; +@menu-icon-margin-right: 10px; +@menu-icon-size: @menu-item-font-size; +@menu-icon-size-lg: @font-size-lg; +@menu-item-group-title-font-size: @menu-item-font-size; + +// dark theme +@menu-dark-color: @text-color-secondary-dark; +@menu-dark-danger-color: @error-color; +@menu-dark-bg: @layout-header-background; +@menu-dark-arrow-color: #fff; +@menu-dark-inline-submenu-bg: #000c17; +@menu-dark-highlight-color: #fff; +@menu-dark-item-active-bg: @primary-color; +@menu-dark-item-active-danger-bg: @error-color; +@menu-dark-selected-item-icon-color: @white; +@menu-dark-selected-item-text-color: @white; +@menu-dark-item-hover-bg: transparent; +// Spin +// --- +@spin-dot-size-sm: 14px; +@spin-dot-size: 20px; +@spin-dot-size-lg: 32px; + +// Table +// -- +@table-bg: @component-background; +@table-header-bg: @background-color-light; +@table-header-color: @heading-color; +@table-header-sort-bg: @background-color-base; +@table-body-sort-bg: #fafafa; +@table-row-hover-bg: @background-color-light; +@table-selected-row-color: inherit; +@table-selected-row-bg: @primary-1; +@table-body-selected-sort-bg: @table-selected-row-bg; +@table-selected-row-hover-bg: darken(@table-selected-row-bg, 2%); +@table-expanded-row-bg: #fbfbfb; +@table-padding-vertical: 16px; +@table-padding-horizontal: 16px; +@table-padding-vertical-md: (@table-padding-vertical * 3 / 4); +@table-padding-horizontal-md: (@table-padding-horizontal / 2); +@table-padding-vertical-sm: (@table-padding-vertical / 2); +@table-padding-horizontal-sm: (@table-padding-horizontal / 2); +@table-border-color: @border-color-split; +@table-border-radius-base: @border-radius-base; +@table-footer-bg: @background-color-light; +@table-footer-color: @heading-color; +@table-header-bg-sm: @table-header-bg; +@table-font-size: @font-size-base; +@table-font-size-md: @table-font-size; +@table-font-size-sm: @table-font-size; +@table-header-cell-split-color: rgba(0, 0, 0, 0.06); +// Sorter +// Legacy: `table-header-sort-active-bg` is used for hover not real active +@table-header-sort-active-bg: rgba(0, 0, 0, 0.04); +@table-fixed-header-sort-active-bg: hsv(0, 0, 96%); + +// Filter +@table-header-filter-active-bg: rgba(0, 0, 0, 0.04); +@table-filter-btns-bg: inherit; +@table-filter-dropdown-bg: @component-background; +@table-expand-icon-bg: @component-background; +@table-selection-column-width: 32px; +// Sticky +@table-sticky-scroll-bar-bg: fade(#000, 35%); +@table-sticky-scroll-bar-radius: 4px; + +// Tag +// -- +@tag-border-radius: @border-radius-base; +@tag-default-bg: @background-color-light; +@tag-default-color: @text-color; +@tag-font-size: @font-size-sm; +@tag-line-height: 20px; + +// TimePicker +// --- +@picker-bg: @component-background; +@picker-basic-cell-hover-color: @item-hover-bg; +@picker-basic-cell-active-with-range-color: @primary-1; +@picker-basic-cell-hover-with-range-color: lighten(@primary-color, 35%); +@picker-basic-cell-disabled-bg: rgba(0, 0, 0, 0.04); +@picker-border-color: @border-color-split; +@picker-date-hover-range-border-color: lighten(@primary-color, 20%); +@picker-date-hover-range-color: @picker-basic-cell-hover-with-range-color; +@picker-time-panel-column-width: 56px; +@picker-time-panel-column-height: 224px; +@picker-time-panel-cell-height: 28px; +@picker-panel-cell-height: 24px; +@picker-panel-cell-width: 36px; +@picker-text-height: 40px; +@picker-panel-without-time-cell-height: 66px; + +// Calendar +// --- +@calendar-bg: @component-background; +@calendar-input-bg: @input-bg; +@calendar-border-color: @border-color-inverse; +@calendar-item-active-bg: @item-active-bg; +@calendar-column-active-bg: fade(@calendar-item-active-bg, 20%); +@calendar-full-bg: @calendar-bg; +@calendar-full-panel-bg: @calendar-full-bg; + +// Carousel +// --- +@carousel-dot-width: 16px; +@carousel-dot-height: 3px; +@carousel-dot-active-width: 24px; + +// Badge +// --- +@badge-height: 20px; +@badge-height-sm: 14px; +@badge-dot-size: 6px; +@badge-font-size: @font-size-sm; +@badge-font-size-sm: @font-size-sm; +@badge-font-weight: normal; +@badge-status-size: 6px; +@badge-text-color: @component-background; +@badge-color: @highlight-color; + +// Rate +// --- +@rate-star-color: @yellow-6; +@rate-star-bg: @border-color-split; +@rate-star-size: 20px; +@rate-star-hover-scale: scale(1.1); + +// Card +// --- +@card-head-color: @heading-color; +@card-head-background: transparent; +@card-head-font-size: @font-size-lg; +@card-head-font-size-sm: @font-size-base; +@card-head-padding: 16px; +@card-head-padding-sm: (@card-head-padding / 2); +@card-head-height: 48px; +@card-head-height-sm: 36px; +@card-inner-head-padding: 12px; +@card-padding-base: 24px; +@card-padding-base-sm: (@card-padding-base / 2); +@card-actions-background: @component-background; +@card-actions-li-margin: 12px 0; +@card-skeleton-bg: #cfd8dc; +@card-background: @component-background; +@card-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), + 0 5px 12px 4px rgba(0, 0, 0, 0.09); +@card-radius: @border-radius-base; +@card-head-tabs-margin-bottom: -17px; +@card-head-extra-color: @text-color; + +// Comment +// --- +@comment-bg: inherit; +@comment-padding-base: @padding-md 0; +@comment-nest-indent: 44px; +@comment-font-size-base: @font-size-base; +@comment-font-size-sm: @font-size-sm; +@comment-author-name-color: @text-color-secondary; +@comment-author-time-color: #ccc; +@comment-action-color: @text-color-secondary; +@comment-action-hover-color: #595959; +@comment-actions-margin-bottom: inherit; +@comment-actions-margin-top: @margin-sm; +@comment-content-detail-p-margin-bottom: inherit; + +// Tabs +// --- +@tabs-card-head-background: @background-color-light; +@tabs-card-height: 40px; +@tabs-card-active-color: @primary-color; +@tabs-card-horizontal-padding: ( + (@tabs-card-height - floor(@font-size-base * @line-height-base)) / 2 + ) - @border-width-base @padding-md; +@tabs-card-horizontal-padding-sm: 6px @padding-md; +@tabs-card-horizontal-padding-lg: 7px @padding-md 6px; +@tabs-title-font-size: @font-size-base; +@tabs-title-font-size-lg: @font-size-lg; +@tabs-title-font-size-sm: @font-size-base; +@tabs-ink-bar-color: @primary-color; +@tabs-bar-margin: 0 0 @margin-md 0; +@tabs-horizontal-gutter: 32px; +@tabs-horizontal-margin: 0 0 0 @tabs-horizontal-gutter; +@tabs-horizontal-margin-rtl: 0 0 0 32px; +@tabs-horizontal-padding: @padding-sm 0; +@tabs-horizontal-padding-lg: @padding-md 0; +@tabs-horizontal-padding-sm: @padding-xs 0; +@tabs-vertical-padding: @padding-xs @padding-lg; +@tabs-vertical-margin: @margin-md 0 0 0; +@tabs-scrolling-size: 32px; +@tabs-highlight-color: @primary-color; +@tabs-hover-color: @primary-5; +@tabs-active-color: @primary-7; +@tabs-card-gutter: 2px; +@tabs-card-tab-active-border-top: 2px solid transparent; + +// BackTop +// --- +@back-top-color: #fff; +@back-top-bg: @text-color-secondary; +@back-top-hover-bg: @text-color; + +// Avatar +// --- +@avatar-size-base: 32px; +@avatar-size-lg: 40px; +@avatar-size-sm: 24px; +@avatar-font-size-base: 18px; +@avatar-font-size-lg: 24px; +@avatar-font-size-sm: 14px; +@avatar-bg: #ccc; +@avatar-color: #fff; +@avatar-border-radius: @border-radius-base; +@avatar-group-overlapping: -8px; +@avatar-group-space: 3px; +@avatar-group-border-color: #fff; + +// Switch +// --- +@switch-height: 22px; +@switch-sm-height: 16px; +@switch-min-width: 44px; +@switch-sm-min-width: 28px; +@switch-disabled-opacity: 0.4; +@switch-color: @primary-color; +@switch-bg: @component-background; +@switch-shadow-color: fade(#00230b, 20%); +@switch-padding: 2px; +@switch-inner-margin-min: ceil(@switch-height * 0.3); +@switch-inner-margin-max: ceil(@switch-height * 1.1); +@switch-sm-inner-margin-min: ceil(@switch-sm-height * 0.3); +@switch-sm-inner-margin-max: ceil(@switch-sm-height * 1.1); + +// Pagination +// --- +@pagination-item-bg: @component-background; +@pagination-item-size: @height-base; +@pagination-item-size-sm: 24px; +@pagination-font-family: @font-family; +@pagination-font-weight-active: 500; +@pagination-item-bg-active: @component-background; +@pagination-item-link-bg: @component-background; +@pagination-item-disabled-color-active: @disabled-color; +@pagination-item-disabled-bg-active: @disabled-active-bg; +@pagination-item-input-bg: @component-background; +@pagination-mini-options-size-changer-top: 0px; + +// PageHeader +// --- +@page-header-padding: @padding-lg; +@page-header-padding-vertical: @padding-md; +@page-header-padding-breadcrumb: @padding-sm; +@page-header-content-padding-vertical: @padding-sm; +@page-header-back-color: #000; +@page-header-ghost-bg: inherit; +@page-header-heading-title: @heading-4-size; +@page-header-heading-sub-title: 14px; +@page-header-tabs-tab-font-size: 16px; + +// Breadcrumb +// --- +@breadcrumb-base-color: @text-color-secondary; +@breadcrumb-last-item-color: @text-color; +@breadcrumb-font-size: @font-size-base; +@breadcrumb-icon-font-size: @font-size-base; +@breadcrumb-link-color: @text-color-secondary; +@breadcrumb-link-color-hover: @text-color; +@breadcrumb-separator-color: @text-color-secondary; +@breadcrumb-separator-margin: 0 @padding-xs; + +// Slider +// --- +@slider-margin: 10px 6px 10px; +@slider-rail-background-color: @background-color-base; +@slider-rail-background-color-hover: #e1e1e1; +@slider-track-background-color: @primary-3; +@slider-track-background-color-hover: @primary-4; +@slider-handle-border-width: 2px; +@slider-handle-background-color: @component-background; +@slider-handle-color: @primary-3; +@slider-handle-color-hover: @primary-4; +@slider-handle-color-focus: tint(@primary-color, 20%); +@slider-handle-color-focus-shadow: fade(@primary-color, 12%); +@slider-handle-color-tooltip-open: @primary-color; +@slider-handle-size: 14px; +@slider-handle-margin-top: -5px; +@slider-handle-margin-left: -5px; +@slider-handle-shadow: 0; +@slider-dot-border-color: @border-color-split; +@slider-dot-border-color-active: tint(@primary-color, 50%); +@slider-disabled-color: @disabled-color; +@slider-disabled-background-color: @component-background; + +// Tree +// --- +@tree-bg: @component-background; +@tree-title-height: 24px; +@tree-child-padding: 18px; +@tree-directory-selected-color: #fff; +@tree-directory-selected-bg: @primary-color; +@tree-node-hover-bg: @item-hover-bg; +@tree-node-selected-bg: @primary-2; + +// Collapse +// --- +@collapse-header-padding: @padding-sm @padding-md; +@collapse-header-padding-extra: 40px; +@collapse-header-bg: @background-color-light; +@collapse-content-padding: @padding-md; +@collapse-content-bg: @component-background; +@collapse-header-arrow-left: 16px; + +// Skeleton +// --- +@skeleton-color: rgba(190, 190, 190, 0.2); +@skeleton-to-color: shade(@skeleton-color, 5%); +@skeleton-paragraph-margin-top: 28px; +@skeleton-paragraph-li-margin-top: @margin-md; +@skeleton-paragraph-li-height: 16px; +@skeleton-title-height: 16px; +@skeleton-title-paragraph-margin-top: @margin-lg; + +// Transfer +// --- +@transfer-header-height: 40px; +@transfer-item-height: @height-base; +@transfer-disabled-bg: @disabled-bg; +@transfer-list-height: 200px; +@transfer-item-hover-bg: @item-hover-bg; +@transfer-item-selected-hover-bg: darken(@item-active-bg, 2%); +@transfer-item-padding-vertical: 6px; +@transfer-list-search-icon-top: 12px; + +// Message +// --- +@message-notice-content-padding: 10px 16px; +@message-notice-content-bg: @component-background; +// Motion +// --- +@wave-animation-width: 6px; + +// Alert +// --- +@alert-success-border-color: ~`colorPalette('@{success-color}', 3) `; +@alert-success-bg-color: ~`colorPalette('@{success-color}', 1) `; +@alert-success-icon-color: @success-color; +@alert-info-border-color: ~`colorPalette('@{info-color}', 3) `; +@alert-info-bg-color: ~`colorPalette('@{info-color}', 1) `; +@alert-info-icon-color: @info-color; +@alert-warning-border-color: ~`colorPalette('@{warning-color}', 3) `; +@alert-warning-bg-color: ~`colorPalette('@{warning-color}', 1) `; +@alert-warning-icon-color: @warning-color; +@alert-error-border-color: ~`colorPalette('@{error-color}', 3) `; +@alert-error-bg-color: ~`colorPalette('@{error-color}', 1) `; +@alert-error-icon-color: @error-color; +@alert-message-color: @heading-color; +@alert-text-color: @text-color; +@alert-close-color: @text-color-secondary; +@alert-close-hover-color: @icon-color-hover; +@alert-padding-vertical: @padding-xs; +@alert-padding-horizontal: @padding-md - 1px; +@alert-no-icon-padding-vertical: @padding-xs; +@alert-with-description-no-icon-padding-vertical: @padding-md - 1px; +@alert-with-description-padding-vertical: @padding-md - 1px; +@alert-with-description-padding: @alert-with-description-padding-vertical 15px + @alert-with-description-no-icon-padding-vertical @alert-with-description-icon-size; +@alert-icon-top: 8px + @font-size-base * (@line-height-base / 2) - (@font-size-base / 2); +@alert-with-description-icon-size: 24px; + +// List +// --- +@list-header-background: transparent; +@list-footer-background: transparent; +@list-empty-text-padding: @padding-md; +@list-item-padding: @padding-sm 0; +@list-item-padding-sm: @padding-xs @padding-md; +@list-item-padding-lg: 16px 24px; +@list-item-meta-margin-bottom: @padding-md; +@list-item-meta-avatar-margin-right: @padding-md; +@list-item-meta-title-margin-bottom: @padding-sm; +@list-customize-card-bg: @component-background; +@list-item-meta-description-font-size: @font-size-base; + +// Statistic +// --- +@statistic-title-font-size: @font-size-base; +@statistic-content-font-size: 24px; +@statistic-unit-font-size: 24px; +@statistic-font-family: @font-family; + +// Drawer +// --- +@drawer-header-padding: @padding-md @padding-lg; +@drawer-body-padding: @padding-lg; +@drawer-bg: @component-background; +@drawer-footer-padding-vertical: @modal-footer-padding-vertical; +@drawer-footer-padding-horizontal: @modal-footer-padding-horizontal; +@drawer-header-close-size: 56px; +@drawer-title-font-size: @font-size-lg; +@drawer-title-line-height: 22px; + +// Timeline +// --- +@timeline-width: 2px; +@timeline-color: @border-color-split; +@timeline-dot-border-width: 2px; +@timeline-dot-color: @primary-color; +@timeline-dot-bg: @component-background; +@timeline-item-padding-bottom: 20px; + +// Typography +// --- +@typography-title-font-weight: 600; +@typography-title-margin-top: 1.2em; +@typography-title-margin-bottom: 0.5em; + +// Upload +// --- +@upload-actions-color: @text-color-secondary; + +// Steps +// --- +@process-tail-color: @border-color-split; +@steps-nav-arrow-color: fade(@black, 25%); +@steps-background: @component-background; +@steps-icon-size: 32px; +@steps-icon-custom-size: @steps-icon-size; +@steps-icon-custom-top: 0px; +@steps-icon-custom-font-size: 24px; +@steps-icon-top: -0.5px; +@steps-icon-font-size: @font-size-lg; +@steps-icon-margin: 0 8px 0 0; +@steps-title-line-height: @height-base; +@steps-small-icon-size: 24px; +@steps-small-icon-margin: 0 8px 0 0; +@steps-dot-size: 8px; +@steps-dot-top: 2px; +@steps-current-dot-size: 10px; +@steps-description-max-width: 140px; +@steps-nav-content-max-width: auto; +@steps-vertical-icon-width: 16px; +@steps-vertical-tail-width: 16px; +@steps-vertical-tail-width-sm: 12px; + +// Notification +// --- +@notification-bg: @component-background; +@notification-padding-vertical: 16px; +@notification-padding-horizontal: 24px; + +// Result +// --- +@result-title-font-size: 24px; +@result-subtitle-font-size: @font-size-base; +@result-icon-font-size: 72px; +@result-extra-margin: 24px 0 0 0; + +// Image +// --- +@image-size-base: 48px; +@image-font-size-base: 24px; +@image-bg: #f5f5f5; +@image-color: #fff; +@image-mask-font-size: 16px; +@image-preview-operation-size: 18px; +@image-preview-operation-color: @text-color-dark; +@image-preview-operation-disabled-color: fade(@image-preview-operation-color, 25%); + +// Segmented +// --- +@segmented-bg: fade(@black, 4%); +@segmented-hover-bg: fade(@black, 6%); +@segmented-selected-bg: @white; +@segmented-label-color: fade(@black, 65%); +@segmented-label-hover-color: #262626; diff --git a/src/styles/themes/index.less b/src/styles/themes/index.less new file mode 100644 index 0000000..fd29f58 --- /dev/null +++ b/src/styles/themes/index.less @@ -0,0 +1,7 @@ +// Default using variable as entry to support site variable version +// This will be replaced in webpack bundle +// @root-entry-name: variable; + +// @import './default.less'; +// @import './variable.less'; +@import './@{root-entry-name}.less'; diff --git a/src/styles/themes/variable.less b/src/styles/themes/variable.less new file mode 100644 index 0000000..3a8e45e --- /dev/null +++ b/src/styles/themes/variable.less @@ -0,0 +1,1139 @@ +/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */ +@import '../color/colors'; + +@theme: variable; + +// The prefix to use on all css classes from ant. +@ant-prefix: ant; + +// An override for the html selector for theme prefixes +@html-selector: html; + +@{html-selector} { + @base-primary: @blue-6; + + // ========= Primary Color ========= + --@{ant-prefix}-primary-color: @base-primary; + --@{ant-prefix}-primary-color-hover: color(~`colorPalette('@{base-primary}', 5) `); + --@{ant-prefix}-primary-color-active: color(~`colorPalette('@{base-primary}', 7) `); + --@{ant-prefix}-primary-color-outline: fade(@base-primary, @outline-fade); + + // Legacy + @legacy-primary-1: color(~`colorPalette('@{base-primary}', 1) `); + + --@{ant-prefix}-primary-1: @legacy-primary-1; + --@{ant-prefix}-primary-2: color(~`colorPalette('@{base-primary}', 2) `); + --@{ant-prefix}-primary-3: color(~`colorPalette('@{base-primary}', 3) `); + --@{ant-prefix}-primary-4: color(~`colorPalette('@{base-primary}', 4) `); + --@{ant-prefix}-primary-5: color(~`colorPalette('@{base-primary}', 5) `); + --@{ant-prefix}-primary-6: @base-primary; + --@{ant-prefix}-primary-7: color(~`colorPalette('@{base-primary}', 7) `); + + // Deprecated + --@{ant-prefix}-primary-color-deprecated-pure: ~''; + --@{ant-prefix}-primary-color-deprecated-l-35: lighten(@base-primary, 35%); + --@{ant-prefix}-primary-color-deprecated-l-20: lighten(@base-primary, 20%); + --@{ant-prefix}-primary-color-deprecated-t-20: tint(@base-primary, 20%); + --@{ant-prefix}-primary-color-deprecated-t-50: tint(@base-primary, 50%); + --@{ant-prefix}-primary-color-deprecated-f-12: fade(@base-primary, 12%); + --@{ant-prefix}-primary-color-active-deprecated-f-30: fade(@legacy-primary-1, 30%); + --@{ant-prefix}-primary-color-active-deprecated-d-02: darken(@legacy-primary-1, 2%); + + // ========= Success Color ========= + --@{ant-prefix}-success-color: @green-6; + --@{ant-prefix}-success-color-hover: color(~`colorPalette('@{green-6}', 5) `); + --@{ant-prefix}-success-color-active: color(~`colorPalette('@{green-6}', 7) `); + --@{ant-prefix}-success-color-outline: fade(@green-6, @outline-fade); + --@{ant-prefix}-success-color-deprecated-bg: ~`colorPalette('@{green-6}', 1) `; + --@{ant-prefix}-success-color-deprecated-border: ~`colorPalette('@{green-6}', 3) `; + + // ========== Error Color ========== + --@{ant-prefix}-error-color: @red-5; + --@{ant-prefix}-error-color-hover: color(~`colorPalette('@{red-5}', 5) `); + --@{ant-prefix}-error-color-active: color(~`colorPalette('@{red-5}', 7) `); + --@{ant-prefix}-error-color-outline: fade(@red-5, @outline-fade); + --@{ant-prefix}-error-color-deprecated-bg: ~`colorPalette('@{red-5}', 1) `; + --@{ant-prefix}-error-color-deprecated-border: ~`colorPalette('@{red-5}', 3) `; + + // ========= Warning Color ========= + --@{ant-prefix}-warning-color: @gold-6; + --@{ant-prefix}-warning-color-hover: color(~`colorPalette('@{gold-6}', 5) `); + --@{ant-prefix}-warning-color-active: color(~`colorPalette('@{gold-6}', 7) `); + --@{ant-prefix}-warning-color-outline: fade(@gold-6, @outline-fade); + --@{ant-prefix}-warning-color-deprecated-bg: ~`colorPalette('@{gold-6}', 1) `; + --@{ant-prefix}-warning-color-deprecated-border: ~`colorPalette('@{gold-6}', 3) `; + + // ========== Info Color =========== + --@{ant-prefix}-info-color: @base-primary; + --@{ant-prefix}-info-color-deprecated-bg: ~`colorPalette('@{base-primary}', 1) `; + --@{ant-prefix}-info-color-deprecated-border: ~`colorPalette('@{base-primary}', 3) `; +} + +// -------- Colors ----------- +// >>> Primary +@primary-color: ~'var(--@{ant-prefix}-primary-color)'; +@primary-color-hover: ~'var(--@{ant-prefix}-primary-color-hover)'; +@primary-color-active: ~'var(--@{ant-prefix}-primary-color-active)'; +@primary-color-outline: ~'var(--@{ant-prefix}-primary-color-outline)'; + +@processing-color: @primary-color; + +// >>> Info +@info-color: ~'var(--@{ant-prefix}-info-color)'; +@info-color-deprecated-bg: ~'var(--@{ant-prefix}-info-color-deprecated-bg)'; +@info-color-deprecated-border: ~'var(--@{ant-prefix}-info-color-deprecated-border)'; + +// >>> Success +@success-color: ~'var(--@{ant-prefix}-success-color)'; +@success-color-hover: ~'var(--@{ant-prefix}-success-color-hover)'; +@success-color-active: ~'var(--@{ant-prefix}-success-color-active)'; +@success-color-outline: ~'var(--@{ant-prefix}-success-color-outline)'; +@success-color-deprecated-bg: ~'var(--@{ant-prefix}-success-color-deprecated-bg)'; +@success-color-deprecated-border: ~'var(--@{ant-prefix}-success-color-deprecated-border)'; + +// >>> Warning +@warning-color: ~'var(--@{ant-prefix}-warning-color)'; +@warning-color-hover: ~'var(--@{ant-prefix}-warning-color-hover)'; +@warning-color-active: ~'var(--@{ant-prefix}-warning-color-active)'; +@warning-color-outline: ~'var(--@{ant-prefix}-warning-color-outline)'; +@warning-color-deprecated-bg: ~'var(--@{ant-prefix}-warning-color-deprecated-bg)'; +@warning-color-deprecated-border: ~'var(--@{ant-prefix}-warning-color-deprecated-border)'; + +// >>> Error +@error-color: ~'var(--@{ant-prefix}-error-color)'; +@error-color-hover: ~'var(--@{ant-prefix}-error-color-hover)'; +@error-color-active: ~'var(--@{ant-prefix}-error-color-active)'; +@error-color-outline: ~'var(--@{ant-prefix}-error-color-outline)'; +@error-color-deprecated-bg: ~'var(--@{ant-prefix}-error-color-deprecated-bg)'; +@error-color-deprecated-border: ~'var(--@{ant-prefix}-error-color-deprecated-border)'; + +@highlight-color: @red-5; +@normal-color: #d9d9d9; +@white: #fff; +@black: #000; + +// Color used by default to control hover and active backgrounds and for +// alert info backgrounds. +@primary-1: ~'var(--@{ant-prefix}-primary-1)'; // replace tint(@primary-color, 90%) +@primary-2: ~'var(--@{ant-prefix}-primary-2)'; // replace tint(@primary-color, 80%) +@primary-3: ~'var(--@{ant-prefix}-primary-3)'; // unused +@primary-4: ~'var(--@{ant-prefix}-primary-4)'; // unused +@primary-5: ~'var(--@{ant-prefix}-primary-5)'; // color used to control the text color in many active and hover states, replace tint(@primary-color, 20%) +@primary-6: ~'var(--@{ant-prefix}-primary-6)'; // color used to control the text color of active buttons, don't use, use @primary-color +@primary-7: ~'var(--@{ant-prefix}-primary-7)'; // replace shade(@primary-color, 5%) +@primary-8: color(~`colorPalette('@{primary-color}', 8) `); // unused +@primary-9: color(~`colorPalette('@{primary-color}', 9) `); // unused +@primary-10: color(~`colorPalette('@{primary-color}', 10) `); // unused + +// Base Scaffolding Variables +// --- + +// Background color for `` +@body-background: #fff; +// Base background color for most components +@component-background: #fff; +// Popover background color +@popover-background: @component-background; +@popover-customize-border-color: @border-color-split; +@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'; +@code-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; +@text-color: fade(@black, 85%); +@text-color-secondary: fade(@black, 45%); +@text-color-inverse: @white; +@icon-color: inherit; +@icon-color-hover: fade(@black, 75%); +@heading-color: fade(@black, 85%); +@text-color-dark: fade(@white, 85%); +@text-color-secondary-dark: fade(@white, 65%); +@text-selection-bg: @primary-color; +@font-variant-base: tabular-nums; +@font-feature-settings-base: 'tnum'; +@font-size-base: 14px; +@font-size-lg: @font-size-base + 2px; +@font-size-sm: 12px; +@heading-1-size: ceil(@font-size-base * 2.71); +@heading-2-size: ceil(@font-size-base * 2.14); +@heading-3-size: ceil(@font-size-base * 1.71); +@heading-4-size: ceil(@font-size-base * 1.42); +@heading-5-size: ceil(@font-size-base * 1.14); +// https://github.com/ant-design/ant-design/issues/20210 +@line-height-base: 1.5715; +@border-radius-base: 2px; +@border-radius-sm: 2px; + +// control border +@control-border-radius: @border-radius-base; + +// arrow border +@arrow-border-radius: @border-radius-sm; + +// vertical paddings +@padding-lg: 24px; // containers +@padding-md: 16px; // small containers and buttons +@padding-sm: 12px; // Form controls and items +@padding-xs: 8px; // small items +@padding-xss: 4px; // more small + +// vertical padding for all form controls +@control-padding-horizontal: @padding-sm; +@control-padding-horizontal-sm: @padding-xs; + +// vertical margins +@margin-lg: 24px; // containers +@margin-md: 16px; // small containers and buttons +@margin-sm: 12px; // Form controls and items +@margin-xs: 8px; // small items +@margin-xss: 4px; // more small + +// height rules +@height-base: 32px; +@height-lg: 40px; +@height-sm: 24px; + +// The background colors for active and hover states for things like +// list items or table cells. +@item-active-bg: @primary-1; +@item-hover-bg: #f5f5f5; + +// ICONFONT +@iconfont-css-prefix: anticon; + +// LINK +@link-color: @primary-color; +@link-hover-color: @primary-color-hover; +@link-active-color: @primary-color-active; +@link-decoration: none; +@link-hover-decoration: none; +@link-focus-decoration: none; +@link-focus-outline: 0; + +// Animation +@ease-base-out: cubic-bezier(0.7, 0.3, 0.1, 1); +@ease-base-in: cubic-bezier(0.9, 0, 0.3, 0.7); +@ease-out: cubic-bezier(0.215, 0.61, 0.355, 1); +@ease-in: cubic-bezier(0.55, 0.055, 0.675, 0.19); +@ease-in-out: cubic-bezier(0.645, 0.045, 0.355, 1); +@ease-out-back: cubic-bezier(0.12, 0.4, 0.29, 1.46); +@ease-in-back: cubic-bezier(0.71, -0.46, 0.88, 0.6); +@ease-in-out-back: cubic-bezier(0.71, -0.46, 0.29, 1.46); +@ease-out-circ: cubic-bezier(0.08, 0.82, 0.17, 1); +@ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.34); +@ease-in-out-circ: cubic-bezier(0.78, 0.14, 0.15, 0.86); +@ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1); +@ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06); +@ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1); + +// Border color +@border-color-base: hsv(0, 0, 85%); // base border outline a component +@border-color-split: rgba(0, 0, 0, 0.06); // split border inside a component +@border-color-inverse: @white; +@border-width-base: 1px; // width of the border for a component +@border-style-base: solid; // style of a components border + +// Outline +@outline-blur-size: 0; +@outline-width: 2px; +@outline-color: @primary-color; // No use anymore +@outline-fade: 20%; + +@background-color-light: hsv(0, 0, 98%); // background of header and selected item +@background-color-base: hsv(0, 0, 96%); // Default grey background color + +// Disabled states +@disabled-color: fade(#000, 25%); +@disabled-bg: @background-color-base; +@disabled-active-bg: tint(@black, 90%); +@disabled-color-dark: fade(#fff, 35%); + +// Shadow +@shadow-color: rgba(0, 0, 0, 0.15); +@shadow-color-inverse: @component-background; +@box-shadow-base: @shadow-2; +@shadow-1-up: 0 -6px 16px -8px rgba(0, 0, 0, 0.08), 0 -9px 28px 0 rgba(0, 0, 0, 0.05), + 0 -12px 48px 16px rgba(0, 0, 0, 0.03); +@shadow-1-down: 0 6px 16px -8px rgba(0, 0, 0, 0.08), 0 9px 28px 0 rgba(0, 0, 0, 0.05), + 0 12px 48px 16px rgba(0, 0, 0, 0.03); +@shadow-1-left: -6px 0 16px -8px rgba(0, 0, 0, 0.08), -9px 0 28px 0 rgba(0, 0, 0, 0.05), + -12px 0 48px 16px rgba(0, 0, 0, 0.03); +@shadow-1-right: 6px 0 16px -8px rgba(0, 0, 0, 0.08), 9px 0 28px 0 rgba(0, 0, 0, 0.05), + 12px 0 48px 16px rgba(0, 0, 0, 0.03); +@shadow-2: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), + 0 9px 28px 8px rgba(0, 0, 0, 0.05); + +// Buttons +@btn-font-weight: 400; +@btn-border-radius-base: @border-radius-base; +@btn-border-radius-sm: @border-radius-base; +@btn-border-width: @border-width-base; +@btn-border-style: @border-style-base; +@btn-shadow: 0 2px 0 rgba(0, 0, 0, 0.015); +@btn-primary-shadow: 0 2px 0 rgba(0, 0, 0, 0.045); +@btn-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12); + +@btn-primary-color: #fff; +@btn-primary-bg: @primary-color; + +@btn-default-color: @text-color; +@btn-default-bg: @component-background; +@btn-default-border: @border-color-base; + +@btn-danger-color: #fff; +@btn-danger-bg: @error-color; +@btn-danger-border: @error-color; + +@btn-disable-color: @disabled-color; +@btn-disable-bg: @disabled-bg; +@btn-disable-border: @border-color-base; + +@btn-default-ghost-color: @component-background; +@btn-default-ghost-bg: transparent; +@btn-default-ghost-border: @component-background; + +@btn-font-size-lg: @font-size-lg; +@btn-font-size-sm: @font-size-base; +@btn-padding-horizontal-base: @padding-md - 1px; +@btn-padding-horizontal-lg: @btn-padding-horizontal-base; +@btn-padding-horizontal-sm: @padding-xs - 1px; + +@btn-height-base: @height-base; +@btn-height-lg: @height-lg; +@btn-height-sm: @height-sm; + +@btn-line-height: @line-height-base; + +@btn-circle-size: @btn-height-base; +@btn-circle-size-lg: @btn-height-lg; +@btn-circle-size-sm: @btn-height-sm; + +@btn-square-size: @btn-height-base; +@btn-square-size-lg: @btn-height-lg; +@btn-square-size-sm: @btn-height-sm; +@btn-square-only-icon-size: @font-size-base + 2px; +@btn-square-only-icon-size-sm: @font-size-base; +@btn-square-only-icon-size-lg: @btn-font-size-lg + 2px; + +@btn-group-border: @primary-5; + +@btn-link-hover-bg: transparent; +@btn-text-hover-bg: rgba(0, 0, 0, 0.018); + +// Checkbox +@checkbox-size: 16px; +@checkbox-color: @primary-color; +@checkbox-check-color: #fff; +@checkbox-check-bg: @checkbox-check-color; +@checkbox-border-width: @border-width-base; +@checkbox-border-radius: @border-radius-sm; +@checkbox-group-item-margin-right: 8px; + +// Descriptions +@descriptions-bg: #fafafa; +@descriptions-title-margin-bottom: 20px; +@descriptions-default-padding: @padding-md @padding-lg; +@descriptions-middle-padding: @padding-sm @padding-lg; +@descriptions-small-padding: @padding-xs @padding-md; +@descriptions-item-padding-bottom: @padding-md; +@descriptions-item-trailing-colon: true; +@descriptions-item-label-colon-margin-right: 8px; +@descriptions-item-label-colon-margin-left: 2px; +@descriptions-extra-color: @text-color; + +// Divider +@divider-text-padding: 1em; +@divider-orientation-margin: 5%; +@divider-color: rgba(0, 0, 0, 6%); +@divider-vertical-gutter: 8px; + +// Dropdown +@dropdown-selected-color: @primary-color; +@dropdown-menu-submenu-disabled-bg: @component-background; +@dropdown-selected-bg: @item-active-bg; + +// Empty +@empty-font-size: @font-size-base; + +// Radio +@radio-size: 16px; +@radio-top: 0.2em; +@radio-border-width: 1px; +@radio-dot-size: @radio-size - 8px; +@radio-dot-color: @primary-color; +@radio-dot-disabled-color: fade(@black, 20%); +@radio-solid-checked-color: @component-background; + +// Radio buttons +@radio-button-bg: @btn-default-bg; +@radio-button-checked-bg: @btn-default-bg; +@radio-button-color: @btn-default-color; +@radio-button-hover-color: @primary-5; +@radio-button-active-color: @primary-7; +@radio-button-padding-horizontal: @padding-md - 1px; +@radio-disabled-button-checked-bg: @disabled-active-bg; +@radio-disabled-button-checked-color: @disabled-color; +@radio-wrapper-margin-right: 8px; + +// Media queries breakpoints +// @screen-xs and @screen-xs-min is not used in Grid +// smallest break point is @screen-md +@screen-xs: 480px; +@screen-xs-min: @screen-xs; +// 👆 Extra small screen / phone + +// 👇 Small screen / tablet +@screen-sm: 576px; +@screen-sm-min: @screen-sm; + +// Medium screen / desktop +@screen-md: 768px; +@screen-md-min: @screen-md; + +// Large screen / wide desktop +@screen-lg: 992px; +@screen-lg-min: @screen-lg; + +// Extra large screen / full hd +@screen-xl: 1200px; +@screen-xl-min: @screen-xl; + +// Extra extra large screen / large desktop +@screen-xxl: 1600px; +@screen-xxl-min: @screen-xxl; + +// provide a maximum +@screen-xs-max: (@screen-sm-min - 1px); +@screen-sm-max: (@screen-md-min - 1px); +@screen-md-max: (@screen-lg-min - 1px); +@screen-lg-max: (@screen-xl-min - 1px); +@screen-xl-max: (@screen-xxl-min - 1px); + +// Grid system +@grid-columns: 24; + +// Layout +@layout-body-background: #f0f2f5; +@layout-header-background: #001529; +@layout-header-height: 64px; +@layout-header-padding: 0 50px; +@layout-header-color: @text-color; +@layout-footer-padding: 24px 50px; +@layout-footer-background: @layout-body-background; +@layout-sider-background: @layout-header-background; +@layout-trigger-height: 48px; +@layout-trigger-background: #002140; +@layout-trigger-color: #fff; +@layout-zero-trigger-width: 36px; +@layout-zero-trigger-height: 42px; +// Layout light theme +@layout-sider-background-light: #fff; +@layout-trigger-background-light: #fff; +@layout-trigger-color-light: @text-color; + +// z-index list, order by `z-index` +@zindex-badge: auto; +@zindex-table-fixed: 2; +@zindex-affix: 10; +@zindex-back-top: 10; +@zindex-picker-panel: 10; +@zindex-popup-close: 10; +@zindex-modal: 1000; +@zindex-modal-mask: 1000; +@zindex-message: 1010; +@zindex-notification: 1010; +@zindex-popover: 1030; +@zindex-dropdown: 1050; +@zindex-picker: 1050; +@zindex-popoconfirm: 1060; +@zindex-tooltip: 1070; +@zindex-image: 1080; + +// Animation +@animation-duration-slow: 0.3s; // Modal +@animation-duration-base: 0.2s; +@animation-duration-fast: 0.1s; // Tooltip + +//CollapsePanel +@collapse-panel-border-radius: @border-radius-base; + +//Dropdown +@dropdown-menu-bg: @component-background; +@dropdown-vertical-padding: 5px; +@dropdown-edge-child-vertical-padding: 4px; +@dropdown-font-size: @font-size-base; +@dropdown-line-height: 22px; + +// Form +// --- +@label-required-color: @highlight-color; +@label-color: @heading-color; +@form-warning-input-bg: @input-bg; +@form-item-margin-bottom: 24px; +@form-item-trailing-colon: true; +@form-vertical-label-padding: 0 0 8px; +@form-vertical-label-margin: 0; +@form-item-label-font-size: @font-size-base; +@form-item-label-height: @input-height-base; +@form-item-label-colon-margin-right: 8px; +@form-item-label-colon-margin-left: 2px; +@form-error-input-bg: @input-bg; + +// Input +// --- +@input-height-base: @height-base; +@input-height-lg: @height-lg; +@input-height-sm: @height-sm; +@input-padding-horizontal: @control-padding-horizontal - 1px; +@input-padding-horizontal-base: @input-padding-horizontal; +@input-padding-horizontal-sm: @control-padding-horizontal-sm - 1px; +@input-padding-horizontal-lg: @input-padding-horizontal; +@input-padding-vertical-base: max( + (round(((@input-height-base - @font-size-base * @line-height-base) / 2) * 10) / 10) - + @border-width-base, + 3px +); +@input-padding-vertical-sm: max( + (round(((@input-height-sm - @font-size-base * @line-height-base) / 2) * 10) / 10) - + @border-width-base, + 0 +); +@input-padding-vertical-lg: ( + ceil(((@input-height-lg - @font-size-lg * @line-height-base) / 2) * 10) / 10 + ) - @border-width-base; +@input-placeholder-color: hsv(0, 0, 75%); +@input-color: @text-color; +@input-icon-color: @input-color; +@input-border-color: @border-color-base; +@input-bg: @component-background; +@input-number-hover-border-color: @input-hover-border-color; +@input-number-handler-active-bg: #f4f4f4; +@input-number-handler-hover-bg: @primary-5; +@input-number-handler-bg: @component-background; +@input-number-handler-border-color: @border-color-base; +@input-addon-bg: @background-color-light; +@input-hover-border-color: @primary-5; +@input-disabled-bg: @disabled-bg; +@input-outline-offset: 0 0; +@input-icon-hover-color: fade(@black, 85%); +@input-disabled-color: @disabled-color; + +// Mentions +// --- +@mentions-dropdown-bg: @component-background; +@mentions-dropdown-menu-item-hover-bg: @mentions-dropdown-bg; + +// Select +// --- +@select-border-color: @border-color-base; +@select-item-selected-color: @text-color; +@select-item-selected-font-weight: 600; +@select-dropdown-bg: @component-background; +@select-item-selected-bg: @primary-1; +@select-item-active-bg: @item-hover-bg; +@select-dropdown-vertical-padding: @dropdown-vertical-padding; +@select-dropdown-font-size: @dropdown-font-size; +@select-dropdown-line-height: @dropdown-line-height; +@select-dropdown-height: 32px; +@select-background: @component-background; +@select-clear-background: @select-background; +@select-selection-item-bg: @background-color-base; +@select-selection-item-border-color: @border-color-split; +@select-single-item-height-lg: 40px; +@select-multiple-item-height: @input-height-base - @input-padding-vertical-base * 2; // Normal 24px +@select-multiple-item-height-lg: 32px; +@select-multiple-item-spacing-half: ceil((@input-padding-vertical-base / 2)); +@select-multiple-disabled-background: @input-disabled-bg; +@select-multiple-item-disabled-color: #bfbfbf; +@select-multiple-item-disabled-border-color: @select-border-color; + +// Cascader +// --- +@cascader-bg: @component-background; +@cascader-item-selected-bg: @primary-1; +@cascader-menu-bg: @component-background; +@cascader-menu-border-color-split: @border-color-split; + +// Cascader +// ---- +@cascader-dropdown-vertical-padding: @dropdown-vertical-padding; +@cascader-dropdown-edge-child-vertical-padding: @dropdown-edge-child-vertical-padding; +@cascader-dropdown-font-size: @dropdown-font-size; +@cascader-dropdown-line-height: @dropdown-line-height; + +// Anchor +// --- +@anchor-bg: transparent; +@anchor-border-color: @border-color-split; +@anchor-link-top: 4px; +@anchor-link-left: 16px; +@anchor-link-padding: @anchor-link-top 0 @anchor-link-top @anchor-link-left; + +// Tooltip +// --- +// Tooltip max width +@tooltip-max-width: 250px; +// Tooltip text color +@tooltip-color: #fff; +// Tooltip background color +@tooltip-bg: rgba(0, 0, 0, 0.75); +// Tooltip arrow width +@tooltip-arrow-width: 8px * sqrt(2); +// Tooltip distance with trigger +@tooltip-distance: @tooltip-arrow-width - 1px + 4px; +// Tooltip arrow color +@tooltip-arrow-color: @tooltip-bg; +@tooltip-border-radius: @border-radius-base; + +// Popover +// --- +// Popover body background color +@popover-bg: @component-background; +// Popover text color +@popover-color: @text-color; +// Popover maximum width +@popover-min-width: 177px; +@popover-min-height: 32px; +// Popover arrow width +@popover-arrow-width: @tooltip-arrow-width; +// Popover arrow color +@popover-arrow-color: @popover-bg; +// Popover outer arrow width +// Popover outer arrow color +@popover-arrow-outer-color: @popover-bg; +// Popover distance with trigger +@popover-distance: @popover-arrow-width + 4px; +@popover-padding-horizontal: @padding-md; + +// Modal +// -- +@modal-header-padding-vertical: @padding-md; +@modal-header-padding-horizontal: @padding-lg; +@modal-body-padding: @padding-lg; +@modal-header-bg: @component-background; +@modal-header-padding: @modal-header-padding-vertical @modal-header-padding-horizontal; +@modal-header-border-width: @border-width-base; +@modal-header-border-style: @border-style-base; +@modal-header-title-line-height: 22px; +@modal-header-title-font-size: @font-size-lg; +@modal-header-border-color-split: @border-color-split; +@modal-header-close-size: @modal-header-title-line-height + 2 * @modal-header-padding-vertical; +@modal-content-bg: @component-background; +@modal-heading-color: @heading-color; +@modal-close-color: @text-color-secondary; +@modal-footer-bg: transparent; +@modal-footer-border-color-split: @border-color-split; +@modal-footer-border-style: @border-style-base; +@modal-footer-padding-vertical: 10px; +@modal-footer-padding-horizontal: 16px; +@modal-footer-border-width: @border-width-base; +@modal-mask-bg: fade(@black, 45%); +@modal-confirm-body-padding: 32px 32px 24px; +@modal-confirm-title-font-size: @font-size-lg; +@modal-border-radius: @border-radius-base; + +// Progress +// -- +@progress-default-color: @processing-color; +@progress-remaining-color: rgba(0, 0, 0, 0.04); +@progress-info-text-color: @progress-text-color; +@progress-radius: 100px; +@progress-steps-item-bg: #f3f3f3; +@progress-text-font-size: 1em; +@progress-text-color: @text-color; // This is for circle text color, should be renamed better +@progress-circle-text-font-size: 1em; +// Menu +// --- +@menu-inline-toplevel-item-height: 40px; +@menu-item-height: 40px; +@menu-item-group-height: @line-height-base; +@menu-collapsed-width: 80px; +@menu-bg: @component-background; +@menu-popup-bg: @component-background; +@menu-item-color: @text-color; +@menu-inline-submenu-bg: @background-color-light; +@menu-highlight-color: @primary-color; +@menu-highlight-danger-color: @error-color; +@menu-item-active-bg: @primary-1; +@menu-item-active-danger-bg: @red-1; +@menu-item-active-border-width: 3px; +@menu-item-group-title-color: @text-color-secondary; +@menu-item-vertical-margin: 4px; +@menu-item-font-size: @font-size-base; +@menu-item-boundary-margin: 8px; +@menu-item-padding-horizontal: 20px; +@menu-item-padding: 0 @menu-item-padding-horizontal; +@menu-horizontal-line-height: 46px; +@menu-icon-margin-right: 10px; +@menu-icon-size: @menu-item-font-size; +@menu-icon-size-lg: @font-size-lg; +@menu-item-group-title-font-size: @menu-item-font-size; + +// dark theme +@menu-dark-color: @text-color-secondary-dark; +@menu-dark-danger-color: @error-color; +@menu-dark-bg: @layout-header-background; +@menu-dark-arrow-color: #fff; +@menu-dark-inline-submenu-bg: #000c17; +@menu-dark-highlight-color: #fff; +@menu-dark-item-active-bg: @primary-color; +@menu-dark-item-active-danger-bg: @error-color; +@menu-dark-selected-item-icon-color: @white; +@menu-dark-selected-item-text-color: @white; +@menu-dark-item-hover-bg: transparent; +// Spin +// --- +@spin-dot-size-sm: 14px; +@spin-dot-size: 20px; +@spin-dot-size-lg: 32px; + +// Table +// -- +@table-bg: @component-background; +@table-header-bg: @background-color-light; +@table-header-color: @heading-color; +@table-header-sort-bg: @background-color-base; +@table-body-sort-bg: #fafafa; +@table-row-hover-bg: @background-color-light; +@table-selected-row-color: inherit; +@table-selected-row-bg: @primary-1; +@table-body-selected-sort-bg: @table-selected-row-bg; +@table-selected-row-hover-bg: ~'var(--@{ant-prefix}-primary-color-active-deprecated-d-02)'; +@table-expanded-row-bg: #fbfbfb; +@table-padding-vertical: 16px; +@table-padding-horizontal: 16px; +@table-padding-vertical-md: (@table-padding-vertical * 3 / 4); +@table-padding-horizontal-md: (@table-padding-horizontal / 2); +@table-padding-vertical-sm: (@table-padding-vertical / 2); +@table-padding-horizontal-sm: (@table-padding-horizontal / 2); +@table-border-color: @border-color-split; +@table-border-radius-base: @border-radius-base; +@table-footer-bg: @background-color-light; +@table-footer-color: @heading-color; +@table-header-bg-sm: @table-header-bg; +@table-font-size: @font-size-base; +@table-font-size-md: @table-font-size; +@table-font-size-sm: @table-font-size; +@table-header-cell-split-color: rgba(0, 0, 0, 0.06); +// Sorter +// Legacy: `table-header-sort-active-bg` is used for hover not real active +@table-header-sort-active-bg: rgba(0, 0, 0, 0.04); +@table-fixed-header-sort-active-bg: hsv(0, 0, 96%); + +// Filter +@table-header-filter-active-bg: rgba(0, 0, 0, 0.04); +@table-filter-btns-bg: inherit; +@table-filter-dropdown-bg: @component-background; +@table-expand-icon-bg: @component-background; +@table-selection-column-width: 32px; +// Sticky +@table-sticky-scroll-bar-bg: fade(#000, 35%); +@table-sticky-scroll-bar-radius: 4px; + +// Tag +// -- +@tag-border-radius: @border-radius-base; +@tag-default-bg: @background-color-light; +@tag-default-color: @text-color; +@tag-font-size: @font-size-sm; +@tag-line-height: 20px; + +// TimePicker +// --- +@picker-bg: @component-background; +@picker-basic-cell-hover-color: @item-hover-bg; +@picker-basic-cell-active-with-range-color: @primary-1; +@picker-basic-cell-hover-with-range-color: ~'var(--@{ant-prefix}-primary-color-deprecated-l-35)'; +@picker-basic-cell-disabled-bg: rgba(0, 0, 0, 0.04); +@picker-border-color: @border-color-split; +@picker-date-hover-range-border-color: ~'var(--@{ant-prefix}-primary-color-deprecated-l-20)'; +@picker-date-hover-range-color: @picker-basic-cell-hover-with-range-color; +@picker-time-panel-column-width: 56px; +@picker-time-panel-column-height: 224px; +@picker-time-panel-cell-height: 28px; +@picker-panel-cell-height: 24px; +@picker-panel-cell-width: 36px; +@picker-text-height: 40px; +@picker-panel-without-time-cell-height: 66px; + +// Calendar +// --- +@calendar-bg: @component-background; +@calendar-input-bg: @input-bg; +@calendar-border-color: @border-color-inverse; +@calendar-item-active-bg: @item-active-bg; +@calendar-column-active-bg: ~'var(--@{ant-prefix}-primary-color-active-deprecated-f-30)'; +@calendar-full-bg: @calendar-bg; +@calendar-full-panel-bg: @calendar-full-bg; + +// Carousel +// --- +@carousel-dot-width: 16px; +@carousel-dot-height: 3px; +@carousel-dot-active-width: 24px; + +// Badge +// --- +@badge-height: 20px; +@badge-height-sm: 14px; +@badge-dot-size: 6px; +@badge-font-size: @font-size-sm; +@badge-font-size-sm: @font-size-sm; +@badge-font-weight: normal; +@badge-status-size: 6px; +@badge-text-color: @component-background; +@badge-color: @highlight-color; + +// Rate +// --- +@rate-star-color: @yellow-6; +@rate-star-bg: @border-color-split; +@rate-star-size: 20px; +@rate-star-hover-scale: scale(1.1); + +// Card +// --- +@card-head-color: @heading-color; +@card-head-background: transparent; +@card-head-font-size: @font-size-lg; +@card-head-font-size-sm: @font-size-base; +@card-head-padding: 16px; +@card-head-padding-sm: (@card-head-padding / 2); +@card-head-height: 48px; +@card-head-height-sm: 36px; +@card-inner-head-padding: 12px; +@card-padding-base: 24px; +@card-padding-base-sm: (@card-padding-base / 2); +@card-actions-background: @component-background; +@card-actions-li-margin: 12px 0; +@card-skeleton-bg: #cfd8dc; +@card-background: @component-background; +@card-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), + 0 5px 12px 4px rgba(0, 0, 0, 0.09); +@card-radius: @border-radius-base; +@card-head-tabs-margin-bottom: -17px; +@card-head-extra-color: @text-color; + +// Comment +// --- +@comment-bg: inherit; +@comment-padding-base: @padding-md 0; +@comment-nest-indent: 44px; +@comment-font-size-base: @font-size-base; +@comment-font-size-sm: @font-size-sm; +@comment-author-name-color: @text-color-secondary; +@comment-author-time-color: #ccc; +@comment-action-color: @text-color-secondary; +@comment-action-hover-color: #595959; +@comment-actions-margin-bottom: inherit; +@comment-actions-margin-top: @margin-sm; +@comment-content-detail-p-margin-bottom: inherit; + +// Tabs +// --- +@tabs-card-head-background: @background-color-light; +@tabs-card-height: 40px; +@tabs-card-active-color: @primary-color; +@tabs-card-horizontal-padding: ( + (@tabs-card-height - floor(@font-size-base * @line-height-base)) / 2 + ) - @border-width-base @padding-md; +@tabs-card-horizontal-padding-sm: 6px @padding-md; +@tabs-card-horizontal-padding-lg: 7px @padding-md 6px; +@tabs-title-font-size: @font-size-base; +@tabs-title-font-size-lg: @font-size-lg; +@tabs-title-font-size-sm: @font-size-base; +@tabs-ink-bar-color: @primary-color; +@tabs-bar-margin: 0 0 @margin-md 0; +@tabs-horizontal-gutter: 32px; +@tabs-horizontal-margin: 0 0 0 @tabs-horizontal-gutter; +@tabs-horizontal-margin-rtl: 0 0 0 32px; +@tabs-horizontal-padding: @padding-sm 0; +@tabs-horizontal-padding-lg: @padding-md 0; +@tabs-horizontal-padding-sm: @padding-xs 0; +@tabs-vertical-padding: @padding-xs @padding-lg; +@tabs-vertical-margin: @margin-md 0 0 0; +@tabs-scrolling-size: 32px; +@tabs-highlight-color: @primary-color; +@tabs-hover-color: @primary-5; +@tabs-active-color: @primary-7; +@tabs-card-gutter: 2px; +@tabs-card-tab-active-border-top: 2px solid transparent; + +// BackTop +// --- +@back-top-color: #fff; +@back-top-bg: @text-color-secondary; +@back-top-hover-bg: @text-color; + +// Avatar +// --- +@avatar-size-base: 32px; +@avatar-size-lg: 40px; +@avatar-size-sm: 24px; +@avatar-font-size-base: 18px; +@avatar-font-size-lg: 24px; +@avatar-font-size-sm: 14px; +@avatar-bg: #ccc; +@avatar-color: #fff; +@avatar-border-radius: @border-radius-base; +@avatar-group-overlapping: -8px; +@avatar-group-space: 3px; +@avatar-group-border-color: #fff; + +// Switch +// --- +@switch-height: 22px; +@switch-sm-height: 16px; +@switch-min-width: 44px; +@switch-sm-min-width: 28px; +@switch-disabled-opacity: 0.4; +@switch-color: @primary-color; +@switch-bg: @component-background; +@switch-shadow-color: fade(#00230b, 20%); +@switch-padding: 2px; +@switch-inner-margin-min: ceil(@switch-height * 0.3); +@switch-inner-margin-max: ceil(@switch-height * 1.1); +@switch-sm-inner-margin-min: ceil(@switch-sm-height * 0.3); +@switch-sm-inner-margin-max: ceil(@switch-sm-height * 1.1); + +// Pagination +// --- +@pagination-item-bg: @component-background; +@pagination-item-size: @height-base; +@pagination-item-size-sm: 24px; +@pagination-font-family: @font-family; +@pagination-font-weight-active: 500; +@pagination-item-bg-active: @component-background; +@pagination-item-link-bg: @component-background; +@pagination-item-disabled-color-active: @disabled-color; +@pagination-item-disabled-bg-active: @disabled-active-bg; +@pagination-item-input-bg: @component-background; +@pagination-mini-options-size-changer-top: 0px; + +// PageHeader +// --- +@page-header-padding: @padding-lg; +@page-header-padding-vertical: @padding-md; +@page-header-padding-breadcrumb: @padding-sm; +@page-header-content-padding-vertical: @padding-sm; +@page-header-back-color: #000; +@page-header-ghost-bg: inherit; +@page-header-heading-title: @heading-4-size; +@page-header-heading-sub-title: 14px; +@page-header-tabs-tab-font-size: 16px; + +// Breadcrumb +// --- +@breadcrumb-base-color: @text-color-secondary; +@breadcrumb-last-item-color: @text-color; +@breadcrumb-font-size: @font-size-base; +@breadcrumb-icon-font-size: @font-size-base; +@breadcrumb-link-color: @text-color-secondary; +@breadcrumb-link-color-hover: @text-color; +@breadcrumb-separator-color: @text-color-secondary; +@breadcrumb-separator-margin: 0 @padding-xs; + +// Slider +// --- +@slider-margin: 10px 6px 10px; +@slider-rail-background-color: @background-color-base; +@slider-rail-background-color-hover: #e1e1e1; +@slider-track-background-color: @primary-3; +@slider-track-background-color-hover: @primary-4; +@slider-handle-border-width: 2px; +@slider-handle-background-color: @component-background; +@slider-handle-color: @primary-3; +@slider-handle-color-hover: @primary-4; +@slider-handle-color-focus: ~'var(--@{ant-prefix}-primary-color-deprecated-t-20)'; +@slider-handle-color-focus-shadow: ~'var(--@{ant-prefix}-primary-color-deprecated-f-12)'; +@slider-handle-color-tooltip-open: @primary-color; +@slider-handle-size: 14px; +@slider-handle-margin-top: -5px; +@slider-handle-margin-left: -5px; +@slider-handle-shadow: 0; +@slider-dot-border-color: @border-color-split; +@slider-dot-border-color-active: ~'var(--@{ant-prefix}-primary-color-deprecated-t-50)'; +@slider-disabled-color: @disabled-color; +@slider-disabled-background-color: @component-background; + +// Tree +// --- +@tree-bg: @component-background; +@tree-title-height: 24px; +@tree-child-padding: 18px; +@tree-directory-selected-color: #fff; +@tree-directory-selected-bg: @primary-color; +@tree-node-hover-bg: @item-hover-bg; +@tree-node-selected-bg: @primary-2; + +// Collapse +// --- +@collapse-header-padding: @padding-sm @padding-md; +@collapse-header-padding-extra: 40px; +@collapse-header-bg: @background-color-light; +@collapse-content-padding: @padding-md; +@collapse-content-bg: @component-background; +@collapse-header-arrow-left: 16px; + +// Skeleton +// --- +@skeleton-color: rgba(190, 190, 190, 0.2); +@skeleton-to-color: shade(@skeleton-color, 5%); +@skeleton-paragraph-margin-top: 28px; +@skeleton-paragraph-li-margin-top: @margin-md; +@skeleton-paragraph-li-height: 16px; +@skeleton-title-height: 16px; +@skeleton-title-paragraph-margin-top: @margin-lg; + +// Transfer +// --- +@transfer-header-height: 40px; +@transfer-item-height: @height-base; +@transfer-disabled-bg: @disabled-bg; +@transfer-list-height: 200px; +@transfer-item-hover-bg: @item-hover-bg; +@transfer-item-selected-hover-bg: ~'var(--@{ant-prefix}-primary-color-active-deprecated-d-02)'; +@transfer-item-padding-vertical: 6px; +@transfer-list-search-icon-top: 12px; + +// Message +// --- +@message-notice-content-padding: 10px 16px; +@message-notice-content-bg: @component-background; +// Motion +// --- +@wave-animation-width: 6px; + +// Alert +// --- +@alert-success-border-color: @success-color-deprecated-border; +@alert-success-bg-color: @success-color-deprecated-bg; +@alert-success-icon-color: @success-color; +@alert-info-border-color: @info-color-deprecated-border; +@alert-info-bg-color: @info-color-deprecated-bg; +@alert-info-icon-color: @info-color; +@alert-warning-border-color: @warning-color-deprecated-border; +@alert-warning-bg-color: @warning-color-deprecated-bg; +@alert-warning-icon-color: @warning-color; +@alert-error-border-color: @error-color-deprecated-border; +@alert-error-bg-color: @error-color-deprecated-bg; +@alert-error-icon-color: @error-color; +@alert-message-color: @heading-color; +@alert-text-color: @text-color; +@alert-close-color: @text-color-secondary; +@alert-close-hover-color: @icon-color-hover; +@alert-padding-vertical: @padding-xs; +@alert-padding-horizontal: @padding-md - 1px; +@alert-no-icon-padding-vertical: @padding-xs; +@alert-with-description-no-icon-padding-vertical: @padding-md - 1px; +@alert-with-description-padding-vertical: @padding-md - 1px; +@alert-with-description-padding: @alert-with-description-padding-vertical 15px + @alert-with-description-no-icon-padding-vertical @alert-with-description-icon-size; +@alert-icon-top: 8px + @font-size-base * (@line-height-base / 2) - (@font-size-base / 2); +@alert-with-description-icon-size: 24px; + +// List +// --- +@list-header-background: transparent; +@list-footer-background: transparent; +@list-empty-text-padding: @padding-md; +@list-item-padding: @padding-sm 0; +@list-item-padding-sm: @padding-xs @padding-md; +@list-item-padding-lg: 16px 24px; +@list-item-meta-margin-bottom: @padding-md; +@list-item-meta-avatar-margin-right: @padding-md; +@list-item-meta-title-margin-bottom: @padding-sm; +@list-customize-card-bg: @component-background; +@list-item-meta-description-font-size: @font-size-base; + +// Statistic +// --- +@statistic-title-font-size: @font-size-base; +@statistic-content-font-size: 24px; +@statistic-unit-font-size: 24px; +@statistic-font-family: @font-family; + +// Drawer +// --- +@drawer-header-padding: @padding-md @padding-lg; +@drawer-body-padding: @padding-lg; +@drawer-bg: @component-background; +@drawer-footer-padding-vertical: @modal-footer-padding-vertical; +@drawer-footer-padding-horizontal: @modal-footer-padding-horizontal; +@drawer-header-close-size: 56px; +@drawer-title-font-size: @font-size-lg; +@drawer-title-line-height: 22px; + +// Timeline +// --- +@timeline-width: 2px; +@timeline-color: @border-color-split; +@timeline-dot-border-width: 2px; +@timeline-dot-color: @primary-color; +@timeline-dot-bg: @component-background; +@timeline-item-padding-bottom: 20px; + +// Typography +// --- +@typography-title-font-weight: 600; +@typography-title-margin-top: 1.2em; +@typography-title-margin-bottom: 0.5em; + +// Upload +// --- +@upload-actions-color: @text-color-secondary; + +// Steps +// --- +@process-tail-color: @border-color-split; +@steps-nav-arrow-color: fade(@black, 25%); +@steps-background: @component-background; +@steps-icon-size: 32px; +@steps-icon-custom-size: @steps-icon-size; +@steps-icon-custom-top: 0px; +@steps-icon-custom-font-size: 24px; +@steps-icon-top: -0.5px; +@steps-icon-font-size: @font-size-lg; +@steps-icon-margin: 0 8px 0 0; +@steps-title-line-height: @height-base; +@steps-small-icon-size: 24px; +@steps-small-icon-margin: 0 8px 0 0; +@steps-dot-size: 8px; +@steps-dot-top: 2px; +@steps-current-dot-size: 10px; +@steps-description-max-width: 140px; +@steps-nav-content-max-width: auto; +@steps-vertical-icon-width: 16px; +@steps-vertical-tail-width: 16px; +@steps-vertical-tail-width-sm: 12px; + +// Notification +// --- +@notification-bg: @component-background; +@notification-padding-vertical: 16px; +@notification-padding-horizontal: 24px; + +// Result +// --- +@result-title-font-size: 24px; +@result-subtitle-font-size: @font-size-base; +@result-icon-font-size: 72px; +@result-extra-margin: 24px 0 0 0; + +// Image +// --- +@image-size-base: 48px; +@image-font-size-base: 24px; +@image-bg: #f5f5f5; +@image-color: #fff; +@image-mask-font-size: 16px; +@image-preview-operation-size: 18px; +@image-preview-operation-color: @text-color-dark; +@image-preview-operation-disabled-color: fade(@image-preview-operation-color, 25%); + +// Segmented +// --- +@segmented-bg: fade(@black, 4%); +@segmented-hover-bg: fade(@black, 6%); +@segmented-selected-bg: @white; +@segmented-label-color: fade(@black, 65%); +@segmented-label-hover-color: #262626; diff --git a/src/styles/variable.less b/src/styles/variable.less new file mode 100644 index 0000000..6c70293 --- /dev/null +++ b/src/styles/variable.less @@ -0,0 +1,4 @@ +@root-entry-name: variable; + +@import './themes/variable.less'; +@import './core/index'; diff --git a/src/testData/SettingAIgorithm.tsx b/src/testData/SettingAIgorithm.tsx new file mode 100644 index 0000000..54c91c3 --- /dev/null +++ b/src/testData/SettingAIgorithm.tsx @@ -0,0 +1,41 @@ +/* + * @Author: zhoux zhouxia@supervision.ltd + * @Date: 2023-11-07 10:57:28 + * @LastEditors: zhoux zhouxia@supervision.ltd + * @LastEditTime: 2023-11-07 10:57:32 + * @FilePath: \general-ai-platform-web\src\testData\SettingAIgorithm.ts + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +const data = [ + '苏胜天人物识别算法', + '苏胜天交警识别识别', + '苏胜天车牌识别算法', + '苏胜天语音识别算法', + '苏胜天轨迹识别算法', + ].map((item) => ({ + title: '苏胜天算法模型', + subTitle: 经典算法, + actions: [模型版本选择], + avatar: 'https://gw.alipayobjects.com/zos/antfincdn/UCSiy1j6jx/xingzhuang.svg', + content: ( +
+
{item}
+
+ +
+
+ 版本:V1.2.4 +
+
+ 更新时间:2022-12-12 +
+
+ ), + })); \ No newline at end of file diff --git a/src/testData/fabricGroupRoom.ts b/src/testData/fabricGroupRoom.ts new file mode 100644 index 0000000..dd05cf3 --- /dev/null +++ b/src/testData/fabricGroupRoom.ts @@ -0,0 +1,1644 @@ +const modelGroup: Record[] = [ + { + type: 'group', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: 0, + top: 0, + width: 115.6016, + height: 39, + fill: 'rgb(0,0,0)', + stroke: null, + strokeWidth: 0, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + id: 'b6ca8fad-c240-4659-9952-a90167699ce9', + selectable: false, + hasControls: true, + userProperty: {}, + objects: [ + { + type: 'group', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -57.8008, + top: -19.5, + width: 36, + height: 39, + fill: 'rgb(0,0,0)', + stroke: null, + strokeWidth: 0, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: '', + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + objects: [ + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -12.5, + top: -18, + width: 24, + height: 27, + fill: 'white', + stroke: null, + strokeWidth: 1, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'evenodd', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 19.2704, 25.9335], + ['C', 25.3006, 25.299, 30, 20.1983, 30, 14], + ['C', 30, 7.37258, 24.6274, 2, 18, 2], + ['C', 11.3726, 2, 6, 7.37258, 6, 14], + ['C', 6, 19.8172, 10.1393, 24.6677, 15.6332, 25.7667], + ['L', 17.5, 29], + ['L', 19.2704, 25.9335], + ['Z'], + ], + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -13.5, + top: -19, + width: 26, + height: 30, + fill: '#DCDCDC', + stroke: null, + strokeWidth: 1, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 19.2704, 25.9335], + ['L', 19.1658, 24.939], + ['L', 18.6591, 24.9924], + ['L', 18.4044, 25.4335], + ['L', 19.2704, 25.9335], + ['Z'], + ['M', 15.6332, 25.7667], + ['L', 16.4993, 25.2667], + ['L', 16.273, 24.8748], + ['L', 15.8294, 24.7861], + ['L', 15.6332, 25.7667], + ['Z'], + ['M', 17.5, 29], + ['L', 16.634, 29.5], + ['L', 17.5, 31], + ['L', 18.366, 29.5], + ['L', 17.5, 29], + ['Z'], + ['M', 29, 14], + ['C', 29, 19.6811, 24.6924, 24.3575, 19.1658, 24.939], + ['L', 19.3751, 26.9281], + ['C', 25.9088, 26.2405, 31, 20.7155, 31, 14], + ['L', 29, 14], + ['Z'], + ['M', 18, 3], + ['C', 24.0751, 3, 29, 7.92487, 29, 14], + ['L', 31, 14], + ['C', 31, 6.8203, 25.1797, 1, 18, 1], + ['L', 18, 3], + ['Z'], + ['M', 7, 14], + ['C', 7, 7.92487, 11.9249, 3, 18, 3], + ['L', 18, 1], + ['C', 10.8203, 1, 5, 6.8203, 5, 14], + ['L', 7, 14], + ['Z'], + ['M', 15.8294, 24.7861], + ['C', 10.7937, 23.7788, 7, 19.3313, 7, 14], + ['L', 5, 14], + ['C', 5, 20.3032, 9.48488, 25.5566, 15.4371, 26.7472], + ['L', 15.8294, 24.7861], + ['Z'], + ['M', 14.7672, 26.2667], + ['L', 16.634, 29.5], + ['L', 18.366, 28.5], + ['L', 16.4993, 25.2667], + ['L', 14.7672, 26.2667], + ['Z'], + ['M', 18.366, 29.5], + ['L', 20.1364, 26.4335], + ['L', 18.4044, 25.4335], + ['L', 16.634, 28.5], + ['L', 18.366, 29.5], + ['Z'], + ], + }, + ], + }, + { + type: 'group', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -47.8008, + top: -13.4177, + width: 16, + height: 16, + fill: 'rgb(0,0,0)', + stroke: null, + strokeWidth: 0, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: '', + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + objects: [ + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -6.9333, + top: -6.6, + width: 12.6666, + height: 0, + fill: '', + stroke: '#52C41A', + strokeWidth: 1.2, + strokeDashArray: null, + strokeLineCap: 'round', + strokeDashOffset: 0, + strokeLineJoin: 'round', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 14.3334, 2], + ['L', 7.66675, 2], + ['L', 1.66675, 2], + ], + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -0.9332, + top: -6.6, + width: 0, + height: 5.6667, + fill: '', + stroke: '#52C41A', + strokeWidth: 1.2, + strokeDashArray: null, + strokeLineCap: 'round', + strokeDashOffset: 0, + strokeLineJoin: 'round', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 7.66675, 7.66667], + ['L', 7.66675, 2], + ], + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -6.9994, + top: -2.0727, + width: 11.833, + height: 7.0096, + fill: '#52C41A', + stroke: '#52C41A', + strokeWidth: 1.2, + strokeDashArray: null, + strokeLineCap: 'round', + strokeDashOffset: 0, + strokeLineJoin: 'round', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 2.80841, 6.52734], + ['L', 13.4336, 9.37438], + ['L', 12.8528, 10.254], + ['L', 11.5187, 12.6573], + ['L', 10.9379, 13.5369], + ['L', 1.60059, 11.035], + ['L', 2.80841, 6.52734], + ['Z'], + ], + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: 2.9186, + top: 1.6539, + width: 2.622, + height: 2.9209, + fill: '', + stroke: '#52C41A', + strokeWidth: 1.2, + strokeDashArray: null, + strokeLineCap: 'round', + strokeDashOffset: 0, + strokeLineJoin: 'round', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 12.8527, 10.2539], + ['L', 14.1406, 10.599], + ['L', 13.4504, 13.1748], + ['L', 11.5186, 12.6572], + ], + }, + { + type: 'circle', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -5, + top: 0, + width: 2.5, + height: 2.5, + fill: '', + stroke: 'white', + strokeWidth: 0.5, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + radius: 1.25, + startAngle: 0, + endAngle: 360, + selectable: true, + hasControls: true, + }, + ], + }, + { + type: 'textbox', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -19.6724, + top: -13.5967, + width: 400, + height: 90.4, + fill: 'rgb(0,0,0)', + stroke: null, + strokeWidth: 1, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 0.1932, + scaleY: 0.1932, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: '', + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + fontFamily: 'arial', + fontWeight: 'normal', + fontSize: 80, + text: '监控设备', + underline: false, + overline: false, + linethrough: false, + textAlign: 'left', + fontStyle: 'normal', + lineHeight: 1.16, + textBackgroundColor: '', + charSpacing: 0, + styles: [], + direction: 'ltr', + path: null, + pathStartOffset: 0, + pathSide: 'left', + pathAlign: 'baseline', + minWidth: 20, + splitByGrapheme: true, + selectable: true, + hasControls: false, + }, + ], + }, +]; + +const currJson0: Record = { + version: '5.3.0', + objects: [ + { + type: 'group', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: 247.0215, + top: 444.5797, + width: 115.6016, + height: 39, + fill: 'rgb(0,0,0)', + stroke: null, + strokeWidth: 0, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + id: 'b6ca8fad-c240-4659-9952-a90167699ce9', + selectable: false, + hasControls: true, + userProperty: { + modelId: '121', + status: '0', + id: '2', + label: '正常', + des: '卧室B', + + param1: '', + }, + objects: [ + { + type: 'group', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -57.8008, + top: -19.5, + width: 36, + height: 39, + fill: 'rgb(0,0,0)', + stroke: null, + strokeWidth: 0, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: '', + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + objects: [ + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -12.5, + top: -18, + width: 24, + height: 27, + fill: 'white', + stroke: null, + strokeWidth: 1, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'evenodd', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 19.2704, 25.9335], + ['C', 25.3006, 25.299, 30, 20.1983, 30, 14], + ['C', 30, 7.37258, 24.6274, 2, 18, 2], + ['C', 11.3726, 2, 6, 7.37258, 6, 14], + ['C', 6, 19.8172, 10.1393, 24.6677, 15.6332, 25.7667], + ['L', 17.5, 29], + ['L', 19.2704, 25.9335], + ['Z'], + ], + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -13.5, + top: -19, + width: 26, + height: 30, + fill: '#DCDCDC', + stroke: null, + strokeWidth: 1, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 19.2704, 25.9335], + ['L', 19.1658, 24.939], + ['L', 18.6591, 24.9924], + ['L', 18.4044, 25.4335], + ['L', 19.2704, 25.9335], + ['Z'], + ['M', 15.6332, 25.7667], + ['L', 16.4993, 25.2667], + ['L', 16.273, 24.8748], + ['L', 15.8294, 24.7861], + ['L', 15.6332, 25.7667], + ['Z'], + ['M', 17.5, 29], + ['L', 16.634, 29.5], + ['L', 17.5, 31], + ['L', 18.366, 29.5], + ['L', 17.5, 29], + ['Z'], + ['M', 29, 14], + ['C', 29, 19.6811, 24.6924, 24.3575, 19.1658, 24.939], + ['L', 19.3751, 26.9281], + ['C', 25.9088, 26.2405, 31, 20.7155, 31, 14], + ['L', 29, 14], + ['Z'], + ['M', 18, 3], + ['C', 24.0751, 3, 29, 7.92487, 29, 14], + ['L', 31, 14], + ['C', 31, 6.8203, 25.1797, 1, 18, 1], + ['L', 18, 3], + ['Z'], + ['M', 7, 14], + ['C', 7, 7.92487, 11.9249, 3, 18, 3], + ['L', 18, 1], + ['C', 10.8203, 1, 5, 6.8203, 5, 14], + ['L', 7, 14], + ['Z'], + ['M', 15.8294, 24.7861], + ['C', 10.7937, 23.7788, 7, 19.3313, 7, 14], + ['L', 5, 14], + ['C', 5, 20.3032, 9.48488, 25.5566, 15.4371, 26.7472], + ['L', 15.8294, 24.7861], + ['Z'], + ['M', 14.7672, 26.2667], + ['L', 16.634, 29.5], + ['L', 18.366, 28.5], + ['L', 16.4993, 25.2667], + ['L', 14.7672, 26.2667], + ['Z'], + ['M', 18.366, 29.5], + ['L', 20.1364, 26.4335], + ['L', 18.4044, 25.4335], + ['L', 16.634, 28.5], + ['L', 18.366, 29.5], + ['Z'], + ], + }, + ], + }, + { + type: 'group', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -47.8008, + top: -13.4177, + width: 16, + height: 16, + fill: 'rgb(0,0,0)', + stroke: null, + strokeWidth: 0, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: '', + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + objects: [ + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -6.9333, + top: -6.6, + width: 12.6666, + height: 0, + fill: '', + stroke: '#52C41A', + strokeWidth: 1.2, + strokeDashArray: null, + strokeLineCap: 'round', + strokeDashOffset: 0, + strokeLineJoin: 'round', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 14.3334, 2], + ['L', 7.66675, 2], + ['L', 1.66675, 2], + ], + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -0.9332, + top: -6.6, + width: 0, + height: 5.6667, + fill: '', + stroke: '#52C41A', + strokeWidth: 1.2, + strokeDashArray: null, + strokeLineCap: 'round', + strokeDashOffset: 0, + strokeLineJoin: 'round', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 7.66675, 7.66667], + ['L', 7.66675, 2], + ], + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -6.9994, + top: -2.0727, + width: 11.833, + height: 7.0096, + fill: '#52C41A', + stroke: '#52C41A', + strokeWidth: 1.2, + strokeDashArray: null, + strokeLineCap: 'round', + strokeDashOffset: 0, + strokeLineJoin: 'round', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 2.80841, 6.52734], + ['L', 13.4336, 9.37438], + ['L', 12.8528, 10.254], + ['L', 11.5187, 12.6573], + ['L', 10.9379, 13.5369], + ['L', 1.60059, 11.035], + ['L', 2.80841, 6.52734], + ['Z'], + ], + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: 2.9186, + top: 1.6539, + width: 2.622, + height: 2.9209, + fill: '', + stroke: '#52C41A', + strokeWidth: 1.2, + strokeDashArray: null, + strokeLineCap: 'round', + strokeDashOffset: 0, + strokeLineJoin: 'round', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 12.8527, 10.2539], + ['L', 14.1406, 10.599], + ['L', 13.4504, 13.1748], + ['L', 11.5186, 12.6572], + ], + }, + { + type: 'circle', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -5, + top: 0, + width: 2.5, + height: 2.5, + fill: '', + stroke: 'white', + strokeWidth: 0.5, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + radius: 1.25, + startAngle: 0, + endAngle: 360, + selectable: true, + hasControls: true, + }, + ], + }, + { + type: 'textbox', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -19.6724, + top: -13.5967, + width: 400, + height: 90.4, + fill: 'rgb(0,0,0)', + stroke: null, + strokeWidth: 1, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 0.1932, + scaleY: 0.1932, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: '', + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + fontFamily: 'arial', + fontWeight: 'normal', + fontSize: 80, + text: '监控设备', + underline: false, + overline: false, + linethrough: false, + textAlign: 'left', + fontStyle: 'normal', + lineHeight: 1.16, + textBackgroundColor: '', + charSpacing: 0, + styles: [], + direction: 'ltr', + path: null, + pathStartOffset: 0, + pathSide: 'left', + pathAlign: 'baseline', + minWidth: 20, + splitByGrapheme: true, + selectable: true, + hasControls: false, + }, + ], + }, + { + type: 'group', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: 778.0535, + top: 172.6152, + width: 48.205, + height: 48.205, + fill: 'rgb(0,0,0)', + stroke: null, + strokeWidth: 0, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + id: 'f772494d-01de-4a9e-b21d-67faed778e60', + selectable: false, + hasControls: true, + userProperty: { + modelId: '121', + status: '0', + id: '2', + label: '正常', + des: '卧室B', + }, + objects: [ + { + type: 'circle', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -24.1025, + top: -24.1025, + width: 300, + height: 300, + fill: 'rgba(44,246,72,0.99)', + stroke: 'rgba(45,240,230,1)', + strokeWidth: 10, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 0.1555, + scaleY: 0.1555, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: '', + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + radius: 150, + startAngle: 0, + endAngle: 360, + selectable: false, + hasControls: true, + }, + { + type: 'i-text', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -16.7824, + top: -8.9323, + width: 160, + height: 90.4, + fill: 'rgba(255,255,255,1)', + stroke: null, + strokeWidth: 1, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 0.1954, + scaleY: 0.1954, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: '', + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + fontFamily: 'arial', + fontWeight: 'normal', + fontSize: 80, + text: '正常', + underline: false, + overline: false, + linethrough: false, + textAlign: 'left', + fontStyle: 'normal', + lineHeight: 1.16, + textBackgroundColor: '', + charSpacing: 0, + styles: [], + direction: 'ltr', + path: null, + pathStartOffset: 0, + pathSide: 'left', + pathAlign: 'baseline', + selectable: false, + hasControls: true, + }, + ], + }, + { + type: 'group', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: 384.136, + top: 153.6373, + width: 48.205, + height: 48.205, + fill: 'rgb(0,0,0)', + stroke: null, + strokeWidth: 0, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + id: '3fea9335-b7a3-4b01-bf7b-7d15b4ca6b62', + selectable: false, + hasControls: true, + userProperty: { + modelId: '120', + status: '1', + id: '1', + label: '异常', + des: '卧室A', + }, + objects: [ + { + type: 'circle', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -24.1025, + top: -24.1025, + width: 300, + height: 300, + fill: 'rgba(248,9,3,0.94)', + stroke: 'rgba(255,243,47,1)', + strokeWidth: 10, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 0.1555, + scaleY: 0.1555, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: '', + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + radius: 150, + startAngle: 0, + endAngle: 360, + selectable: false, + hasControls: true, + }, + { + type: 'i-text', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -15.8708, + top: -8.9298, + width: 160, + height: 90.4, + fill: 'rgba(255,255,255,1)', + stroke: null, + strokeWidth: 1, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 0.1954, + scaleY: 0.1954, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: '', + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + fontFamily: 'arial', + fontWeight: 'normal', + fontSize: 80, + text: '警告', + underline: false, + overline: false, + linethrough: false, + textAlign: 'left', + fontStyle: 'normal', + lineHeight: 1.16, + textBackgroundColor: '', + charSpacing: 0, + styles: [], + direction: 'ltr', + path: null, + pathStartOffset: 0, + pathSide: 'left', + pathAlign: 'baseline', + selectable: false, + hasControls: true, + }, + ], + }, + { + type: 'group', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: 409.6953, + top: 437.8391, + width: 48.205, + height: 48.205, + fill: 'rgb(0,0,0)', + stroke: null, + strokeWidth: 0, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + id: '16c614ab-6172-4d06-b787-75e8ddc33c68', + selectable: false, + hasControls: true, + userProperty: { + modelId: '122', + status: '0', + id: '3', + label: '正常', + des: '客厅1', + }, + objects: [ + { + type: 'circle', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -24.1025, + top: -24.1025, + width: 300, + height: 300, + fill: 'rgba(44,246,72,0.99)', + stroke: 'rgba(45,240,230,1)', + strokeWidth: 10, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 0.1555, + scaleY: 0.1555, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: '', + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + radius: 150, + startAngle: 0, + endAngle: 360, + selectable: false, + hasControls: true, + }, + { + type: 'i-text', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -16.7824, + top: -8.9323, + width: 160, + height: 90.4, + fill: 'rgba(255,255,255,1)', + stroke: null, + strokeWidth: 1, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 0.1954, + scaleY: 0.1954, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: '', + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + fontFamily: 'arial', + fontWeight: 'normal', + fontSize: 80, + text: '正常', + underline: false, + overline: false, + linethrough: false, + textAlign: 'left', + fontStyle: 'normal', + lineHeight: 1.16, + textBackgroundColor: '', + charSpacing: 0, + styles: [], + direction: 'ltr', + path: null, + pathStartOffset: 0, + pathSide: 'left', + pathAlign: 'baseline', + selectable: false, + hasControls: true, + }, + ], + }, + { + type: 'group', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: 384.136, + top: 706.1746, + width: 48.205, + height: 48.205, + fill: 'rgb(0,0,0)', + stroke: null, + strokeWidth: 0, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + id: '6217576c-4b4a-4916-948a-e99fe9f03bbc', + selectable: false, + hasControls: true, + userProperty: { + modelId: '124', + status: '1', + id: '4', + label: '异常', + des: '卧室C', + }, + objects: [ + { + type: 'circle', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -24.1025, + top: -24.1025, + width: 300, + height: 300, + fill: 'rgba(248,9,3,0.94)', + stroke: 'rgba(255,243,47,1)', + strokeWidth: 10, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 0.1555, + scaleY: 0.1555, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: '', + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + radius: 150, + startAngle: 0, + endAngle: 360, + selectable: false, + hasControls: true, + }, + { + type: 'i-text', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -15.8708, + top: -8.9298, + width: 160, + height: 90.4, + fill: 'rgba(255,255,255,1)', + stroke: null, + strokeWidth: 1, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 0.1954, + scaleY: 0.1954, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: '', + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + fontFamily: 'arial', + fontWeight: 'normal', + fontSize: 80, + text: '警告', + underline: false, + overline: false, + linethrough: false, + textAlign: 'left', + fontStyle: 'normal', + lineHeight: 1.16, + textBackgroundColor: '', + charSpacing: 0, + styles: [], + direction: 'ltr', + path: null, + pathStartOffset: 0, + pathSide: 'left', + pathAlign: 'baseline', + selectable: false, + hasControls: true, + }, + ], + }, + ], + clipPath: { + type: 'rect', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: 0, + top: 0, + width: 1200, + height: 900, + fill: 'rgba(255,255,255,1)', + stroke: null, + strokeWidth: 0, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + rx: 0, + ry: 0, + selectable: false, + hasControls: true, + }, +}; +let currJson00: Record = { + ...currJson0, + // objects: [], +}; + +// 生成100到1100之间的随机整数 +// function generateRandomNumber(minNum, maxNum) { +// // 生成0到1之间的随机小数 +// const randomFraction = Math.random(); + +// // 将随机小数映射到100到1100之间的范围 +// const randomNumber = Math.floor(randomFraction * (maxNum - minNum + 1) + minNum); + +// return randomNumber; +// } +// let startTime = new Date().getTime() +// let endTime = new Date().getTime() + +// for (let i = 0; i < 2; i++) { +// let currObjects = JSON.parse(JSON.stringify(currJson0.objects)) +// currObjects = currObjects.map(item=>{ +// item.left = generateRandomNumber(100, 1100) +// item.top = generateRandomNumber(100, 800) +// return item +// }) +// currJson00.objects = currJson00.objects.concat(currObjects) +// } +// endTime = new Date().getTime() +// console.log(currJson00,'currJson00', endTime-startTime) + +export const currJson1 = currJson00; + +export const modelGroups = modelGroup diff --git a/src/testData/fabricRoomList.ts b/src/testData/fabricRoomList.ts new file mode 100644 index 0000000..8599a08 --- /dev/null +++ b/src/testData/fabricRoomList.ts @@ -0,0 +1,176 @@ +/* + * @Author: zhoux zhouxia@supervision.ltd + * @Date: 2023-12-12 15:41:56 + * @LastEditors: zhoux zhouxia@supervision.ltd + * @LastEditTime: 2024-01-08 09:47:19 + * @FilePath: \general-ai-platform-web\src\testData\fabricRoomList.ts + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ + +import { fetchWatchGroupObjects } from './fabricWatchIcons'; +// 模型状态 在线 离线 告警 故障 +const startData: Record = { + modelsList: [ + { + deviceType: '1', // 模型类型 1 设备1 2 设备2 + id: '1001', // 模型id + status: 'watchOnline', // + deviceName: '监控设备1', // 模型名称 + deviceCode: 'code1002', + deviceLocation: '客厅', + deviceParams: '设备参数', + deviceCategory: '控制器', + diviceGroup: '组1', + baseInfo: { + left: 527.0215, // 相对x + top: 24.5797, // 相对y + }, + }, + { + deviceType: '1', // 模型类型 1 设备1 2 设备2 + id: '1002', // 模型id + status: 'watchError', // 模型状态 在线 离线 告警 故障 + deviceName: '监控设备2', // 模型名称 + deviceCode: 'code1001', + deviceLocation: '客厅', + deviceParams: '设备参数', + deviceCategory: '控制器', + diviceGroup: '组1', + baseInfo: { + left: 397.0215, // 相对x + top: 444.5797, // 相对y + }, + }, + { + deviceType: '1', // 模型类型 1 设备1 2 设备2 + id: '1003', // 模型id + status: 'watchOutline', // 模型状态 在线 离线 告警 故障 + deviceName: '监控设备2', // 模型名称 + deviceCode: 'code1001', + deviceLocation: '客厅', + deviceParams: '设备参数', + deviceCategory: '控制器', + diviceGroup: '组1', + baseInfo: { + left: 397.0215, // 相对x + top: 144.5797, // 相对y + }, + }, + { + deviceType: '1', // 模型类型 1 设备1 2 设备2 + id: '1004', // 模型id + status: 'watchOutline', // 模型状态 在线 离线 告警 故障 + deviceName: '监控设备2', // 模型名称 + deviceCode: 'code1001', + deviceLocation: '客厅', + deviceParams: '设备参数', + deviceCategory: '控制器', + diviceGroup: '组1', + baseInfo: { + left: 297.0215, // 相对x + top: 644.5797, // 相对y + }, + }, + { + deviceType: '1', // 模型类型 1 设备1 2 设备2 + id: '1005', // 模型id + status: 'watchWarn', // 模型状态 在线 离线 告警 故障 + deviceName: '监控设备2', // 模型名称 + deviceCode: 'code1001', + deviceLocation: '客厅', + deviceParams: '设备参数', + deviceCategory: '控制器', + diviceGroup: '组1', + baseInfo: { + left: 797.0215, // 相对x + top: 844.5797, // 相对y + }, + }, + ], +}; + +// 生成100到1100之间的随机整数 +function generateRandomNumber(minNum, maxNum) { + // 生成0到1之间的随机小数 + const randomFraction = Math.random(); + + // 将随机小数映射到100到1100之间的范围 + const randomNumber = Math.floor(randomFraction * (maxNum - minNum + 1) + minNum); + + return randomNumber; +} + +function initFabricRoomData() { + for (let i = 0; i < 2; i++) { + let currObjects = JSON.parse(JSON.stringify(startData.modelsList)); + currObjects = currObjects.map((item) => { + item.baseInfo = { + left: generateRandomNumber(100, 1100), + top: generateRandomNumber(100, 800), + }; + return item; + }); + startData.modelsList = startData.modelsList.concat(currObjects); + } + + +} +initFabricRoomData(); + +const fabricRoomListData: Record[] = []; +startData.modelsList.forEach((item: Record) => { + const { baseInfo, ...restInfo } = item; + fabricRoomListData.push( + JSON.parse( + JSON.stringify({ + ...fetchWatchGroupObjects(item), + ...baseInfo, + userProperty: item, + selectable: false, + }), + ), + ); +}); + + +export const currJson = { + version: '5.3.0', + objects: fabricRoomListData, + clipPath: { + type: 'rect', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: 0, + top: 0, + width: 1200, + height: 900, + fill: 'rgba(255,255,255,1)', + stroke: null, + strokeWidth: 0, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + rx: 0, + ry: 0, + selectable: false, + hasControls: true, + }, +}; diff --git a/src/testData/fabricRoomSvg.ts b/src/testData/fabricRoomSvg.ts new file mode 100644 index 0000000..0fa87a9 --- /dev/null +++ b/src/testData/fabricRoomSvg.ts @@ -0,0 +1,49 @@ +/* + * @Author: zhoux zhouxia@supervision.ltd + * @Date: 2023-12-12 14:11:22 + * @LastEditors: zhoux zhouxia@supervision.ltd + * @LastEditTime: 2023-12-15 18:00:38 + * @FilePath: \general-ai-platform-web\src\testData\fabricRoomSvg.ts + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +export const bgImageData = { + type: 'image', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: 1.531, + top: 0, + width: 1600, + height: 1200, + fill: 'rgb(0,0,0)', + stroke: null, + strokeWidth: 0, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + cropX: 0, + cropY: 0, + id: 'a3fccbda-f75a-4c52-9fc0-98a2dde189b9', + selectable: true, + hasControls: true, + src: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABkAAAASwCAIAAAAsYxHAAAAACXBIWXMAAAsTAAALEwEAmpwYAAAJp2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDYgNzkuMTY0NzUzLCAyMDIxLzAyLzE1LTExOjUyOjEzICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjIuMyAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIzLTExLTI5VDE2OjI0OjExKzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIzLTEyLTE1VDE3OjA0OjM2KzA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMy0xMi0xNVQxNzowNDozNiswODowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Yjg1YmI1YmMtN2QxNS04MjQwLTgxMWMtOWYyY2UyYmIyNDgxIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6NmMyM2FhM2EtOWJhMC1lNDRmLWI1N2MtZTVmMTEzOTBmMmVlIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6Y2UzN2E5MmEtNWMzMC0zMTRkLTlmN2EtMGNhNzQxYTczMjQ3IiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB0aWZmOk9yaWVudGF0aW9uPSIxIiB0aWZmOlhSZXNvbHV0aW9uPSI3MjAwMDAvMTAwMDAiIHRpZmY6WVJlc29sdXRpb249IjcyMDAwMC8xMDAwMCIgdGlmZjpSZXNvbHV0aW9uVW5pdD0iMiIgZXhpZjpDb2xvclNwYWNlPSI2NTUzNSIgZXhpZjpQaXhlbFhEaW1lbnNpb249IjEyMDAiIGV4aWY6UGl4ZWxZRGltZW5zaW9uPSI5MDAiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmNlMzdhOTJhLTVjMzAtMzE0ZC05ZjdhLTBjYTc0MWE3MzI0NyIgc3RFdnQ6d2hlbj0iMjAyMy0xMS0yOVQxNjoyNDoxMSswODowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIyLjMgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiNDI0ZDA2NC03OTJhLWE1NDUtYTc4Ny0yZDVlMGNiNjY0MmMiIHN0RXZ0OndoZW49IjIwMjMtMTItMTVUMTc6MDQ6MzYrMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMi4zIChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY29udmVydGVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJmcm9tIGFwcGxpY2F0aW9uL3ZuZC5hZG9iZS5waG90b3Nob3AgdG8gaW1hZ2UvcG5nIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJkZXJpdmVkIiBzdEV2dDpwYXJhbWV0ZXJzPSJjb252ZXJ0ZWQgZnJvbSBhcHBsaWNhdGlvbi92bmQuYWRvYmUucGhvdG9zaG9wIHRvIGltYWdlL3BuZyIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6Yjg1YmI1YmMtN2QxNS04MjQwLTgxMWMtOWYyY2UyYmIyNDgxIiBzdEV2dDp3aGVuPSIyMDIzLTEyLTE1VDE3OjA0OjM2KzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjIuMyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOmI0MjRkMDY0LTc5MmEtYTU0NS1hNzg3LTJkNWUwY2I2NjQyYyIgc3RSZWY6ZG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmJhODg2OGNkLTI2NjctZTc0My05OGI2LTkxZTQyOWE1ZDRjOSIgc3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOmNlMzdhOTJhLTVjMzAtMzE0ZC05ZjdhLTBjYTc0MWE3MzI0NyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PisvV2AAArRZSURBVHic7L3Xcx1Net8/4eSccHBwkHMgAZIvw/sud99XK61Xkm1pa61UtsvlctnlO1fZV/4HXOVbX/jC5Vvb5aCy9JNUK+3WJr05MLwEQSJnEBkHODlN/F200G7OzBkcBJIg8f1coAYzPd094XRPf/t5nuZ1XecAAAAAAAAAAAAAALisCG+6AgAAAAAAAAAAAAAA2AEBCwAAAAAAAAAA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', + crossOrigin: null, + filters: [], +}; diff --git a/src/testData/fabricWatchIcons.ts b/src/testData/fabricWatchIcons.ts new file mode 100644 index 0000000..2322ac6 --- /dev/null +++ b/src/testData/fabricWatchIcons.ts @@ -0,0 +1,2264 @@ +// export const watchIcon1: Record[] = [ +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -60, +// top: -31.5, +// width: 119, +// height: 54, +// fill: 'white', +// stroke: null, +// strokeWidth: 1, +// strokeDashArray: null, +// strokeLineCap: 'butt', +// strokeDashOffset: 0, +// strokeLineJoin: 'miter', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'evenodd', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 10, 2], +// ['C', 7.79086, 2, 6, 3.79086, 6, 6], +// ['L', 6, 44], +// ['C', 6, 46.2091, 7.79086, 48, 10, 48], +// ['L', 58.8, 48], +// ['L', 66, 56], +// ['L', 73.2, 48], +// ['L', 121, 48], +// ['C', 123.209, 48, 125, 46.2091, 125, 44], +// ['L', 125, 6], +// ['C', 125, 3.79086, 123.209, 2, 121, 2], +// ['L', 10, 2], +// ['Z'], +// ], +// }, +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -61, +// top: -32.5, +// width: 121, +// height: 56.4948, +// fill: 'rgba(21,77,221,0.2)', +// stroke: null, +// strokeWidth: 1, +// strokeDashArray: null, +// strokeLineCap: 'butt', +// strokeDashOffset: 0, +// strokeLineJoin: 'miter', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 58.8, 48], +// ['L', 59.5433, 47.331], +// ['L', 59.2454, 47], +// ['L', 58.8, 47], +// ['L', 58.8, 48], +// ['Z'], +// ['M', 66, 56], +// ['L', 65.2567, 56.669], +// ['L', 66, 57.4948], +// ['L', 66.7433, 56.669], +// ['L', 66, 56], +// ['Z'], +// ['M', 73.2, 48], +// ['L', 73.2, 47], +// ['L', 72.7546, 47], +// ['L', 72.4567, 47.331], +// ['L', 73.2, 48], +// ['Z'], +// ['M', 7, 6], +// ['C', 7, 4.34315, 8.34315, 3, 10, 3], +// ['L', 10, 1], +// ['C', 7.23858, 1, 5, 3.23857, 5, 6], +// ['L', 7, 6], +// ['Z'], +// ['M', 7, 44], +// ['L', 7, 6], +// ['L', 5, 6], +// ['L', 5, 44], +// ['L', 7, 44], +// ['Z'], +// ['M', 10, 47], +// ['C', 8.34315, 47, 7, 45.6569, 7, 44], +// ['L', 5, 44], +// ['C', 5, 46.7614, 7.23858, 49, 10, 49], +// ['L', 10, 47], +// ['Z'], +// ['M', 58.8, 47], +// ['L', 10, 47], +// ['L', 10, 49], +// ['L', 58.8, 49], +// ['L', 58.8, 47], +// ['Z'], +// ['M', 58.0567, 48.669], +// ['L', 65.2567, 56.669], +// ['L', 66.7433, 55.331], +// ['L', 59.5433, 47.331], +// ['L', 58.0567, 48.669], +// ['Z'], +// ['M', 66.7433, 56.669], +// ['L', 73.9433, 48.669], +// ['L', 72.4567, 47.331], +// ['L', 65.2567, 55.331], +// ['L', 66.7433, 56.669], +// ['Z'], +// ['M', 121, 47], +// ['L', 73.2, 47], +// ['L', 73.2, 49], +// ['L', 121, 49], +// ['L', 121, 47], +// ['Z'], +// ['M', 124, 44], +// ['C', 124, 45.6569, 122.657, 47, 121, 47], +// ['L', 121, 49], +// ['C', 123.761, 49, 126, 46.7614, 126, 44], +// ['L', 124, 44], +// ['Z'], +// ['M', 124, 6], +// ['L', 124, 44], +// ['L', 126, 44], +// ['L', 126, 6], +// ['L', 124, 6], +// ['Z'], +// ['M', 121, 3], +// ['C', 122.657, 3, 124, 4.34315, 124, 6], +// ['L', 126, 6], +// ['C', 126, 3.23858, 123.761, 1, 121, 1], +// ['L', 121, 3], +// ['Z'], +// ['M', 10, 3], +// ['L', 121, 3], +// ['L', 121, 1], +// ['L', 10, 1], +// ['L', 10, 3], +// ['Z'], +// ], +// }, +// { +// type: 'rect', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -52, +// top: -24.5, +// width: 32, +// height: 32, +// fill: '#E80D0D', +// stroke: null, +// strokeWidth: 1, +// strokeDashArray: null, +// strokeLineCap: 'butt', +// strokeDashOffset: 0, +// strokeLineJoin: 'miter', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// rx: 2, +// ry: 2, +// selectable: true, +// hasControls: true, +// }, +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -45.9945, +// top: -17.6, +// width: 19.8963, +// height: 0, +// fill: '', +// stroke: 'white', +// strokeWidth: 1.2, +// strokeDashArray: null, +// strokeLineCap: 'round', +// strokeDashOffset: 0, +// strokeLineJoin: 'round', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 40.0018, 16], +// ['L', 29.5301, 16], +// ['L', 20.1055, 16], +// ], +// }, +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -36.5727, +// top: -17.6, +// width: 0, +// height: 8.8419, +// fill: '', +// stroke: 'white', +// strokeWidth: 1.2, +// strokeDashArray: null, +// strokeLineCap: 'round', +// strokeDashOffset: 0, +// strokeLineJoin: 'round', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 29.5273, 24.8419], +// ['L', 29.5273, 16], +// ], +// }, +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -46.1, +// top: -10.5375, +// width: 18.5869, +// height: 10.9372, +// fill: 'white', +// stroke: 'white', +// strokeWidth: 1.2, +// strokeDashArray: null, +// strokeLineCap: 'round', +// strokeDashOffset: 0, +// strokeLineJoin: 'round', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 21.8972, 23.0625], +// ['L', 38.5869, 27.5048], +// ['L', 37.6746, 28.8773], +// ['L', 35.579, 32.6272], +// ['L', 34.6667, 33.9997], +// ['L', 20, 30.0959], +// ['L', 21.8972, 23.0625], +// ['Z'], +// ], +// }, +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -30.5219, +// top: -4.7211, +// width: 4.1186, +// height: 4.5576, +// fill: '', +// stroke: 'white', +// strokeWidth: 1.2, +// strokeDashArray: null, +// strokeLineCap: 'round', +// strokeDashOffset: 0, +// strokeLineJoin: 'round', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 37.6737, 28.8789], +// ['L', 39.6967, 29.4174], +// ['L', 38.6126, 33.4365], +// ['L', 35.5781, 32.6288], +// ], +// }, +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -43.3008, +// top: -7.6387, +// width: 4.2123, +// height: 4.181, +// fill: '', +// stroke: '#E80D0D', +// strokeWidth: 0.5, +// strokeDashArray: null, +// strokeLineCap: 'butt', +// strokeDashOffset: 0, +// strokeLineJoin: 'miter', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 26.6615, 27.7018], +// ['C', 26.6615, 28.8548, 25.7201, 29.7923, 24.5554, 29.7923], +// ['C', 23.3906, 29.7923, 22.4492, 28.8548, 22.4492, 27.7018], +// ['C', 22.4492, 26.5488, 23.3906, 25.6113, 24.5554, 25.6113], +// ['C', 25.7201, 25.6113, 26.6615, 26.5488, 26.6615, 27.7018], +// ['Z'], +// ], +// }, +// ]; +// export const watchIcon2: Record[] = [ +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -60, +// top: -31.5, +// width: 119, +// height: 54, +// fill: 'white', +// stroke: null, +// strokeWidth: 1, +// strokeDashArray: null, +// strokeLineCap: 'butt', +// strokeDashOffset: 0, +// strokeLineJoin: 'miter', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'evenodd', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 10, 2], +// ['C', 7.79086, 2, 6, 3.79086, 6, 6], +// ['L', 6, 44], +// ['C', 6, 46.2091, 7.79086, 48, 10, 48], +// ['L', 58.8, 48], +// ['L', 66, 56], +// ['L', 73.2, 48], +// ['L', 121, 48], +// ['C', 123.209, 48, 125, 46.2091, 125, 44], +// ['L', 125, 6], +// ['C', 125, 3.79086, 123.209, 2, 121, 2], +// ['L', 10, 2], +// ['Z'], +// ], +// }, +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -61, +// top: -32.5, +// width: 121, +// height: 56.4948, +// fill: 'rgba(21,77,221,0.2)', +// stroke: null, +// strokeWidth: 1, +// strokeDashArray: null, +// strokeLineCap: 'butt', +// strokeDashOffset: 0, +// strokeLineJoin: 'miter', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 58.8, 48], +// ['L', 59.5433, 47.331], +// ['L', 59.2454, 47], +// ['L', 58.8, 47], +// ['L', 58.8, 48], +// ['Z'], +// ['M', 66, 56], +// ['L', 65.2567, 56.669], +// ['L', 66, 57.4948], +// ['L', 66.7433, 56.669], +// ['L', 66, 56], +// ['Z'], +// ['M', 73.2, 48], +// ['L', 73.2, 47], +// ['L', 72.7546, 47], +// ['L', 72.4567, 47.331], +// ['L', 73.2, 48], +// ['Z'], +// ['M', 7, 6], +// ['C', 7, 4.34315, 8.34315, 3, 10, 3], +// ['L', 10, 1], +// ['C', 7.23858, 1, 5, 3.23857, 5, 6], +// ['L', 7, 6], +// ['Z'], +// ['M', 7, 44], +// ['L', 7, 6], +// ['L', 5, 6], +// ['L', 5, 44], +// ['L', 7, 44], +// ['Z'], +// ['M', 10, 47], +// ['C', 8.34315, 47, 7, 45.6569, 7, 44], +// ['L', 5, 44], +// ['C', 5, 46.7614, 7.23858, 49, 10, 49], +// ['L', 10, 47], +// ['Z'], +// ['M', 58.8, 47], +// ['L', 10, 47], +// ['L', 10, 49], +// ['L', 58.8, 49], +// ['L', 58.8, 47], +// ['Z'], +// ['M', 58.0567, 48.669], +// ['L', 65.2567, 56.669], +// ['L', 66.7433, 55.331], +// ['L', 59.5433, 47.331], +// ['L', 58.0567, 48.669], +// ['Z'], +// ['M', 66.7433, 56.669], +// ['L', 73.9433, 48.669], +// ['L', 72.4567, 47.331], +// ['L', 65.2567, 55.331], +// ['L', 66.7433, 56.669], +// ['Z'], +// ['M', 121, 47], +// ['L', 73.2, 47], +// ['L', 73.2, 49], +// ['L', 121, 49], +// ['L', 121, 47], +// ['Z'], +// ['M', 124, 44], +// ['C', 124, 45.6569, 122.657, 47, 121, 47], +// ['L', 121, 49], +// ['C', 123.761, 49, 126, 46.7614, 126, 44], +// ['L', 124, 44], +// ['Z'], +// ['M', 124, 6], +// ['L', 124, 44], +// ['L', 126, 44], +// ['L', 126, 6], +// ['L', 124, 6], +// ['Z'], +// ['M', 121, 3], +// ['C', 122.657, 3, 124, 4.34315, 124, 6], +// ['L', 126, 6], +// ['C', 126, 3.23858, 123.761, 1, 121, 1], +// ['L', 121, 3], +// ['Z'], +// ['M', 10, 3], +// ['L', 121, 3], +// ['L', 121, 1], +// ['L', 10, 1], +// ['L', 10, 3], +// ['Z'], +// ], +// }, +// { +// type: 'rect', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -52, +// top: -24.5, +// width: 32, +// height: 32, +// fill: '#52C41A', +// stroke: null, +// strokeWidth: 1, +// strokeDashArray: null, +// strokeLineCap: 'butt', +// strokeDashOffset: 0, +// strokeLineJoin: 'miter', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// rx: 2, +// ry: 2, +// selectable: true, +// hasControls: true, +// }, +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -45.9945, +// top: -17.6, +// width: 19.8963, +// height: 0, +// fill: '', +// stroke: 'white', +// strokeWidth: 1.2, +// strokeDashArray: null, +// strokeLineCap: 'round', +// strokeDashOffset: 0, +// strokeLineJoin: 'round', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 40.0018, 16], +// ['L', 29.5301, 16], +// ['L', 20.1055, 16], +// ], +// }, +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -36.5727, +// top: -17.6, +// width: 0, +// height: 8.8419, +// fill: '', +// stroke: 'white', +// strokeWidth: 1.2, +// strokeDashArray: null, +// strokeLineCap: 'round', +// strokeDashOffset: 0, +// strokeLineJoin: 'round', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 29.5273, 24.8419], +// ['L', 29.5273, 16], +// ], +// }, +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -46.1, +// top: -10.5375, +// width: 18.5869, +// height: 10.9372, +// fill: 'white', +// stroke: 'white', +// strokeWidth: 1.2, +// strokeDashArray: null, +// strokeLineCap: 'round', +// strokeDashOffset: 0, +// strokeLineJoin: 'round', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 21.8972, 23.0625], +// ['L', 38.5869, 27.5048], +// ['L', 37.6746, 28.8773], +// ['L', 35.579, 32.6272], +// ['L', 34.6667, 33.9997], +// ['L', 20, 30.0959], +// ['L', 21.8972, 23.0625], +// ['Z'], +// ], +// }, +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -30.5219, +// top: -4.7211, +// width: 4.1186, +// height: 4.5576, +// fill: '', +// stroke: 'white', +// strokeWidth: 1.2, +// strokeDashArray: null, +// strokeLineCap: 'round', +// strokeDashOffset: 0, +// strokeLineJoin: 'round', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 37.6737, 28.8789], +// ['L', 39.6967, 29.4174], +// ['L', 38.6126, 33.4365], +// ['L', 35.5781, 32.6288], +// ], +// }, +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -43.3008, +// top: -7.6387, +// width: 4.2123, +// height: 4.181, +// fill: '', +// stroke: '#52C41A', +// strokeWidth: 0.5, +// strokeDashArray: null, +// strokeLineCap: 'butt', +// strokeDashOffset: 0, +// strokeLineJoin: 'miter', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 26.6615, 27.7018], +// ['C', 26.6615, 28.8548, 25.7201, 29.7923, 24.5554, 29.7923], +// ['C', 23.3906, 29.7923, 22.4492, 28.8548, 22.4492, 27.7018], +// ['C', 22.4492, 26.5488, 23.3906, 25.6113, 24.5554, 25.6113], +// ['C', 25.7201, 25.6113, 26.6615, 26.5488, 26.6615, 27.7018], +// ['Z'], +// ], +// }, +// ]; +export const watchIcon3: Record[] = [ + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -60, + top: -31.5, + width: 119, + height: 54, + fill: 'white', + stroke: null, + strokeWidth: 1, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'evenodd', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 10, 2], + ['C', 7.79086, 2, 6, 3.79086, 6, 6], + ['L', 6, 44], + ['C', 6, 46.2091, 7.79086, 48, 10, 48], + ['L', 58.8, 48], + ['L', 66, 56], + ['L', 73.2, 48], + ['L', 121, 48], + ['C', 123.209, 48, 125, 46.2091, 125, 44], + ['L', 125, 6], + ['C', 125, 3.79086, 123.209, 2, 121, 2], + ['L', 10, 2], + ['Z'], + ], + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -61, + top: -32.5, + width: 121, + height: 56.4948, + fill: 'rgba(21,77,221,0.2)', + stroke: null, + strokeWidth: 1, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 58.8, 48], + ['L', 59.5433, 47.331], + ['L', 59.2454, 47], + ['L', 58.8, 47], + ['L', 58.8, 48], + ['Z'], + ['M', 66, 56], + ['L', 65.2567, 56.669], + ['L', 66, 57.4948], + ['L', 66.7433, 56.669], + ['L', 66, 56], + ['Z'], + ['M', 73.2, 48], + ['L', 73.2, 47], + ['L', 72.7546, 47], + ['L', 72.4567, 47.331], + ['L', 73.2, 48], + ['Z'], + ['M', 7, 6], + ['C', 7, 4.34315, 8.34315, 3, 10, 3], + ['L', 10, 1], + ['C', 7.23858, 1, 5, 3.23857, 5, 6], + ['L', 7, 6], + ['Z'], + ['M', 7, 44], + ['L', 7, 6], + ['L', 5, 6], + ['L', 5, 44], + ['L', 7, 44], + ['Z'], + ['M', 10, 47], + ['C', 8.34315, 47, 7, 45.6569, 7, 44], + ['L', 5, 44], + ['C', 5, 46.7614, 7.23858, 49, 10, 49], + ['L', 10, 47], + ['Z'], + ['M', 58.8, 47], + ['L', 10, 47], + ['L', 10, 49], + ['L', 58.8, 49], + ['L', 58.8, 47], + ['Z'], + ['M', 58.0567, 48.669], + ['L', 65.2567, 56.669], + ['L', 66.7433, 55.331], + ['L', 59.5433, 47.331], + ['L', 58.0567, 48.669], + ['Z'], + ['M', 66.7433, 56.669], + ['L', 73.9433, 48.669], + ['L', 72.4567, 47.331], + ['L', 65.2567, 55.331], + ['L', 66.7433, 56.669], + ['Z'], + ['M', 121, 47], + ['L', 73.2, 47], + ['L', 73.2, 49], + ['L', 121, 49], + ['L', 121, 47], + ['Z'], + ['M', 124, 44], + ['C', 124, 45.6569, 122.657, 47, 121, 47], + ['L', 121, 49], + ['C', 123.761, 49, 126, 46.7614, 126, 44], + ['L', 124, 44], + ['Z'], + ['M', 124, 6], + ['L', 124, 44], + ['L', 126, 44], + ['L', 126, 6], + ['L', 124, 6], + ['Z'], + ['M', 121, 3], + ['C', 122.657, 3, 124, 4.34315, 124, 6], + ['L', 126, 6], + ['C', 126, 3.23858, 123.761, 1, 121, 1], + ['L', 121, 3], + ['Z'], + ['M', 10, 3], + ['L', 121, 3], + ['L', 121, 1], + ['L', 10, 1], + ['L', 10, 3], + ['Z'], + ], + }, + { + type: 'rect', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -52, + top: -24.5, + width: 32, + height: 32, + fill: '#CCCCCC', + stroke: null, + strokeWidth: 1, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + rx: 2, + ry: 2, + selectable: true, + hasControls: true, + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -45.9945, + top: -17.6, + width: 19.8963, + height: 0, + fill: '', + stroke: 'white', + strokeWidth: 1.2, + strokeDashArray: null, + strokeLineCap: 'round', + strokeDashOffset: 0, + strokeLineJoin: 'round', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 40.0018, 16], + ['L', 29.5301, 16], + ['L', 20.1055, 16], + ], + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -36.5727, + top: -17.6, + width: 0, + height: 8.8419, + fill: '', + stroke: 'white', + strokeWidth: 1.2, + strokeDashArray: null, + strokeLineCap: 'round', + strokeDashOffset: 0, + strokeLineJoin: 'round', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 29.5273, 24.8419], + ['L', 29.5273, 16], + ], + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -46.1, + top: -10.5375, + width: 18.5869, + height: 10.9372, + fill: 'white', + stroke: 'white', + strokeWidth: 1.2, + strokeDashArray: null, + strokeLineCap: 'round', + strokeDashOffset: 0, + strokeLineJoin: 'round', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 21.8972, 23.0625], + ['L', 38.5869, 27.5048], + ['L', 37.6746, 28.8773], + ['L', 35.579, 32.6272], + ['L', 34.6667, 33.9997], + ['L', 20, 30.0959], + ['L', 21.8972, 23.0625], + ['Z'], + ], + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -30.5219, + top: -4.7211, + width: 4.1186, + height: 4.5576, + fill: '', + stroke: 'white', + strokeWidth: 1.2, + strokeDashArray: null, + strokeLineCap: 'round', + strokeDashOffset: 0, + strokeLineJoin: 'round', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 37.6737, 28.8789], + ['L', 39.6967, 29.4174], + ['L', 38.6126, 33.4365], + ['L', 35.5781, 32.6288], + ], + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -43.3008, + top: -7.6387, + width: 4.2123, + height: 4.181, + fill: '', + stroke: '#CCCCCC', + strokeWidth: 0.5, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 26.6615, 27.7018], + ['C', 26.6615, 28.8548, 25.7201, 29.7923, 24.5554, 29.7923], + ['C', 23.3906, 29.7923, 22.4492, 28.8548, 22.4492, 27.7018], + ['C', 22.4492, 26.5488, 23.3906, 25.6113, 24.5554, 25.6113], + ['C', 25.7201, 25.6113, 26.6615, 26.5488, 26.6615, 27.7018], + ['Z'], + ], + }, +]; +// export const watchIcon4: Record[] = [ +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -60, +// top: -31.5, +// width: 119, +// height: 54, +// fill: 'white', +// stroke: null, +// strokeWidth: 1, +// strokeDashArray: null, +// strokeLineCap: 'butt', +// strokeDashOffset: 0, +// strokeLineJoin: 'miter', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'evenodd', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 10, 2], +// ['C', 7.79086, 2, 6, 3.79086, 6, 6], +// ['L', 6, 44], +// ['C', 6, 46.2091, 7.79086, 48, 10, 48], +// ['L', 58.8, 48], +// ['L', 66, 56], +// ['L', 73.2, 48], +// ['L', 121, 48], +// ['C', 123.209, 48, 125, 46.2091, 125, 44], +// ['L', 125, 6], +// ['C', 125, 3.79086, 123.209, 2, 121, 2], +// ['L', 10, 2], +// ['Z'], +// ], +// }, +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -61, +// top: -32.5, +// width: 121, +// height: 56.4948, +// fill: 'rgba(21,77,221,0.2)', +// stroke: null, +// strokeWidth: 1, +// strokeDashArray: null, +// strokeLineCap: 'butt', +// strokeDashOffset: 0, +// strokeLineJoin: 'miter', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 58.8, 48], +// ['L', 59.5433, 47.331], +// ['L', 59.2454, 47], +// ['L', 58.8, 47], +// ['L', 58.8, 48], +// ['Z'], +// ['M', 66, 56], +// ['L', 65.2567, 56.669], +// ['L', 66, 57.4948], +// ['L', 66.7433, 56.669], +// ['L', 66, 56], +// ['Z'], +// ['M', 73.2, 48], +// ['L', 73.2, 47], +// ['L', 72.7546, 47], +// ['L', 72.4567, 47.331], +// ['L', 73.2, 48], +// ['Z'], +// ['M', 7, 6], +// ['C', 7, 4.34315, 8.34315, 3, 10, 3], +// ['L', 10, 1], +// ['C', 7.23858, 1, 5, 3.23857, 5, 6], +// ['L', 7, 6], +// ['Z'], +// ['M', 7, 44], +// ['L', 7, 6], +// ['L', 5, 6], +// ['L', 5, 44], +// ['L', 7, 44], +// ['Z'], +// ['M', 10, 47], +// ['C', 8.34315, 47, 7, 45.6569, 7, 44], +// ['L', 5, 44], +// ['C', 5, 46.7614, 7.23858, 49, 10, 49], +// ['L', 10, 47], +// ['Z'], +// ['M', 58.8, 47], +// ['L', 10, 47], +// ['L', 10, 49], +// ['L', 58.8, 49], +// ['L', 58.8, 47], +// ['Z'], +// ['M', 58.0567, 48.669], +// ['L', 65.2567, 56.669], +// ['L', 66.7433, 55.331], +// ['L', 59.5433, 47.331], +// ['L', 58.0567, 48.669], +// ['Z'], +// ['M', 66.7433, 56.669], +// ['L', 73.9433, 48.669], +// ['L', 72.4567, 47.331], +// ['L', 65.2567, 55.331], +// ['L', 66.7433, 56.669], +// ['Z'], +// ['M', 121, 47], +// ['L', 73.2, 47], +// ['L', 73.2, 49], +// ['L', 121, 49], +// ['L', 121, 47], +// ['Z'], +// ['M', 124, 44], +// ['C', 124, 45.6569, 122.657, 47, 121, 47], +// ['L', 121, 49], +// ['C', 123.761, 49, 126, 46.7614, 126, 44], +// ['L', 124, 44], +// ['Z'], +// ['M', 124, 6], +// ['L', 124, 44], +// ['L', 126, 44], +// ['L', 126, 6], +// ['L', 124, 6], +// ['Z'], +// ['M', 121, 3], +// ['C', 122.657, 3, 124, 4.34315, 124, 6], +// ['L', 126, 6], +// ['C', 126, 3.23858, 123.761, 1, 121, 1], +// ['L', 121, 3], +// ['Z'], +// ['M', 10, 3], +// ['L', 121, 3], +// ['L', 121, 1], +// ['L', 10, 1], +// ['L', 10, 3], +// ['Z'], +// ], +// }, +// { +// type: 'rect', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -52, +// top: -24.5, +// width: 32, +// height: 32, +// fill: '#FAAD14', +// stroke: null, +// strokeWidth: 1, +// strokeDashArray: null, +// strokeLineCap: 'butt', +// strokeDashOffset: 0, +// strokeLineJoin: 'miter', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// rx: 2, +// ry: 2, +// selectable: true, +// hasControls: true, +// }, +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -45.9945, +// top: -17.6, +// width: 19.8963, +// height: 0, +// fill: '', +// stroke: 'white', +// strokeWidth: 1.2, +// strokeDashArray: null, +// strokeLineCap: 'round', +// strokeDashOffset: 0, +// strokeLineJoin: 'round', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 40.0018, 16], +// ['L', 29.5301, 16], +// ['L', 20.1055, 16], +// ], +// }, +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -36.5727, +// top: -17.6, +// width: 0, +// height: 8.8419, +// fill: '', +// stroke: 'white', +// strokeWidth: 1.2, +// strokeDashArray: null, +// strokeLineCap: 'round', +// strokeDashOffset: 0, +// strokeLineJoin: 'round', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 29.5273, 24.8419], +// ['L', 29.5273, 16], +// ], +// }, +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -46.1, +// top: -10.5375, +// width: 18.5869, +// height: 10.9372, +// fill: 'white', +// stroke: 'white', +// strokeWidth: 1.2, +// strokeDashArray: null, +// strokeLineCap: 'round', +// strokeDashOffset: 0, +// strokeLineJoin: 'round', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 21.8972, 23.0625], +// ['L', 38.5869, 27.5048], +// ['L', 37.6746, 28.8773], +// ['L', 35.579, 32.6272], +// ['L', 34.6667, 33.9997], +// ['L', 20, 30.0959], +// ['L', 21.8972, 23.0625], +// ['Z'], +// ], +// }, +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -30.5219, +// top: -4.7211, +// width: 4.1186, +// height: 4.5576, +// fill: '', +// stroke: 'white', +// strokeWidth: 1.2, +// strokeDashArray: null, +// strokeLineCap: 'round', +// strokeDashOffset: 0, +// strokeLineJoin: 'round', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 37.6737, 28.8789], +// ['L', 39.6967, 29.4174], +// ['L', 38.6126, 33.4365], +// ['L', 35.5781, 32.6288], +// ], +// }, +// { +// type: 'path', +// version: '5.3.0', +// originX: 'left', +// originY: 'top', +// left: -43.3008, +// top: -7.6387, +// width: 4.2123, +// height: 4.181, +// fill: '', +// stroke: '#FAAD14', +// strokeWidth: 0.5, +// strokeDashArray: null, +// strokeLineCap: 'butt', +// strokeDashOffset: 0, +// strokeLineJoin: 'miter', +// strokeUniform: false, +// strokeMiterLimit: 4, +// scaleX: 1, +// scaleY: 1, +// angle: 0, +// flipX: false, +// flipY: false, +// opacity: 1, +// shadow: null, +// visible: true, +// backgroundColor: '', +// fillRule: 'nonzero', +// paintFirst: 'fill', +// globalCompositeOperation: 'source-over', +// skewX: 0, +// skewY: 0, +// selectable: true, +// hasControls: true, +// path: [ +// ['M', 26.6615, 27.7018], +// ['C', 26.6615, 28.8548, 25.7201, 29.7923, 24.5554, 29.7923], +// ['C', 23.3906, 29.7923, 22.4492, 28.8548, 22.4492, 27.7018], +// ['C', 22.4492, 26.5488, 23.3906, 25.6113, 24.5554, 25.6113], +// ['C', 25.7201, 25.6113, 26.6615, 26.5488, 26.6615, 27.7018], +// ['Z'], +// ], +// }, +// ]; + + +const fetchWatchIcon = (status: string) => { + let watchIconData = { + pathFill: 'rgba(21,77,221,0.2)', + rectFill: '#FAAD14' + }; + switch (status) { + case 'watchError': + watchIconData = { + pathFill: 'rgba(21,77,221,0.2)', + rectFill: '#E80D0D' + }; + break; + case 'watchOnline': + watchIconData = { + pathFill: 'rgba(21,77,221,0.2)', + rectFill: '#52C41A' + }; + break; + case 'watchOutline': + watchIconData = { + pathFill: 'rgba(21,77,221,0.2)', + rectFill: '##CCCCCC' + }; + return watchIcon3 + case 'watchWarn': + watchIconData = { + pathFill: 'rgba(21,77,221,0.2)', + rectFill: '#FAAD14' + }; + break; + } + + return [ + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -60, + top: -31.5, + width: 119, + height: 54, + fill: 'white', + stroke: null, + strokeWidth: 1, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'evenodd', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 10, 2], + ['C', 7.79086, 2, 6, 3.79086, 6, 6], + ['L', 6, 44], + ['C', 6, 46.2091, 7.79086, 48, 10, 48], + ['L', 58.8, 48], + ['L', 66, 56], + ['L', 73.2, 48], + ['L', 121, 48], + ['C', 123.209, 48, 125, 46.2091, 125, 44], + ['L', 125, 6], + ['C', 125, 3.79086, 123.209, 2, 121, 2], + ['L', 10, 2], + ['Z'], + ], + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -61, + top: -32.5, + width: 121, + height: 56.4948, + fill: watchIconData.pathFill, + stroke: null, + strokeWidth: 1, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 58.8, 48], + ['L', 59.5433, 47.331], + ['L', 59.2454, 47], + ['L', 58.8, 47], + ['L', 58.8, 48], + ['Z'], + ['M', 66, 56], + ['L', 65.2567, 56.669], + ['L', 66, 57.4948], + ['L', 66.7433, 56.669], + ['L', 66, 56], + ['Z'], + ['M', 73.2, 48], + ['L', 73.2, 47], + ['L', 72.7546, 47], + ['L', 72.4567, 47.331], + ['L', 73.2, 48], + ['Z'], + ['M', 7, 6], + ['C', 7, 4.34315, 8.34315, 3, 10, 3], + ['L', 10, 1], + ['C', 7.23858, 1, 5, 3.23857, 5, 6], + ['L', 7, 6], + ['Z'], + ['M', 7, 44], + ['L', 7, 6], + ['L', 5, 6], + ['L', 5, 44], + ['L', 7, 44], + ['Z'], + ['M', 10, 47], + ['C', 8.34315, 47, 7, 45.6569, 7, 44], + ['L', 5, 44], + ['C', 5, 46.7614, 7.23858, 49, 10, 49], + ['L', 10, 47], + ['Z'], + ['M', 58.8, 47], + ['L', 10, 47], + ['L', 10, 49], + ['L', 58.8, 49], + ['L', 58.8, 47], + ['Z'], + ['M', 58.0567, 48.669], + ['L', 65.2567, 56.669], + ['L', 66.7433, 55.331], + ['L', 59.5433, 47.331], + ['L', 58.0567, 48.669], + ['Z'], + ['M', 66.7433, 56.669], + ['L', 73.9433, 48.669], + ['L', 72.4567, 47.331], + ['L', 65.2567, 55.331], + ['L', 66.7433, 56.669], + ['Z'], + ['M', 121, 47], + ['L', 73.2, 47], + ['L', 73.2, 49], + ['L', 121, 49], + ['L', 121, 47], + ['Z'], + ['M', 124, 44], + ['C', 124, 45.6569, 122.657, 47, 121, 47], + ['L', 121, 49], + ['C', 123.761, 49, 126, 46.7614, 126, 44], + ['L', 124, 44], + ['Z'], + ['M', 124, 6], + ['L', 124, 44], + ['L', 126, 44], + ['L', 126, 6], + ['L', 124, 6], + ['Z'], + ['M', 121, 3], + ['C', 122.657, 3, 124, 4.34315, 124, 6], + ['L', 126, 6], + ['C', 126, 3.23858, 123.761, 1, 121, 1], + ['L', 121, 3], + ['Z'], + ['M', 10, 3], + ['L', 121, 3], + ['L', 121, 1], + ['L', 10, 1], + ['L', 10, 3], + ['Z'], + ], + }, + { + type: 'rect', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -52, + top: -24.5, + width: 32, + height: 32, + fill: watchIconData.rectFill, + stroke: null, + strokeWidth: 1, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + rx: 2, + ry: 2, + selectable: true, + hasControls: true, + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -45.9945, + top: -17.6, + width: 19.8963, + height: 0, + fill: '', + stroke: 'white', + strokeWidth: 1.2, + strokeDashArray: null, + strokeLineCap: 'round', + strokeDashOffset: 0, + strokeLineJoin: 'round', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 40.0018, 16], + ['L', 29.5301, 16], + ['L', 20.1055, 16], + ], + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -36.5727, + top: -17.6, + width: 0, + height: 8.8419, + fill: '', + stroke: 'white', + strokeWidth: 1.2, + strokeDashArray: null, + strokeLineCap: 'round', + strokeDashOffset: 0, + strokeLineJoin: 'round', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 29.5273, 24.8419], + ['L', 29.5273, 16], + ], + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -46.1, + top: -10.5375, + width: 18.5869, + height: 10.9372, + fill: 'white', + stroke: 'white', + strokeWidth: 1.2, + strokeDashArray: null, + strokeLineCap: 'round', + strokeDashOffset: 0, + strokeLineJoin: 'round', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 21.8972, 23.0625], + ['L', 38.5869, 27.5048], + ['L', 37.6746, 28.8773], + ['L', 35.579, 32.6272], + ['L', 34.6667, 33.9997], + ['L', 20, 30.0959], + ['L', 21.8972, 23.0625], + ['Z'], + ], + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -30.5219, + top: -4.7211, + width: 4.1186, + height: 4.5576, + fill: '', + stroke: 'white', + strokeWidth: 1.2, + strokeDashArray: null, + strokeLineCap: 'round', + strokeDashOffset: 0, + strokeLineJoin: 'round', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 37.6737, 28.8789], + ['L', 39.6967, 29.4174], + ['L', 38.6126, 33.4365], + ['L', 35.5781, 32.6288], + ], + }, + { + type: 'path', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -43.3008, + top: -7.6387, + width: 4.2123, + height: 4.181, + fill: '', + stroke: watchIconData.rectFill, + strokeWidth: 0.5, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + path: [ + ['M', 26.6615, 27.7018], + ['C', 26.6615, 28.8548, 25.7201, 29.7923, 24.5554, 29.7923], + ['C', 23.3906, 29.7923, 22.4492, 28.8548, 22.4492, 27.7018], + ['C', 22.4492, 26.5488, 23.3906, 25.6113, 24.5554, 25.6113], + ['C', 25.7201, 25.6113, 26.6615, 26.5488, 26.6615, 27.7018], + ['Z'], + ], + }, + ]; +} + +export const fetchWatchGroupObjects: Record = (record: { + status: string; + deviceName: string; +}) => { + const { status, deviceName } = record; + let watchIconObject = fetchWatchIcon(status);; + + // console.log(deviceName, 'deviceName'); + return { + type: 'group', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: 20.9866, + top: 16.4716, + width: 131, + height: 66, + fill: 'rgb(0,0,0)', + stroke: null, + strokeWidth: 0, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: null, + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + id: '160e5a54-0126-473e-908a-5f74a2a8a14a', + selectable: true, + hasControls: true, + objects: [ + { + type: 'group', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -65.5, + top: -33, + width: 131, + height: 66, + fill: 'rgb(0,0,0)', + stroke: null, + strokeWidth: 0, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: '', + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + selectable: true, + hasControls: true, + objects: watchIconObject, + }, + { + type: 'textbox', + version: '5.3.0', + originX: 'left', + originY: 'top', + left: -15.709, + top: -15.0177, + width: 67.6873, + height: 13.56, + fill: 'rgb(0,0,0)', + stroke: null, + strokeWidth: 1, + strokeDashArray: null, + strokeLineCap: 'butt', + strokeDashOffset: 0, + strokeLineJoin: 'miter', + strokeUniform: false, + strokeMiterLimit: 4, + scaleX: 1, + scaleY: 1, + angle: 0, + flipX: false, + flipY: false, + opacity: 1, + shadow: '', + visible: true, + backgroundColor: '', + fillRule: 'nonzero', + paintFirst: 'fill', + globalCompositeOperation: 'source-over', + skewX: 0, + skewY: 0, + fontFamily: 'arial', + fontWeight: 'normal', + fontSize: 14, + text: deviceName, + underline: false, + overline: false, + linethrough: false, + textAlign: 'left', + fontStyle: 'normal', + lineHeight: 1.16, + textBackgroundColor: '', + charSpacing: 0, + styles: [], + direction: 'ltr', + path: null, + pathStartOffset: 0, + pathSide: 'left', + pathAlign: 'baseline', + minWidth: 20, + splitByGrapheme: true, + selectable: true, + hasControls: true, + }, + ], + }; +}; diff --git a/src/testData/testData.md b/src/testData/testData.md new file mode 100644 index 0000000..3684c11 --- /dev/null +++ b/src/testData/testData.md @@ -0,0 +1,11 @@ + +### 测试数据 + + diff --git a/src/typings.d.ts b/src/typings.d.ts new file mode 100644 index 0000000..99f0711 --- /dev/null +++ b/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'; + +declare const REACT_APP_ENV: 'test' | 'dev' | 'pre' | false; +declare const SERVER_HOST:string; + +declare const FILE_SERVER_HOST:string; +declare const WEBRTC_SERVER_HOST:string; diff --git a/src/utils/FixMenuItemIcon.tsx b/src/utils/FixMenuItemIcon.tsx new file mode 100644 index 0000000..2917ca3 --- /dev/null +++ b/src/utils/FixMenuItemIcon.tsx @@ -0,0 +1,63 @@ +/** + * @FixMenuItemIcon 菜单图标手动导入 + * + * + */ +import React from 'react'; +import { MenuDataItem } from '@ant-design/pro-layout'; +import {CarOutlined, UserOutlined, TableOutlined, + DollarCircleOutlined, ShopOutlined, UserSwitchOutlined, + HomeOutlined, SettingOutlined, TeamOutlined, DotChartOutlined, + BlockOutlined, DesktopOutlined, DatabaseOutlined, + WarningOutlined, CalendarOutlined, ExperimentOutlined, + ThunderboltOutlined, BugOutlined, AreaChartOutlined,ContactsOutlined, GatewayOutlined, BellOutlined, + PictureOutlined +} from '@ant-design/icons'; + +const iconMap:any = { + 'CarOutlined': , + 'UserOutlined': , + 'TableOutlined': , + 'DollarCircleOutlined': , + 'ShopOutlined': , + 'UserSwitchOutlined': , + 'HomeOutlined': , + 'SettingOutlined': , + 'TeamOutlined': , + 'DotChartOutlined': , + 'BlockOutlined': , + 'DesktopOutlined': , + 'DatabaseOutlined': , + 'WarningOutlined': , + 'CalendarOutlined': , + 'ExperimentOutlined': , + 'ThunderboltOutlined': , + 'BugOutlined': , + 'AreaChartOutlined': , + 'ContactsOutlined': , + 'GatewayOutlined': , + 'BellOutlined': , + 'PictureOutlined': +} +// FIX从接口获取菜单时icon为string类型 +const fixMenuItemIcon = (menus: MenuDataItem[], iconType = 'Outlined'): MenuDataItem[] => { + menus.forEach((item) => { + const { icon, children } = item; + if (typeof icon === 'string') { + console.log(22, icon) + if (icon in iconMap) { + item.icon = iconMap[icon]; + } else { + item.icon = iconMap['TableOutlined']; + } + // let fixIconName = icon.slice(0, 1).toLocaleUpperCase() + icon.slice(1) + iconType; + // // @ts-ignore + // item.icon = React.createElement(allIcons[fixIconName] || allIcons[icon]); + } + // eslint-disable-next-line @typescript-eslint/no-unused-expressions + children && children.length > 0 ? (item.children = fixMenuItemIcon(children)) : null; + }); + return menus; +}; + +export default fixMenuItemIcon; diff --git a/src/utils/IconUtil.ts b/src/utils/IconUtil.ts new file mode 100644 index 0000000..19446c4 --- /dev/null +++ b/src/utils/IconUtil.ts @@ -0,0 +1,24 @@ +import * as AntdIcons from '@ant-design/icons'; +import React from 'react'; + +const allIcons: Record = AntdIcons; + +export function getIcon(name: string): React.ReactNode | string { + const icon = allIcons[name]; + return icon || ''; +} + +export function createIcon(icon?: string | any): React.ReactNode | string { + if(!icon){ + return '' + } + console.log(icon,'createIcon_icon') + if (typeof icon === 'object') { + return icon; + } + const ele = allIcons[icon]; + if (ele) { + return React.createElement(allIcons[icon]); + } + return ''; +} diff --git a/src/utils/common.ts b/src/utils/common.ts new file mode 100644 index 0000000..8e31cc0 --- /dev/null +++ b/src/utils/common.ts @@ -0,0 +1,123 @@ +import {RcFile} from "antd/es/upload/interface"; +import {message} from "antd"; + +const file_type_list = [ + 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', //xlsx + 'application/vnd.ms-excel', //xls + 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', //docx + 'text/plain', //text + 'application/pdf', //pdf + 'application/json', //json + 'application/msword', //doc +] +export const parseIds = (data: string | undefined)=>{ + console.log(555, data) + if (data === undefined || data === '') { + console.log(88888, data) + return [] + } else { + return data.split(",").map((item)=>{return parseInt(item)}) + } +} + +export const handleOneFile: any = (values: any, name: string)=>{ + if (values[name] && values[name].length) { + // 有文件 + if(values[name][0].status === 'error'){ + // 第一个文件 上传失败 + delete values[name] + } else { + if (values[name][0]?.response && values[name][0]?.response?.data?.path) { + values[name] = values[name][0]?.response?.data?.path + } else { + delete values[name] + } + } + } else { + delete values[name] + } + return values +} + +export const beforeUploadImage = (file: RcFile) => { + const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png'; + console.log(file.type) + if (!isJpgOrPng) { + message.error('不是图片类型'); + } + const isLt2M = file.size / 1024 / 1024 < 2; + if (!isLt2M) { + message.error('大小超过2M'); + } + return isJpgOrPng && isLt2M; +}; + +export const beforeUploadFile = (file: RcFile) => { + const isLt50M = file.size / 1024 / 1024 < 50; + if (!isLt50M) { + message.error('大小超过50M'); + } + return isLt50M; +}; + +export const imageInit = (host: string, data: any)=>{ + if (data) { + return [{uid: '-1', name: 'image.png', status: 'done', url: host+data,}] + } else { + return [] + } +} + +export const getEnum = (intl: any, data: Array)=>{ + let temp = {} + data.forEach((v)=>{ + let name = v.split('.enum.')[1] + // @ts-ignore + temp[name] = intl.formatMessage({id: `${v}`, defaultMessage: '$$$',}) + }) + return temp +} + +export function addObjectByCode(obj: any, code: any, data:any) { + if (obj.code === code) { + if (!obj.children) { + obj.children = []; + } + obj.children.push(data); + return true; + } else if (obj.children) { + for (let i = 0; i < obj.children.length; i++) { + const added = addObjectByCode(obj.children[i], code, data); + if (added) { + return true; + } + } + } + return false; +} + +export function floatFormat(num: number, precision = 12) { + return +parseFloat(num.toPrecision(precision)); +} + +export function getAllRouteNameTile(routes: any[], parent_name: string) { + let temp: any[] = [] + routes.forEach((v)=>{ + temp.push({name: `${parent_name}.${v.name}`, title: v.title}) + let new_parent_name = `${parent_name}.${v.name}` + if (v.routes.length) { + temp = temp.concat(getAllRouteNameTile(v.routes, new_parent_name)) + } + }) + return temp +} + +export function dateFormat(date: string) : string{ + + + const datetime = new Date(date); + const year = datetime.getFullYear(); + const month = (datetime.getMonth() + 1).toString().padStart(2, '0'); + const day = datetime.getDate().toString().padStart(2, '0'); + return `${year}-${month}-${day}` +} diff --git a/src/utils/downloadfile.ts b/src/utils/downloadfile.ts new file mode 100644 index 0000000..5d56cda --- /dev/null +++ b/src/utils/downloadfile.ts @@ -0,0 +1,63 @@ +import { request } from '@umijs/max'; + +const mimeMap = { + xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + zip: 'application/zip', +}; + +/** + * 解析blob响应内容并下载 + * @param {*} res blob响应内容 + * @param {String} mimeType MIME类型 + */ +export function resolveBlob(res: any, mimeType: string) { + const aLink = document.createElement('a'); + const blob = new Blob([res.data], { type: mimeType }); + // //从response的headers中获取filename, 后端response.setHeader("Content-disposition", "attachment; filename=xxxx.docx") 设置的文件名; + const patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*'); + // console.log(res); + const contentDisposition = decodeURI(res.headers['content-disposition']); + const result = patt.exec(contentDisposition); + let fileName = result ? result[1] : 'file'; + fileName = fileName.replace(/"/g, ''); + aLink.style.display = 'none'; + aLink.href = URL.createObjectURL(blob); + aLink.setAttribute('download', fileName); // 设置下载文件名称 + document.body.appendChild(aLink); + aLink.click(); + URL.revokeObjectURL(aLink.href); // 清除引用 + document.body.removeChild(aLink); +} + +export function downLoadZip(url: string) { + request(url, { + method: 'GET', + responseType: 'blob', + getResponse: true, + }).then((res) => { + resolveBlob(res, mimeMap.zip); + }); +} + +export async function downLoadXlsx(url: string, params: any, fileName: string) { + return request(url, { + ...params, + method: 'POST', + responseType: 'blob', + }).then((data) => { + const aLink = document.createElement('a'); + const blob = data as any; // new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); + aLink.style.display = 'none'; + aLink.href = URL.createObjectURL(blob); + aLink.setAttribute('download', fileName); // 设置下载文件名称 + document.body.appendChild(aLink); + aLink.click(); + URL.revokeObjectURL(aLink.href); // 清除引用 + document.body.removeChild(aLink); + }); +} + + +export function download(fileName: string) { + window.location.href = `/api/common/download?fileName=${encodeURI(fileName)}&delete=${true}`; +} diff --git a/src/utils/options.ts b/src/utils/options.ts new file mode 100644 index 0000000..b65663f --- /dev/null +++ b/src/utils/options.ts @@ -0,0 +1,12 @@ +import { DictValueEnumObj } from "@/components/DictTag"; +import { ProSchemaValueEnumObj, ProSchemaValueEnumType } from "@ant-design/pro-components"; + +export function getValueEnumLabel(options: DictValueEnumObj | ProSchemaValueEnumObj, val: string | number | undefined, value?: string) { + if (val !== undefined) { + const data = options[val] as ProSchemaValueEnumType; + if(data) { + return data.text; + } + } + return value?value:val; +} diff --git a/src/utils/permission.ts b/src/utils/permission.ts new file mode 100644 index 0000000..e7c8a28 --- /dev/null +++ b/src/utils/permission.ts @@ -0,0 +1,64 @@ +// /** +// * 字符权限校验 +// * @param {Array} value 校验值 +// * @returns {Boolean} +// */ +export function matchPerms(permissions: string[], value: string[]) { + if (value && value instanceof Array && value.length > 0) { + const permissionDatas = value; + const all_permission = '*:*:*'; + const hasPermission = permissions.some((permission) => { + return all_permission === permission || permissionDatas.includes(permission); + }); + if (!hasPermission) { + return false; + } + return true; + } + console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`); + return false; +} + +export function matchPerm(permissions: string[], value: string) { + if (value && value.length > 0) { + const permissionDatas = value; + const all_permission = '*:*:*'; + const hasPermission = permissions.some((permission) => { + return all_permission === permission || permissionDatas === permission; + }); + if (!hasPermission) { + return false; + } + return true; + } + console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`); + return false; +} + +export function matchPermission(permissions: string[] | undefined, value: any): boolean { + if (permissions === undefined) return false; + const type = typeof value; + if (type === 'string') { + return matchPerm(permissions, value); + } + return matchPerms(permissions, value); +} + +/** + * 角色权限校验 + * @param {Array} value 校验值 + * @returns {Boolean} + */ +export function checkRole(roles: API.System.Role[] | undefined, value: string[]) { + if (roles && value && value.length > 0) { + for (let i = 0; i < roles?.length; i++) { + for (let j = 0; j < value?.length; j++) { + if (value[j] === roles[i].roleKey) { + return true; + } + } + } + } + console.error(`need roles! Like checkRole="['admin','editor']"`); + return false; +} diff --git a/src/utils/player.tsx b/src/utils/player.tsx new file mode 100644 index 0000000..ee20481 --- /dev/null +++ b/src/utils/player.tsx @@ -0,0 +1,9 @@ +import React from 'react' +import { VideoPlayer } from '@videojs-player/react' +import 'video.js/dist/video-js.css' + +export const MyComponent: React.FC = () => { + return ( +
+ ) +} diff --git a/src/utils/storage.js b/src/utils/storage.js new file mode 100644 index 0000000..602378a --- /dev/null +++ b/src/utils/storage.js @@ -0,0 +1,78 @@ +// TODO 改为ts格式 +/** + * Set storage + * + * @param name + * @param content + * @param maxAge + */ +export const setStore = (name, content, maxAge = null) => { + if (!global.window || !name) { + return + } + + if (typeof content !== 'string') { + content = JSON.stringify(content) + } + + const storage = global.window.localStorage + + storage.setItem(name, content) + if (maxAge && !isNaN(parseInt(maxAge))) { + const timeout = parseInt(new Date().getTime() / 1000) + storage.setItem(`${name}_expire`, timeout + maxAge) + } + } + + /** + * Get storage + * + * @param name + * @returns {*} + */ + export const getStore = name => { + if (!global.window || !name) { + return + } + + const content = window.localStorage.getItem(name) + const _expire = window.localStorage.getItem(`${name}_expire`) + + if (_expire) { + const now = parseInt(new Date().getTime() / 1000) + if (now > _expire) { + return + } + } + + try { + return JSON.parse(content) + } catch (e) { + return content + } + } + + /** + * Clear storage + * + * @param name + */ + export const clearStore = name => { + if (!global.window || !name) { + return + } + + window.localStorage.removeItem(name) + window.localStorage.removeItem(`${name}_expire`) + } + + /** + * Clear all storage + */ + export const clearAll = () => { + if (!global.window || !name) { + return + } + + window.localStorage.clear() + } \ No newline at end of file diff --git a/src/utils/tree.ts b/src/utils/tree.ts new file mode 100644 index 0000000..d75395e --- /dev/null +++ b/src/utils/tree.ts @@ -0,0 +1,93 @@ +import { DataNode } from 'antd/es/tree'; +import { parse } from 'querystring'; + +/** + * 构造树型结构数据 + * @param {*} data 数据源 + * @param {*} id id字段 默认 'id' + * @param {*} parentId 父节点字段 默认 'parentId' + * @param {*} children 孩子节点字段 默认 'children' + */ +export function buildTreeData( + data: any[], + id: string, + name: string, + parentId: string, + parentName: string, + children: string, +) { + const config = { + id: id || 'id', + name: name || 'name', + parentId: parentId || 'parentId', + parentName: parentName || 'parentName', + childrenList: children || 'children', + }; + + const childrenListMap: any[] = []; + const nodeIds: any[] = []; + const tree: any[] = []; + data.forEach((item) => { + const d = item; + const pId = d[config.parentId]; + if (!childrenListMap[pId]) { + childrenListMap[pId] = []; + } + d.key = d[config.id]; + d.title = d[config.name]; + d.value = d[config.id]; + d[config.childrenList] = null; + nodeIds[d[config.id]] = d; + childrenListMap[pId].push(d); + }); + + data.forEach((item: any) => { + const d = item; + const pId = d[config.parentId]; + if (!nodeIds[pId]) { + d[config.parentName] = ''; + tree.push(d); + } + }); + + function adaptToChildrenList(item: any) { + const o = item; + if (childrenListMap[o[config.id]]) { + if (!o[config.childrenList]) { + o[config.childrenList] = []; + } + o[config.childrenList] = childrenListMap[o[config.id]]; + } + if (o[config.childrenList]) { + o[config.childrenList].forEach((child: any) => { + const c = child; + c[config.parentName] = o[config.name]; + adaptToChildrenList(c); + }); + } + } + + tree.forEach((t: any) => { + adaptToChildrenList(t); + }); + + return tree; +} + +export const getPageQuery = () => parse(window.location.href.split('?')[1]); + +export function formatTreeData(arrayList: any): DataNode[] { + const treeSelectData: DataNode[] = arrayList.map((item: any) => { + const node: DataNode = { + id: item.id, + title: item.label, + key: `${item.id}`, + value: item.id, + } as DataNode; + if (item.children) { + node.children = formatTreeData(item.children); + } + return node; + }); + return treeSelectData; +} diff --git a/tests/setupTests.jsx b/tests/setupTests.jsx new file mode 100644 index 0000000..952561d --- /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 new file mode 100644 index 0000000..9fe8cd8 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "forceConsistentCasingInFileNames": false, + + "target": "esnext", + "module": "esnext", + "moduleResolution": "node", + "importHelpers": true, + "jsx": "preserve", + "esModuleInterop": true, + "sourceMap": true, + "baseUrl": "./", + "skipLibCheck": true, + "experimentalDecorators": true, + "strict": true, + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, + "paths": { + "@/*": ["./src/*"], + "@@/*": ["./src/.umi/*"], + "@@test/*": ["./src/.umi-test/*"], + "@umijs/max": ["./src/.umijs/max"], + + } + }, + "include": ["./**/*.d.ts", "./**/*.ts", "./**/*.tsx", "src/utils/storage.js"] +} diff --git a/types/cache/cache.json b/types/cache/cache.json new file mode 100644 index 0000000..0967ef4 --- /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 0000000..81109b4 --- /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 0000000..6c59e19 --- /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 0000000..e69de29 diff --git a/types/index.d.ts b/types/index.d.ts new file mode 100644 index 0000000..2c2805a --- /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 = 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"} */ + 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 = 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}] */ + 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 = Record; + + export type POST_API_LOGIN_OUT_LOGIN_RES = { + /** example: {} */ + data: Record; + /** 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; + }; +}