├── .gitignore ├── packages ├── core │ ├── tsconfig.json │ ├── vite.config.ts │ ├── src │ │ ├── constants.ts │ │ ├── utils.ts │ │ ├── index.test.ts │ │ ├── utils.test.ts │ │ ├── init.test.ts │ │ ├── init.ts │ │ ├── handler.ts │ │ ├── functional.ts │ │ └── functional.test.ts │ ├── index.ts │ ├── package.json │ ├── types │ │ └── index.d.ts │ ├── LICENSE │ └── README.md ├── ant-design-vue │ ├── tsconfig.json │ ├── examples.png │ ├── vite.config.ts │ ├── package.json │ ├── index.ts │ ├── LICENSE │ └── README.md ├── ant-design │ ├── tsconfig.json │ ├── examples.png │ ├── vite.config.ts │ ├── package.json │ ├── index.ts │ ├── LICENSE │ └── README.md ├── element-plus │ ├── tsconfig.json │ ├── examples.png │ ├── vite.config.ts │ ├── package.json │ ├── index.ts │ ├── LICENSE │ └── README.md ├── element-ui │ ├── tsconfig.json │ ├── examples.png │ ├── vite.config.ts │ ├── index.ts │ ├── package.json │ ├── LICENSE │ └── README.md └── table-merge │ ├── tsconfig.json │ ├── vite.config.ts │ ├── index.ts │ ├── README.md │ ├── LICENSE │ └── package.json ├── pnpm-workspace.yaml ├── examples ├── ant-design │ ├── src │ │ ├── vite-env.d.ts │ │ ├── app.css │ │ ├── main.tsx │ │ └── App.tsx │ ├── vite.config.ts │ ├── tsconfig.node.json │ ├── index.html │ ├── package.json │ └── tsconfig.json ├── ant-design-vue │ ├── vite.config.ts │ ├── src │ │ ├── vite-env.d.ts │ │ ├── main.ts │ │ └── App.vue │ ├── tsconfig.node.json │ ├── index.html │ ├── package.json │ └── tsconfig.json ├── element-plus │ ├── vite.config.ts │ ├── src │ │ ├── vite-env.d.ts │ │ ├── main.ts │ │ └── App.vue │ ├── tsconfig.node.json │ ├── index.html │ ├── package.json │ └── tsconfig.json └── element-ui │ ├── vite.config.ts │ ├── src │ ├── vite-env.d.ts │ ├── main.ts │ └── App.vue │ ├── tsconfig.node.json │ ├── index.html │ ├── package.json │ └── tsconfig.json ├── vite-env.d.ts ├── tsconfig.node.json ├── vite.config.ts ├── tsconfig.json ├── vite.build.ts ├── LICENSE ├── README.md ├── package.json └── pnpm-lock.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | coverage 4 | 5 | .DS_Store 6 | 7 | -------------------------------------------------------------------------------- /packages/core/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | } -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - 'packages/*' 3 | - 'examples/*' 4 | -------------------------------------------------------------------------------- /examples/ant-design/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /packages/ant-design-vue/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } -------------------------------------------------------------------------------- /packages/ant-design/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } -------------------------------------------------------------------------------- /packages/element-plus/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } -------------------------------------------------------------------------------- /packages/element-ui/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } -------------------------------------------------------------------------------- /packages/table-merge/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json" 3 | } -------------------------------------------------------------------------------- /packages/core/vite.config.ts: -------------------------------------------------------------------------------- 1 | import build from '../../vite.build'; 2 | 3 | export default build('tableMergeCore'); 4 | -------------------------------------------------------------------------------- /packages/table-merge/vite.config.ts: -------------------------------------------------------------------------------- 1 | import build from '../../vite.build'; 2 | 3 | export default build('tableMerge'); 4 | -------------------------------------------------------------------------------- /packages/ant-design/examples.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuexiaoliang/table-merge/HEAD/packages/ant-design/examples.png -------------------------------------------------------------------------------- /packages/element-plus/examples.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuexiaoliang/table-merge/HEAD/packages/element-plus/examples.png -------------------------------------------------------------------------------- /packages/element-ui/examples.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuexiaoliang/table-merge/HEAD/packages/element-ui/examples.png -------------------------------------------------------------------------------- /packages/element-ui/vite.config.ts: -------------------------------------------------------------------------------- 1 | import build from '../../vite.build'; 2 | 3 | export default build('tableMergeElement'); 4 | -------------------------------------------------------------------------------- /packages/ant-design-vue/examples.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yuexiaoliang/table-merge/HEAD/packages/ant-design-vue/examples.png -------------------------------------------------------------------------------- /packages/ant-design/vite.config.ts: -------------------------------------------------------------------------------- 1 | import build from '../../vite.build'; 2 | 3 | export default build('tableMergeAntDesignVue'); 4 | -------------------------------------------------------------------------------- /packages/ant-design-vue/vite.config.ts: -------------------------------------------------------------------------------- 1 | import build from '../../vite.build'; 2 | 3 | export default build('tableMergeAntDesignVue'); 4 | -------------------------------------------------------------------------------- /packages/element-plus/vite.config.ts: -------------------------------------------------------------------------------- 1 | import build from '../../vite.build'; 2 | 3 | export default build('tableMergeElementPlus'); 4 | -------------------------------------------------------------------------------- /packages/element-ui/index.ts: -------------------------------------------------------------------------------- 1 | import tableMergeElementPlus from '@table-merge/element-plus'; 2 | 3 | export default tableMergeElementPlus; 4 | -------------------------------------------------------------------------------- /examples/ant-design-vue/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [vue()] 7 | }) 8 | -------------------------------------------------------------------------------- /examples/element-plus/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [vue()] 7 | }) 8 | -------------------------------------------------------------------------------- /examples/element-ui/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import vue from '@vitejs/plugin-vue2'; 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [vue()] 7 | }); 8 | -------------------------------------------------------------------------------- /examples/ant-design/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()] 7 | }) 8 | -------------------------------------------------------------------------------- /vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | declare module '*.vue' { 4 | import type { DefineComponent } from 'vue'; 5 | const component: DefineComponent<{}, {}, any>; 6 | export default component; 7 | } 8 | -------------------------------------------------------------------------------- /examples/element-plus/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | declare module '*.vue' { 4 | import type { DefineComponent } from 'vue' 5 | const component: DefineComponent<{}, {}, any> 6 | export default component 7 | } 8 | -------------------------------------------------------------------------------- /examples/element-ui/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | declare module '*.vue' { 4 | import type { DefineComponent } from 'vue' 5 | const component: DefineComponent<{}, {}, any> 6 | export default component 7 | } 8 | -------------------------------------------------------------------------------- /examples/ant-design-vue/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | declare module '*.vue' { 4 | import type { DefineComponent } from 'vue' 5 | const component: DefineComponent<{}, {}, any> 6 | export default component 7 | } 8 | -------------------------------------------------------------------------------- /examples/ant-design-vue/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | 4 | import Table from 'ant-design-vue/lib/table'; 5 | import 'ant-design-vue/lib/table/style/css'; 6 | 7 | createApp(App).use(Table).mount('#app'); 8 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "allowSyntheticDefaultImports": true 7 | }, 8 | "include": [ 9 | "vite.config.ts" 10 | ] 11 | } -------------------------------------------------------------------------------- /examples/ant-design/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "allowSyntheticDefaultImports": true 7 | }, 8 | "include": ["vite.config.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/element-ui/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "allowSyntheticDefaultImports": true 7 | }, 8 | "include": ["vite.config.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/ant-design-vue/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "allowSyntheticDefaultImports": true 7 | }, 8 | "include": ["vite.config.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /examples/ant-design/src/app.css: -------------------------------------------------------------------------------- 1 | .title { 2 | margin: 30px; 3 | text-align: center; 4 | font-size: 30px; 5 | } 6 | .box { 7 | margin: 30px; 8 | } 9 | .box pre { 10 | background-color: #f2f2f2; 11 | padding: 10px; 12 | border-radius: 5px; 13 | } 14 | -------------------------------------------------------------------------------- /examples/element-plus/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "allowSyntheticDefaultImports": true 7 | }, 8 | "include": ["vite.config.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import { defineConfig } from 'vite'; 3 | import vue from '@vitejs/plugin-vue'; 4 | import jsx from '@vitejs/plugin-vue-jsx'; 5 | 6 | export default defineConfig({ 7 | plugins: [jsx(), vue()], 8 | test: {} 9 | }); 10 | -------------------------------------------------------------------------------- /packages/core/src/constants.ts: -------------------------------------------------------------------------------- 1 | export const KEYS_TYPE_ERROR = 'option.keys 必须是 string[] 类型'; 2 | export const RANGE_TYPE_ERROR = 'option.range 必须是 {row: number | [number, number], col: number | [number, number]} 类型'; 3 | export const TABLE_MERGED_ERROR = "type 只能是 'rowSpan' | 'colSpan' 或者不传递"; 4 | -------------------------------------------------------------------------------- /packages/core/index.ts: -------------------------------------------------------------------------------- 1 | import { UserOptions, SpanTypes } from './types'; 2 | 3 | export { tableHandler as createTableMerge } from './src/handler'; 4 | export { getTableMerged } from './src/functional'; 5 | 6 | export type TableMergeOptions = UserOptions; 7 | export type TableMergeSpanTypes = SpanTypes; 8 | -------------------------------------------------------------------------------- /examples/ant-design/src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom/client'; 3 | import App from './App'; 4 | import 'antd/dist/antd.css'; 5 | 6 | ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( 7 | 8 | 9 | 10 | ); 11 | -------------------------------------------------------------------------------- /examples/element-ui/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | @table-merge/element-ui example 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /examples/element-plus/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | @table-merge/element-plus example 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /examples/ant-design-vue/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | @table-merge/ant-design-vue example 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /examples/element-plus/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | 3 | import { ElTable, ElTableColumn } from 'element-plus'; 4 | import 'element-plus/lib/components/table/style/css'; 5 | import 'element-plus/lib/components/table-column/style/css'; 6 | 7 | import App from './App.vue'; 8 | 9 | const app = createApp(App); 10 | app.use(ElTable).use(ElTableColumn); 11 | 12 | app.mount('#app'); 13 | -------------------------------------------------------------------------------- /packages/table-merge/index.ts: -------------------------------------------------------------------------------- 1 | export * from '@table-merge/core'; 2 | import tableMergeAntDesign from '@table-merge/ant-design'; 3 | import tableMergeAntDesignVue from '@table-merge/ant-design-vue'; 4 | import tableMergeElementPlus from '@table-merge/element-plus'; 5 | import tableMergeElement from '@table-merge/element-ui'; 6 | 7 | export { tableMergeAntDesign, tableMergeAntDesignVue, tableMergeElementPlus, tableMergeElement }; 8 | -------------------------------------------------------------------------------- /examples/element-ui/src/main.ts: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | 3 | import App from './App.vue'; 4 | 5 | import { Table, TableColumn } from 'element-ui'; 6 | import 'element-ui/lib/theme-chalk/table.css'; 7 | import 'element-ui/lib/theme-chalk/table-column.css'; 8 | 9 | Vue.component(Table.name, Table); 10 | Vue.component(TableColumn.name, TableColumn); 11 | 12 | new Vue({ 13 | el: '#app', 14 | render: (h) => h(App) 15 | }); 16 | -------------------------------------------------------------------------------- /packages/core/src/utils.ts: -------------------------------------------------------------------------------- 1 | export function isNumber(data: any): boolean { 2 | return typeof data === 'number'; 3 | } 4 | 5 | export function isArray(data: any): boolean { 6 | return getType(data) === '[object Array]'; 7 | } 8 | 9 | export function isObject(data: any): boolean { 10 | return getType(data) === '[object Object]'; 11 | } 12 | 13 | export function getType(data: any): string { 14 | return Object.prototype.toString.call(data); 15 | } 16 | -------------------------------------------------------------------------------- /examples/ant-design/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | @table-merge/ant-design example 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /examples/element-plus/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "element-plus", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vue-tsc --noEmit && vite build", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "@table-merge/element-plus": "workspace:*", 13 | "vue": "^3.2.37" 14 | }, 15 | "devDependencies": { 16 | "@vitejs/plugin-vue": "^3.1.0", 17 | "typescript": "^4.6.4", 18 | "vite": "^3.1.0", 19 | "vue-tsc": "^0.40.4" 20 | } 21 | } -------------------------------------------------------------------------------- /examples/ant-design-vue/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "element-plus", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vue-tsc --noEmit && vite build", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "@table-merge/ant-design-vue": "workspace:*", 13 | "vue": "^3.2.37" 14 | }, 15 | "devDependencies": { 16 | "@vitejs/plugin-vue": "^3.1.0", 17 | "typescript": "^4.6.4", 18 | "vite": "^3.1.0", 19 | "vue-tsc": "^0.40.4" 20 | } 21 | } -------------------------------------------------------------------------------- /examples/element-ui/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "element-ui", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vue-tsc --noEmit && vite build", 9 | "preview": "vite preview" 10 | }, 11 | "devDependencies": { 12 | "@vitejs/plugin-vue2": "^2.0.0", 13 | "typescript": "^4.6.4", 14 | "vite": "^3.1.0", 15 | "vue-tsc": "^0.40.4" 16 | }, 17 | "dependencies": { 18 | "element-ui": "^2.15.10", 19 | "@table-merge/element-ui": "workspace:*", 20 | "vue": "^2.6.14" 21 | } 22 | } -------------------------------------------------------------------------------- /examples/element-plus/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "module": "ESNext", 6 | "moduleResolution": "Node", 7 | "strict": true, 8 | "jsx": "preserve", 9 | "sourceMap": true, 10 | "resolveJsonModule": true, 11 | "isolatedModules": true, 12 | "esModuleInterop": true, 13 | "lib": ["ESNext", "DOM"], 14 | "skipLibCheck": true 15 | }, 16 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], 17 | "references": [{ "path": "./tsconfig.node.json" }] 18 | } 19 | -------------------------------------------------------------------------------- /examples/element-ui/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "module": "ESNext", 6 | "moduleResolution": "Node", 7 | "strict": true, 8 | "jsx": "preserve", 9 | "sourceMap": true, 10 | "resolveJsonModule": true, 11 | "isolatedModules": true, 12 | "esModuleInterop": true, 13 | "lib": ["ESNext", "DOM"], 14 | "skipLibCheck": true 15 | }, 16 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], 17 | "references": [{ "path": "./tsconfig.node.json" }] 18 | } 19 | -------------------------------------------------------------------------------- /examples/ant-design-vue/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "module": "ESNext", 6 | "moduleResolution": "Node", 7 | "strict": true, 8 | "jsx": "preserve", 9 | "sourceMap": true, 10 | "resolveJsonModule": true, 11 | "isolatedModules": true, 12 | "esModuleInterop": true, 13 | "lib": ["ESNext", "DOM"], 14 | "skipLibCheck": true 15 | }, 16 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], 17 | "references": [{ "path": "./tsconfig.node.json" }] 18 | } 19 | -------------------------------------------------------------------------------- /packages/core/src/index.test.ts: -------------------------------------------------------------------------------- 1 | import { test, expect, describe } from 'vitest'; 2 | 3 | export const data = [ 4 | { id: 1, a: 0, b: 1, c: 1, d: 0, e: 0 }, 5 | { id: 2, a: 1, b: 0, c: 0, d: 0, e: 1 }, 6 | { id: 3, a: 0, b: 0, c: 0, d: 1, e: 1 }, 7 | { id: 4, a: 0, b: 1, c: 0, d: 1, e: 1 }, 8 | { id: 5, a: 0, b: 0, c: 0, d: 1, e: 1 }, 9 | { id: 6, a: 1, b: 1, c: 1, d: 0, e: 0 }, 10 | { id: 7, a: 1, b: 0, c: 0, d: 0, e: 0 }, 11 | { id: 8, a: 1, b: 1, c: 0, d: 0, e: 0 } 12 | ]; 13 | 14 | export const keys = ['a', 'b', 'c', 'd', 'e']; 15 | 16 | test('test', () => { 17 | expect('a').toBe('a'); 18 | }); 19 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "module": "ESNext", 6 | "moduleResolution": "Node", 7 | "strict": true, 8 | "jsx": "preserve", 9 | "sourceMap": true, 10 | "resolveJsonModule": true, 11 | "isolatedModules": true, 12 | "esModuleInterop": true, 13 | "lib": [ 14 | "ESNext", 15 | "DOM" 16 | ], 17 | "skipLibCheck": true 18 | }, 19 | "include": [ 20 | "**/**/*.ts", 21 | "**/**/*.d.ts" 22 | ], 23 | "references": [ 24 | { 25 | "path": "./tsconfig.node.json" 26 | } 27 | ] 28 | } -------------------------------------------------------------------------------- /examples/ant-design/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ant-design", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "@table-merge/ant-design": "workspace:*", 13 | "antd": "^4.23.4", 14 | "react": "^18.2.0", 15 | "react-dom": "^18.2.0" 16 | }, 17 | "devDependencies": { 18 | "@types/react": "^18.0.17", 19 | "@types/react-dom": "^18.0.6", 20 | "@vitejs/plugin-react": "^2.1.0", 21 | "typescript": "^4.6.4", 22 | "vite": "^3.1.0" 23 | } 24 | } -------------------------------------------------------------------------------- /examples/ant-design/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "lib": ["DOM", "DOM.Iterable", "ESNext"], 6 | "allowJs": false, 7 | "skipLibCheck": true, 8 | "esModuleInterop": false, 9 | "allowSyntheticDefaultImports": true, 10 | "strict": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "module": "ESNext", 13 | "moduleResolution": "Node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "noEmit": true, 17 | "jsx": "react-jsx" 18 | }, 19 | "include": ["src"], 20 | "references": [{ "path": "./tsconfig.node.json" }] 21 | } 22 | -------------------------------------------------------------------------------- /packages/core/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@table-merge/core", 3 | "version": "1.0.2", 4 | "type": "module", 5 | "module": "dist/index.mjs", 6 | "main": "dist/index.cjs", 7 | "types": "dist/index.d.ts", 8 | "files": [ 9 | "dist" 10 | ], 11 | "scripts": { 12 | "build": "vite build --config vite.config.ts" 13 | }, 14 | "description": "极佳、极简、通用的表格合并方案,已提供多个 UI 框架开箱即用。", 15 | "keywords": [ 16 | "table-merge" 17 | ], 18 | "author": "岳晓亮", 19 | "license": "ISC", 20 | "homepage": "https://github.com/yuexiaoliang/table-merge", 21 | "repository": { 22 | "type": "git", 23 | "url": "https://github.com/yuexiaoliang/table-merge.git" 24 | } 25 | } -------------------------------------------------------------------------------- /packages/table-merge/README.md: -------------------------------------------------------------------------------- 1 | # table-merge 2 | 3 | ## @table-merge/core 4 | 5 | [参考文档](https://github.com/yuexiaoliang/table-merge/tree/master/packages/core) 6 | 7 | ## @table-merge/ant-design 8 | 9 | [参考文档](https://github.com/yuexiaoliang/table-merge/tree/master/packages/ant-design) 10 | 11 | ## @table-merge/ant-design-vue 12 | 13 | [参考文档](https://github.com/yuexiaoliang/table-merge/tree/master/packages/ant-design-vue) 14 | 15 | ## @table-merge/element-ui 16 | 17 | [参考文档](https://github.com/yuexiaoliang/table-merge/tree/master/packages/element-ui) 18 | 19 | ## @table-merge/element-plus 20 | 21 | [参考文档](https://github.com/yuexiaoliang/table-merge/tree/master/packages/element-plus) 22 | 23 | ## License 24 | 25 | MIT 26 | -------------------------------------------------------------------------------- /vite.build.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite'; 2 | import dts from 'vite-plugin-dts'; 3 | 4 | export default (name: string) => 5 | defineConfig({ 6 | plugins: [ 7 | dts({ 8 | skipDiagnostics: false, 9 | logDiagnostics: true, 10 | insertTypesEntry: true 11 | }) 12 | ], 13 | build: { 14 | lib: { 15 | entry: 'index.ts', 16 | name, 17 | formats: ['cjs', 'es', 'iife'], 18 | fileName: (module) => { 19 | if (module === 'iife') return 'index.min.js'; 20 | if (module === 'cjs') return 'index.cjs'; 21 | if (module === 'es') return 'index.mjs'; 22 | return 'index.js'; 23 | } 24 | } 25 | } 26 | }); 27 | -------------------------------------------------------------------------------- /packages/ant-design/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@table-merge/ant-design", 3 | "version": "1.0.1", 4 | "type": "module", 5 | "module": "dist/index.mjs", 6 | "main": "dist/index.cjs", 7 | "types": "dist/index.d.ts", 8 | "files": [ 9 | "dist" 10 | ], 11 | "scripts": { 12 | "build": "vite build --config vite.config.ts" 13 | }, 14 | "description": "极佳、极简、通用的表格合并方案,ant-design 开箱即用。", 15 | "keywords": [ 16 | "ant-design", 17 | "table-merge" 18 | ], 19 | "author": "岳晓亮", 20 | "license": "ISC", 21 | "homepage": "https://github.com/yuexiaoliang/table-merge", 22 | "repository": { 23 | "type": "git", 24 | "url": "https://github.com/yuexiaoliang/table-merge.git" 25 | }, 26 | "dependencies": { 27 | "@table-merge/core": "workspace:*" 28 | } 29 | } -------------------------------------------------------------------------------- /packages/element-plus/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@table-merge/element-plus", 3 | "version": "1.0.1", 4 | "type": "module", 5 | "module": "dist/index.mjs", 6 | "main": "dist/index.cjs", 7 | "types": "dist/index.d.ts", 8 | "files": [ 9 | "dist" 10 | ], 11 | "scripts": { 12 | "build": "vite build --config vite.config.ts" 13 | }, 14 | "description": "极佳、极简、通用的表格合并方案,element-plus 开箱即用。", 15 | "keywords": [ 16 | "element-plus", 17 | "table-merge" 18 | ], 19 | "author": "岳晓亮", 20 | "license": "ISC", 21 | "homepage": "https://github.com/yuexiaoliang/table-merge", 22 | "repository": { 23 | "type": "git", 24 | "url": "https://github.com/yuexiaoliang/table-merge.git" 25 | }, 26 | "dependencies": { 27 | "@table-merge/core": "workspace:*" 28 | } 29 | } -------------------------------------------------------------------------------- /packages/element-ui/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@table-merge/element-ui", 3 | "version": "1.0.1", 4 | "type": "module", 5 | "module": "dist/index.mjs", 6 | "main": "dist/index.cjs", 7 | "types": "dist/index.d.ts", 8 | "files": [ 9 | "dist" 10 | ], 11 | "scripts": { 12 | "build": "vite build --config vite.config.ts" 13 | }, 14 | "description": "极佳、极简、通用的表格合并方案,element-ui 开箱即用。", 15 | "keywords": [ 16 | "element-ui", 17 | "table-merge" 18 | ], 19 | "author": "岳晓亮", 20 | "license": "ISC", 21 | "homepage": "https://github.com/yuexiaoliang/table-merge", 22 | "repository": { 23 | "type": "git", 24 | "url": "https://github.com/yuexiaoliang/table-merge.git" 25 | }, 26 | "dependencies": { 27 | "@table-merge/element-plus": "workspace:*" 28 | } 29 | } -------------------------------------------------------------------------------- /packages/ant-design-vue/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@table-merge/ant-design-vue", 3 | "version": "1.0.1", 4 | "type": "module", 5 | "module": "dist/index.mjs", 6 | "main": "dist/index.cjs", 7 | "types": "dist/index.d.ts", 8 | "files": [ 9 | "dist" 10 | ], 11 | "scripts": { 12 | "build": "vite build --config vite.config.ts" 13 | }, 14 | "description": "极佳、极简、通用的表格合并方案,ant-design-vue 开箱即用。", 15 | "keywords": [ 16 | "ant-design-vue", 17 | "table-merge" 18 | ], 19 | "author": "岳晓亮", 20 | "license": "ISC", 21 | "homepage": "https://github.com/yuexiaoliang/table-merge", 22 | "repository": { 23 | "type": "git", 24 | "url": "https://github.com/yuexiaoliang/table-merge.git" 25 | }, 26 | "dependencies": { 27 | "@table-merge/core": "workspace:*" 28 | } 29 | } -------------------------------------------------------------------------------- /packages/core/src/utils.test.ts: -------------------------------------------------------------------------------- 1 | import { test, expect, describe } from 'vitest'; 2 | import { isArray, isNumber, isObject } from './utils'; 3 | 4 | describe('utils', () => { 5 | const values = [123, 'abc', null, {}, []]; 6 | 7 | test('utils => isNumber', () => { 8 | values.forEach((v, i) => { 9 | if (i === 0) { 10 | expect(isNumber(v)).toBeTruthy(); 11 | } else { 12 | expect(isNumber(v)).toBeFalsy(); 13 | } 14 | }); 15 | }); 16 | 17 | test('utils => isObject', () => { 18 | values.forEach((v, i) => { 19 | if (i === 3) { 20 | expect(isObject(v)).toBeTruthy(); 21 | } else { 22 | expect(isObject(v)).toBeFalsy(); 23 | } 24 | }); 25 | }); 26 | 27 | test('utils => isArray', () => { 28 | values.forEach((v, i) => { 29 | if (i === 4) { 30 | expect(isArray(v)).toBeTruthy(); 31 | } else { 32 | expect(isArray(v)).toBeFalsy(); 33 | } 34 | }); 35 | }); 36 | }); 37 | -------------------------------------------------------------------------------- /packages/element-plus/index.ts: -------------------------------------------------------------------------------- 1 | import { createTableMerge, getTableMerged } from '@table-merge/core'; 2 | import type { TableMergeOptions, TableMergeSpanTypes } from '@table-merge/core'; 3 | 4 | interface SpanMethodProps { 5 | rowIndex: number; 6 | columnIndex: number; 7 | } 8 | 9 | export interface TableMergeElementPlusOptions extends TableMergeOptions { 10 | spanType?: TableMergeSpanTypes; 11 | } 12 | 13 | export default (data: any[], options?: TableMergeElementPlusOptions) => { 14 | const { spanType = 'rowSpan', keys, range } = options || {}; 15 | 16 | const table = createTableMerge(data, { keys, range }); 17 | const merged = getTableMerged(table); 18 | if (!merged) return; 19 | 20 | return ({ rowIndex, columnIndex }: SpanMethodProps) => { 21 | const cell = merged[rowIndex][columnIndex]; 22 | 23 | const result = { 24 | rowspan: spanType === 'rowSpan' ? cell[0] : 1, 25 | colspan: spanType === 'colSpan' ? cell[1] : 1 26 | }; 27 | return result; 28 | }; 29 | }; 30 | -------------------------------------------------------------------------------- /packages/ant-design/index.ts: -------------------------------------------------------------------------------- 1 | import { createTableMerge, getTableMerged } from '@table-merge/core'; 2 | import type { TableMergeOptions, TableMergeSpanTypes } from '@table-merge/core'; 3 | 4 | export interface TableMergeAntDesignOptions extends TableMergeOptions { 5 | spanType?: TableMergeSpanTypes; 6 | } 7 | 8 | export default (data: any[], columns: any[], options?: TableMergeAntDesignOptions) => { 9 | const { spanType = 'rowSpan', keys, range } = options || {}; 10 | 11 | const table = createTableMerge(data, { keys, range }); 12 | const merged = getTableMerged(table); 13 | if (!merged) return; 14 | 15 | return columns.map((col, colIndex) => { 16 | return { 17 | ...col, 18 | onCell(_: any, rowIndex: number) { 19 | const cell = merged[rowIndex][colIndex]; 20 | const result = { 21 | rowSpan: spanType === 'rowSpan' ? cell[0] : 1, 22 | colSpan: spanType === 'colSpan' ? cell[1] : 1 23 | }; 24 | return result; 25 | } 26 | }; 27 | }); 28 | }; 29 | -------------------------------------------------------------------------------- /packages/ant-design-vue/index.ts: -------------------------------------------------------------------------------- 1 | import { createTableMerge, getTableMerged } from '@table-merge/core'; 2 | import type { TableMergeOptions, TableMergeSpanTypes } from '@table-merge/core'; 3 | 4 | export interface TableMergeAntDesignVueOptions extends TableMergeOptions { 5 | spanType?: TableMergeSpanTypes; 6 | } 7 | 8 | export default (data: any[], columns: any[], options?: TableMergeAntDesignVueOptions) => { 9 | const { spanType = 'rowSpan', keys, range } = options || {}; 10 | 11 | const table = createTableMerge(data, { keys, range }); 12 | const merged = getTableMerged(table); 13 | if (!merged) return; 14 | 15 | return columns.map((col, colIndex) => { 16 | return { 17 | ...col, 18 | customCell(_: any, rowIndex: number) { 19 | const cell = merged[rowIndex][colIndex]; 20 | const result = { 21 | rowSpan: spanType === 'rowSpan' ? cell[0] : 1, 22 | colSpan: spanType === 'colSpan' ? cell[1] : 1 23 | }; 24 | return result; 25 | } 26 | }; 27 | }); 28 | }; 29 | -------------------------------------------------------------------------------- /packages/core/types/index.d.ts: -------------------------------------------------------------------------------- 1 | export type RangeValue = number | [number, number]; 2 | 3 | export type OptionsKeys = (string | number)[]; 4 | 5 | export interface OptionsRange { 6 | row?: RangeValue; 7 | col?: RangeValue; 8 | } 9 | 10 | export interface UserOptions { 11 | keys?: OptionsKeys; 12 | range?: OptionsRange; 13 | } 14 | 15 | export interface OptionsResolved { 16 | keys: OptionsKeys; 17 | range: Required; 18 | } 19 | 20 | export interface ListItem { 21 | [key: string]: any; 22 | } 23 | 24 | export type TableData = ListItem[]; 25 | 26 | export interface TableCell { 27 | rowSpan: number; 28 | colSpan: number; 29 | value: any; 30 | } 31 | 32 | export type TableRow = TableCell[]; 33 | export type Table = TableRow[]; 34 | 35 | export type CreateTableResult = Table | null | undefined; 36 | 37 | export interface RangeStartEnd { 38 | rowStart: number; 39 | rowEnd: number; 40 | colStart: number; 41 | colEnd: number; 42 | } 43 | 44 | export type SpanTypes = keyof Omit; 45 | -------------------------------------------------------------------------------- /packages/core/src/init.test.ts: -------------------------------------------------------------------------------- 1 | import { test, expect, describe } from 'vitest'; 2 | import { initTable, initOptions, defaultCell } from './init'; 3 | import { KEYS_TYPE_ERROR, RANGE_TYPE_ERROR } from './constants'; 4 | import { keys, data } from './index.test'; 5 | 6 | describe('initTable', () => { 7 | const row = keys.map(() => ({ ...defaultCell })); 8 | 9 | test('initTable => initTable', () => { 10 | expect(initTable(data, keys)).toEqual(data.map(() => row)); 11 | }); 12 | }); 13 | 14 | describe('initOptions', () => { 15 | test('option.keys => error', () => { 16 | // @ts-ignore 17 | expect(() => initOptions(data, { keys: 123 })).toThrowError(KEYS_TYPE_ERROR); 18 | 19 | // @ts-ignore 20 | expect(() => initOptions(data, { keys: [123, null] })).toThrowError(KEYS_TYPE_ERROR); 21 | }); 22 | 23 | test('option.range => error', () => { 24 | // @ts-ignore 25 | expect(() => initOptions(data, { range: 'abc' })).toThrowError(RANGE_TYPE_ERROR); 26 | 27 | expect(() => 28 | // @ts-ignore 29 | initOptions(data, { range: { col: 'abc', row: 2 } }) 30 | ).toThrowError(RANGE_TYPE_ERROR); 31 | }); 32 | }); 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022-present, Xiaoliang Yue 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /packages/core/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022-present, Xiaoliang Yue 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /packages/ant-design/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022-present, Xiaoliang Yue 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /packages/element-ui/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022-present, Xiaoliang Yue 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /packages/table-merge/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022-present, Xiaoliang Yue 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /packages/ant-design-vue/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022-present, Xiaoliang Yue 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /packages/element-plus/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022-present, Xiaoliang Yue 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /packages/table-merge/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "table-merge", 3 | "version": "1.0.2", 4 | "type": "module", 5 | "module": "dist/index.mjs", 6 | "main": "dist/index.cjs", 7 | "types": "dist/index.d.ts", 8 | "files": [ 9 | "dist" 10 | ], 11 | "scripts": { 12 | "build": "vite build --config vite.config.ts" 13 | }, 14 | "description": "极佳、极简、通用的表格合并方案,已提供多个 UI 框架开箱即用。", 15 | "keywords": [ 16 | "ant-design", 17 | "ant-design-vue", 18 | "element-ui", 19 | "element-plus", 20 | "table-merge", 21 | "@table-merge/core", 22 | "@table-merge/ant-design", 23 | "@table-merge/ant-design-vue", 24 | "@table-merge/element-ui", 25 | "@table-merge/element-plus" 26 | ], 27 | "author": "岳晓亮", 28 | "license": "ISC", 29 | "homepage": "https://github.com/yuexiaoliang/table-merge", 30 | "repository": { 31 | "type": "git", 32 | "url": "https://github.com/yuexiaoliang/table-merge.git" 33 | }, 34 | "dependencies": { 35 | "@table-merge/ant-design": "workspace:*", 36 | "@table-merge/ant-design-vue": "workspace:*", 37 | "@table-merge/core": "workspace:*", 38 | "@table-merge/element-plus": "workspace:*", 39 | "@table-merge/element-ui": "workspace:*" 40 | } 41 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # table-merge 2 | 3 | 极佳、极简、通用的表格合并方案,已提供多个 UI 框架开箱即用。 4 | 5 | ## 开箱即用的 UI 库 6 | 7 | 指以针对框架进行进一步封装,直接引用即可使用。 8 | 9 | - [x] [Element-UI](https://github.com/yuexiaoliang/table-merge/tree/master/packages/element-ui) 10 | 11 | - [x] [Element Plus](https://github.com/yuexiaoliang/table-merge/tree/master/packages/element-plus) 12 | 13 | - [x] [Ant Design](https://github.com/yuexiaoliang/table-merge/tree/master/packages/ant-design) 14 | 15 | - [x] [Ant Design Vue](https://github.com/yuexiaoliang/table-merge/tree/master/packages/ant-design-vue) 16 | 17 | ## 计划支持 18 | 19 | - [ ] Naive Ui 20 | 21 | 上列框架计划支持开箱即用,如过需要支持其他框架也可以到 Github 提个 Issue,或者通过 `@table-merge/core` 导出的方法自己封装也可以,参考:[packages/ant-design-vue/index.ts](https://github.com/yuexiaoliang/table-merge/blob/master/packages/ant-design-vue/index.ts) 或 [packages/element-plus/index.ts](https://github.com/yuexiaoliang/table-merge/blob/master/packages/element-plus/index.ts)。 22 | 23 | 理论上来讲,支持设置 `rowspan` 和 `colspan` 的 UI 框架都是可以支持的,期待小伙伴们一起参与建设。 24 | 25 | ## 设计思路 26 | 27 | 参考:[极佳、极简、通用的表格(Table)合并单元格方案](https://zhuanlan.zhihu.com/p/570554694) 28 | 29 | ## TODO 30 | 31 | - [ ] 文档系统 32 | 33 | - [x] 整合示例项目 34 | 35 | - [x] 代码重构优化 36 | 37 | - [x] 算法优化 38 | 39 | ## License 40 | 41 | MIT 42 | -------------------------------------------------------------------------------- /packages/core/src/init.ts: -------------------------------------------------------------------------------- 1 | import { TableData, OptionsKeys, Table, TableCell, TableRow, UserOptions, OptionsResolved } from '../types'; 2 | import { KEYS_TYPE_ERROR, RANGE_TYPE_ERROR } from './constants'; 3 | import { isArray, isObject, isNumber } from './utils'; 4 | 5 | export const defaultCell = { 6 | rowSpan: 1, 7 | colSpan: 1, 8 | value: null 9 | }; 10 | 11 | export function initTable(data: TableData, keys: OptionsKeys): Table { 12 | const createCell = (): TableCell => ({ ...defaultCell }); 13 | const createRow = (): TableRow => Array.from({ length: keys.length }, createCell); 14 | 15 | return Array.from({ length: data.length }, () => createRow()); 16 | } 17 | 18 | export function initOptions(data: TableData, option: UserOptions): OptionsResolved { 19 | const { keys, range = {} } = option; 20 | 21 | if (keys) { 22 | if (!isArray(keys)) { 23 | throw new TypeError(KEYS_TYPE_ERROR); 24 | } 25 | 26 | if (keys.some((v) => !['string', 'number'].includes(typeof v))) { 27 | throw new TypeError(KEYS_TYPE_ERROR); 28 | } 29 | } 30 | 31 | if (range) { 32 | if (!isObject(range)) { 33 | throw new TypeError(RANGE_TYPE_ERROR); 34 | } 35 | 36 | const { row, col } = range; 37 | 38 | if ((row && !isNumber(row) && !isArray(row)) || (col && !isNumber(col) && !isArray(col))) { 39 | throw new TypeError(RANGE_TYPE_ERROR); 40 | } 41 | } 42 | 43 | const { row, col } = range; 44 | return { 45 | keys: keys || Object.keys(data[0]), 46 | range: { 47 | row: row || 0, 48 | col: col || 0 49 | } 50 | }; 51 | } 52 | -------------------------------------------------------------------------------- /packages/core/src/handler.ts: -------------------------------------------------------------------------------- 1 | import { TableData, UserOptions, CreateTableResult, TableCell, SpanTypes } from '../types'; 2 | import { getRangeStartEnd } from './functional'; 3 | import { initOptions, initTable } from './init'; 4 | 5 | export function tableHandler(data: TableData, options?: UserOptions): CreateTableResult { 6 | const opts = initOptions(data, options || {}); 7 | 8 | const { keys, range } = opts; 9 | if (!keys) return; 10 | if (data.length === 0) return; 11 | 12 | let table = initTable(data, keys); 13 | 14 | const { rowStart, rowEnd, colStart, colEnd } = getRangeStartEnd(table, range); 15 | 16 | let prevRows: TableCell[] = []; 17 | let prevCols: TableCell[] = []; 18 | 19 | table.forEach((row, rowIndex) => { 20 | const dataRow = data[rowIndex]; 21 | 22 | row.forEach((cell, colIndex) => { 23 | cell.value = dataRow[keys[colIndex]]; 24 | 25 | if (colIndex >= colStart && colIndex < colEnd && rowIndex >= rowStart && rowIndex < rowEnd) { 26 | setSpan('rowSpan', prevRows, colIndex, cell); 27 | setSpan('colSpan', prevCols, rowIndex, cell); 28 | } 29 | }); 30 | }); 31 | 32 | return table; 33 | } 34 | 35 | export function setSpan(spanType: SpanTypes, prevList: TableCell[], prevIndex: number, current: TableCell) { 36 | const prev = prevList[prevIndex]; 37 | if (!prev) { 38 | prevList[prevIndex] = current; 39 | return; 40 | } 41 | 42 | if (prev.value === current.value) { 43 | prev[spanType] = prev[spanType] + 1; 44 | current[spanType] = 0; 45 | } else { 46 | prevList[prevIndex] = current; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /packages/ant-design-vue/README.md: -------------------------------------------------------------------------------- 1 | # @table-merge/ant-design-vue 2 | 3 | 极佳、极简的 [ant-design-vue](https://github.com/vueComponent/ant-design-vue) 表格合并方案。 4 | 5 | ## Getting Started 6 | 7 | **Installation** 8 | 9 | ```bash 10 | $ npm install @table-merge/ant-design-vue 11 | 12 | # or 13 | $ yarn add @table-merge/ant-design-vue 14 | 15 | # or 16 | $ pnpm add @table-merge/ant-design-vue 17 | ``` 18 | 19 | ## Usage 20 | 21 | ```jsx 22 | import tableMerge from '@table-merge/ant-design-vue'; 23 | 24 | const data = [ 25 | { id: 1, a: 8, b: 8, c: 2, d: 0 }, 26 | { id: 2, a: 2, b: 4, c: 4, d: 5 }, 27 | { id: 3, a: 8, b: 8, c: 4, d: 4 }, 28 | { id: 4, a: 5, b: 8, c: 4, d: 1 }, 29 | { id: 5, a: 5, b: 3, c: 3, d: 2 } 30 | ]; 31 | 32 | const columns = [ 33 | { dataIndex: 'id', label: 'ID' }, 34 | { dataIndex: 'a', label: 'A列' }, 35 | { dataIndex: 'b', label: 'B列' }, 36 | { dataIndex: 'c', label: 'C列' }, 37 | { dataIndex: 'd', label: 'D列' } 38 | ]; 39 | 40 | 41 | ``` 42 | 43 | ## API 44 | 45 | **data** 46 | 表格的数据。 47 | 48 | **columns** 49 | 见 [Table Column - Ant Design Vue](https://www.antdv.com/components/table-cn#Column)。 50 | 51 | **options** 52 | 53 | - **keys** 54 | type: `string[]` 55 | 指定 `data` 中哪些列是在 `Table` 中渲染的 56 | 57 | - **range** 58 | type: `number` | `[start: number, end: number]` 59 | 60 | 当为 `number` 时,表示合并开始行或列; 61 | 62 | 当为 `[start: number, end: number]` 时,表示[合并开始行/列,合并结束行/列]; 63 | 64 | - **spanType** 65 | type: `rowSpan` | `colSpan` 66 | default: `rowSpan` 67 | 68 | 指定要合并行还是合并列 69 | 70 | ## Examples 71 | 72 | ![alt examples](./examples.png) 73 | 74 | ## License 75 | 76 | MIT 77 | -------------------------------------------------------------------------------- /packages/element-ui/README.md: -------------------------------------------------------------------------------- 1 | # @table-merge/element-ui 2 | 3 | 极佳、极简的 [element-ui](https://github.com/ElemeFE/element) 表格合并方案。 4 | 5 | ## Getting Started 6 | 7 | **Installation** 8 | 9 | ```bash 10 | $ npm install @table-merge/element-ui 11 | 12 | # or 13 | $ yarn add @table-merge/element-ui 14 | 15 | # or 16 | $ pnpm add @table-merge/element-ui 17 | ``` 18 | 19 | ## Usage 20 | 21 | ```jsx 22 | import tableMerge from '@table-merge/element-ui'; 23 | 24 | const data = [ 25 | { id: 1, a: 8, b: 8, c: 2, d: 0 }, 26 | { id: 2, a: 2, b: 4, c: 4, d: 5 }, 27 | { id: 3, a: 8, b: 8, c: 4, d: 4 }, 28 | { id: 4, a: 5, b: 8, c: 4, d: 1 }, 29 | { id: 5, a: 5, b: 3, c: 3, d: 2 } 30 | ]; 31 | 32 | const columns = [ 33 | { prop: 'id', label: 'ID', align: 'center' }, 34 | { prop: 'a', label: 'A列', align: 'center' }, 35 | { prop: 'b', label: 'B列', align: 'center' }, 36 | { prop: 'c', label: 'C列', align: 'center' }, 37 | { prop: 'd', label: 'D列', align: 'center' } 38 | ]; 39 | 40 | 41 | 42 | 43 | ``` 44 | 45 | ## API 46 | 47 | **data** 48 | 表格的数据。 49 | 50 | **options** 51 | 52 | - **keys** 53 | type: `string[]` 54 | 指定 `data` 中哪些列是在 `Table` 中渲染的 55 | 56 | - **range** 57 | type: `number` | `[start: number, end: number]` 58 | 59 | 当为 `number` 时,表示合并开始行或列; 60 | 61 | 当为 `[start: number, end: number]` 时,表示[合并开始行/列,合并结束行/列]; 62 | 63 | - **spanType** 64 | type: `rowSpan` | `colSpan` 65 | default: `rowSpan` 66 | 67 | 指定要合并行还是合并列 68 | 69 | ## Examples 70 | 71 | ![alt examples](./examples.png) 72 | 73 | ## License 74 | 75 | MIT 76 | -------------------------------------------------------------------------------- /packages/element-plus/README.md: -------------------------------------------------------------------------------- 1 | # @table-merge/element-plus 2 | 3 | 极佳、极简的 [element-plus](https://github.com/element-plus/element-plus) 表格合并方案。 4 | 5 | ## Getting Started 6 | 7 | **Installation** 8 | 9 | ```bash 10 | $ npm install @table-merge/element-plus 11 | 12 | # or 13 | $ yarn add @table-merge/element-plus 14 | 15 | # or 16 | $ pnpm add @table-merge/element-plus 17 | ``` 18 | 19 | ## Usage 20 | 21 | ```jsx 22 | import tableMerge from '@table-merge/element-plus'; 23 | 24 | const data = [ 25 | { id: 1, a: 8, b: 8, c: 2, d: 0 }, 26 | { id: 2, a: 2, b: 4, c: 4, d: 5 }, 27 | { id: 3, a: 8, b: 8, c: 4, d: 4 }, 28 | { id: 4, a: 5, b: 8, c: 4, d: 1 }, 29 | { id: 5, a: 5, b: 3, c: 3, d: 2 } 30 | ]; 31 | 32 | const columns = [ 33 | { prop: 'id', label: 'ID', align: 'center' }, 34 | { prop: 'a', label: 'A列', align: 'center' }, 35 | { prop: 'b', label: 'B列', align: 'center' }, 36 | { prop: 'c', label: 'C列', align: 'center' }, 37 | { prop: 'd', label: 'D列', align: 'center' } 38 | ]; 39 | 40 | 41 | 42 | 43 | ``` 44 | 45 | ## API 46 | 47 | **data** 48 | 表格的数据。 49 | 50 | **options** 51 | 52 | - **keys** 53 | type: `string[]` 54 | 指定 `data` 中哪些列是在 `Table` 中渲染的 55 | 56 | - **range** 57 | type: `number` | `[start: number, end: number]` 58 | 59 | 当为 `number` 时,表示合并开始行或列; 60 | 61 | 当为 `[start: number, end: number]` 时,表示[合并开始行/列,合并结束行/列]; 62 | 63 | - **spanType** 64 | type: `rowSpan` | `colSpan` 65 | default: `rowSpan` 66 | 67 | 指定要合并行还是合并列 68 | 69 | ## Examples 70 | 71 | ![alt examples](./examples.png) 72 | 73 | ## License 74 | 75 | MIT 76 | -------------------------------------------------------------------------------- /packages/ant-design/README.md: -------------------------------------------------------------------------------- 1 | # @table-merge/ant-design 2 | 3 | 极佳、极简的 [ant-design](https://github.com/ant-design/ant-design) 表格合并方案。 4 | 5 | ## Getting Started 6 | 7 | **Installation** 8 | 9 | ```bash 10 | $ npm install @table-merge/ant-design 11 | 12 | # or 13 | $ yarn add @table-merge/ant-design 14 | 15 | # or 16 | $ pnpm add @table-merge/ant-design 17 | ``` 18 | 19 | ## Usage 20 | 21 | ```jsx 22 | import tableMerge from '@table-merge/ant-design'; 23 | 24 | const data = [ 25 | { key: 1, a: 8, b: 8, c: 2, d: 0 }, 26 | { key: 2, a: 2, b: 4, c: 4, d: 5 }, 27 | { key: 3, a: 8, b: 8, c: 4, d: 4 }, 28 | { key: 4, a: 5, b: 8, c: 4, d: 1 }, 29 | { key: 5, a: 5, b: 3, c: 3, d: 2 } 30 | ]; 31 | 32 | const columns = [ 33 | { align: 'center', dataIndex: 'key', title: 'ID' }, 34 | { align: 'center', dataIndex: 'a', title: 'A列' }, 35 | { align: 'center', dataIndex: 'b', title: 'B列' }, 36 | { align: 'center', dataIndex: 'c', title: 'C列' }, 37 | { align: 'center', dataIndex: 'd', title: 'D列' } 38 | ]; 39 | 40 | ; 41 | ``` 42 | 43 | ## API 44 | 45 | **data** 46 | 表格的数据。 47 | 48 | **columns** 49 | 见 [Table Column - Ant Design](https://ant.design/components/table/#Column)。 50 | 51 | **options** 52 | 53 | - **keys** 54 | type: `string[]` 55 | 指定 `data` 中哪些列是在 `Table` 中渲染的 56 | 57 | - **range** 58 | type: `number` | `[start: number, end: number]` 59 | 60 | 当为 `number` 时,表示合并开始行或列; 61 | 62 | 当为 `[start: number, end: number]` 时,表示[合并开始行/列,合并结束行/列]; 63 | 64 | - **spanType** 65 | type: `rowSpan` | `colSpan` 66 | default: `rowSpan` 67 | 68 | 指定要合并行还是合并列 69 | 70 | ## Examples 71 | 72 | ![alt examples](./examples.png) 73 | 74 | ## License 75 | 76 | MIT 77 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0.2", 3 | "main": "index.ts", 4 | "scripts": { 5 | "test": "vitest", 6 | "test:watch": "vitest watch", 7 | "coverage": "vitest run --coverage", 8 | "dev:examples": "pnpm --filter ./examples/** run -r dev", 9 | "build": "pnpm --filter ./packages/** run -r build", 10 | "release": "pnpm --filter ./packages/** publish -r --access public" 11 | }, 12 | "description": "极佳、极简、通用的表格合并方案,已提供多个 UI 框架开箱即用。", 13 | "keywords": [ 14 | "ant-design", 15 | "ant-design-vue", 16 | "element-ui", 17 | "element-plus", 18 | "table-merge", 19 | "@table-merge/core", 20 | "@table-merge/ant-design", 21 | "@table-merge/ant-design-vue", 22 | "@table-merge/element-ui", 23 | "@table-merge/element-plus" 24 | ], 25 | "author": "岳晓亮", 26 | "license": "ISC", 27 | "homepage": "https://github.com/yuexiaoliang/table-merge", 28 | "repository": { 29 | "type": "git", 30 | "url": "https://github.com/yuexiaoliang/table-merge.git" 31 | }, 32 | "devDependencies": { 33 | "@table-merge/ant-design": "workspace:*", 34 | "@table-merge/ant-design-vue": "workspace:*", 35 | "@table-merge/core": "workspace:*", 36 | "@table-merge/element-plus": "workspace:*", 37 | "@table-merge/element-ui": "workspace:*", 38 | "@types/node": "^18.8.2", 39 | "@vitejs/plugin-vue": "^3.1.2", 40 | "@vitejs/plugin-vue-jsx": "^2.0.1", 41 | "@vitest/coverage-c8": "^0.23.4", 42 | "ant-design-vue": "^3.2.12", 43 | "element-plus": "^2.2.17", 44 | "sass": "^1.55.0", 45 | "table-merge": "workspace:*", 46 | "typescript": "^4.8.4", 47 | "vite": "^3.1.4", 48 | "vite-plugin-dts": "^1.6.4", 49 | "vitest": "^0.23.4", 50 | "vue": "^3.2.40" 51 | } 52 | } -------------------------------------------------------------------------------- /packages/core/README.md: -------------------------------------------------------------------------------- 1 | # @table-merge/core 2 | 3 | ## API 4 | 5 | ### createTableMerge 6 | 7 | 根据表格数据创建包含 `rowspan` 以及 `colspan` 的虚拟表格。 8 | 9 | **Type:** 10 | 11 | ```ts 12 | function createTableMerge(data: TableData, options?: TableMergeOptions): CreateTableResult; 13 | ``` 14 | 15 | ### getTableMerged 16 | 17 | 根据虚拟表格获取可用的 `rowspan` 以及 `colspan` 数据。 18 | 19 | **Type:** 20 | 21 | ```ts 22 | function getTableMerged(table: CreateTableResult): number[][][] | null; 23 | function getTableMerged(table: CreateTableResult, spanType: SpanTypes): number[][] | null; 24 | ``` 25 | 26 | ## Example 27 | 28 | 如下是 [@table-merge/element-plus](https://github.com/yuexiaoliang/table-merge/tree/master/packages/element-plus) 的实现: 29 | 30 | ```ts 31 | import { createTableMerge, getTableMerged } from '@table-merge/core'; 32 | import type { TableMergeOptions, TableMergeSpanTypes } from '@table-merge/core'; 33 | 34 | interface SpanMethodProps { 35 | rowIndex: number; 36 | columnIndex: number; 37 | } 38 | 39 | export interface TableMergeElementPlusOptions extends TableMergeOptions { 40 | spanType?: TableMergeSpanTypes; 41 | } 42 | 43 | export default (data: any[], options?: TableMergeElementPlusOptions) => { 44 | const { spanType = 'rowSpan', keys, range } = options || {}; 45 | 46 | const table = createTableMerge(data, { keys, range }); 47 | const merged = getTableMerged(table); 48 | if (!merged) return; 49 | 50 | return ({ rowIndex, columnIndex }: SpanMethodProps) => { 51 | const cell = merged[rowIndex][columnIndex]; 52 | 53 | const result = { 54 | rowspan: spanType === 'rowSpan' ? cell[0] : 1, 55 | colspan: spanType === 'colSpan' ? cell[1] : 1 56 | }; 57 | return result; 58 | }; 59 | }; 60 | ``` 61 | 62 | ## License 63 | 64 | MIT 65 | -------------------------------------------------------------------------------- /packages/core/src/functional.ts: -------------------------------------------------------------------------------- 1 | import { CreateTableResult, ListItem, OptionsRange, RangeStartEnd, SpanTypes, Table } from '../types'; 2 | import { TABLE_MERGED_ERROR } from './constants'; 3 | 4 | export function getTableMerged(table: CreateTableResult): number[][][] | null; 5 | export function getTableMerged(table: CreateTableResult, spanType: SpanTypes): number[][] | null; 6 | export function getTableMerged(table: CreateTableResult, spanType?: SpanTypes) { 7 | if (!table) return null; 8 | 9 | if (!spanType) { 10 | const result = table.map((row) => row.map((cell) => [cell['rowSpan'], cell['colSpan']])); 11 | 12 | return result; 13 | } 14 | 15 | if (spanType !== 'rowSpan' && spanType !== 'colSpan') { 16 | throw new TypeError(TABLE_MERGED_ERROR); 17 | } 18 | 19 | const result = table.map((row) => row.map((cell) => cell[spanType])); 20 | return result; 21 | } 22 | 23 | export function getRangeStartEnd(table: Table, range: Required): RangeStartEnd { 24 | const { row: rowRange, col: colRange } = range; 25 | 26 | let colStart = 0; 27 | let colEnd = table[0].length; 28 | 29 | let rowStart = 0; 30 | let rowEnd = table.length; 31 | 32 | if (typeof colRange === 'number') { 33 | colStart = colRange; 34 | } 35 | 36 | if (Array.isArray(colRange)) { 37 | const [s, e] = colRange; 38 | colStart = s; 39 | colEnd = e; 40 | } 41 | 42 | if (typeof rowRange === 'number') { 43 | rowStart = rowRange; 44 | } 45 | 46 | if (Array.isArray(rowRange)) { 47 | const [s, e] = rowRange; 48 | rowStart = s; 49 | rowEnd = e; 50 | } 51 | 52 | return { rowStart, rowEnd, colStart, colEnd }; 53 | } 54 | 55 | export function setSpan(type: SpanTypes, prev: ListItem, current: ListItem) { 56 | if (prev.value !== current.value) { 57 | return; 58 | } 59 | 60 | current[type] = 0; 61 | prev[type] = prev[type] + 1; 62 | } 63 | -------------------------------------------------------------------------------- /examples/ant-design/src/App.tsx: -------------------------------------------------------------------------------- 1 | import { Table } from 'antd'; 2 | import type { ColumnsType } from 'antd/es/table'; 3 | import React from 'react'; 4 | import 'antd/dist/antd.css'; 5 | import './app.css'; 6 | import tableMerge from '@table-merge/ant-design'; 7 | import type { TableMergeAntDesignOptions } from '@table-merge/ant-design'; 8 | 9 | interface DataType { 10 | key: number; 11 | a: number; 12 | b: number; 13 | c: number; 14 | d: number; 15 | } 16 | 17 | const data: DataType[] = [ 18 | { key: 1, a: 8, b: 8, c: 2, d: 0 }, 19 | { key: 2, a: 2, b: 4, c: 4, d: 5 }, 20 | { key: 3, a: 8, b: 8, c: 4, d: 4 }, 21 | { key: 4, a: 5, b: 8, c: 4, d: 1 }, 22 | { key: 5, a: 5, b: 3, c: 3, d: 2 } 23 | ]; 24 | 25 | const cols: ColumnsType = [ 26 | { align: 'center', dataIndex: 'key', title: 'ID' }, 27 | { align: 'center', dataIndex: 'a', title: 'A列' }, 28 | { align: 'center', dataIndex: 'b', title: 'B列' }, 29 | { align: 'center', dataIndex: 'c', title: 'C列' }, 30 | { align: 'center', dataIndex: 'd', title: 'D列' } 31 | ]; 32 | 33 | interface BoxProps { 34 | title: string; 35 | options?: TableMergeAntDesignOptions; 36 | } 37 | const Box = (props: BoxProps) => { 38 | const opts = props.options; 39 | 40 | return ( 41 | <> 42 |
43 |

{props.title}

44 |
{`tableMerge(data, cols${opts ? ', ' + JSON.stringify(opts) : ''})`}
45 |
46 | 47 | 48 | ); 49 | }; 50 | 51 | const App: React.FC = () => ( 52 | <> 53 |

@table-merge/ant-design example

54 |

合并行

55 | 56 | 57 | 58 | 59 | 60 |

合并列

61 | 62 | 63 | 64 | 65 | 66 |

筛选指定列

67 |
68 |

比如后端返回很多数据,而只渲染某些数据的时候,这时候可以指定没列要渲染的 keys

69 |
 70 |         {`const data = [
 71 |   { key: 1, a: 8, b: 8, c: 2, d: 0 },
 72 |   { key: 2, a: 2, b: 4, c: 4, d: 5 },
 73 |   { key: 3, a: 8, b: 8, c: 4, d: 4 },
 74 |   { key: 4, a: 5, b: 8, c: 4, d: 1 },
 75 |   { key: 5, a: 5, b: 3, c: 3, d: 2 }
 76 | ];
 77 | 
 78 | const cols = [
 79 |   { align: 'center', dataIndex: 'a', title: 'A列' },
 80 |   { align: 'center', dataIndex: 'b', title: 'B列' },
 81 |   { align: 'center', dataIndex: 'c', title: 'C列' },
 82 |   { align: 'center', dataIndex: 'd', title: 'D列' }
 83 | ];
 84 | 
 85 | tableMergeAntDesignVue(
 86 |   data,
 87 |   cols,
 88 |   { keys: ['a', 'b', 'c', 'd'], spanType: 'colSpan' }
 89 | )`}
 90 |       
91 |
col.dataIndex !== 'key'), 95 | { keys: ['a', 'b', 'c', 'd'], spanType: 'colSpan' } 96 | )} 97 | dataSource={data} 98 | pagination={false} 99 | bordered 100 | /> 101 | 102 |
103 | 104 | ); 105 | 106 | export default App; 107 | -------------------------------------------------------------------------------- /examples/ant-design-vue/src/App.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 117 | 118 | 134 | -------------------------------------------------------------------------------- /examples/element-plus/src/App.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 121 | 122 | 138 | -------------------------------------------------------------------------------- /examples/element-ui/src/App.vue: -------------------------------------------------------------------------------- 1 | 103 | 104 | 131 | 132 | 148 | -------------------------------------------------------------------------------- /packages/core/src/functional.test.ts: -------------------------------------------------------------------------------- 1 | import { test, expect, describe } from 'vitest'; 2 | 3 | import { data, keys } from './index.test'; 4 | import { TABLE_MERGED_ERROR } from './constants'; 5 | import { tableHandler } from './handler'; 6 | import { getTableMerged, getRangeStartEnd } from './functional'; 7 | import { initTable } from './init'; 8 | 9 | describe('getRangeStartEnd', () => { 10 | test('option.range = {row: 3, col: 2}', () => { 11 | let table = initTable(data, keys); 12 | expect(getRangeStartEnd(table, { row: 3, col: 2 })).toEqual({ rowStart: 3, rowEnd: 8, colStart: 2, colEnd: 5 }); 13 | }); 14 | 15 | test('option.range = {row: [2, 7], col: [0, 4]}', () => { 16 | let table = initTable(data, keys); 17 | expect(getRangeStartEnd(table, { row: [2, 7], col: [0, 4] })).toEqual({ rowStart: 2, rowEnd: 7, colStart: 0, colEnd: 4 }); 18 | }); 19 | }); 20 | 21 | describe('getTableMerged', () => { 22 | test(`options = { keys: ['a', 'b', 'c', 'd', 'e']}`, () => { 23 | const table = tableHandler(data, { keys }); 24 | 25 | // @ts-ignore 26 | expect(() => getTableMerged(table, 'abc')).toThrowError(TABLE_MERGED_ERROR); 27 | }); 28 | 29 | test('只传 data', () => { 30 | const table = tableHandler(data); 31 | expect(getTableMerged(table, 'colSpan')).toEqual([ 32 | [1, 1, 2, 0, 2, 0], 33 | [1, 1, 3, 0, 0, 1], 34 | [1, 3, 0, 0, 2, 0], 35 | [1, 1, 1, 1, 2, 0], 36 | [1, 3, 0, 0, 2, 0], 37 | [1, 3, 0, 0, 2, 0], 38 | [1, 1, 4, 0, 0, 0], 39 | [1, 2, 0, 3, 0, 0] 40 | ]); 41 | 42 | expect(getTableMerged(table, 'rowSpan')).toEqual([ 43 | [1, 1, 1, 1, 2, 1], 44 | [1, 1, 2, 4, 0, 4], 45 | [1, 3, 0, 0, 3, 0], 46 | [1, 0, 1, 0, 0, 0], 47 | [1, 0, 1, 0, 0, 0], 48 | [1, 3, 1, 1, 3, 3], 49 | [1, 0, 1, 2, 0, 0], 50 | [1, 0, 1, 0, 0, 0] 51 | ]); 52 | }); 53 | 54 | test(`options = { keys: ['a', 'b', 'c', 'd', 'e']}`, () => { 55 | const table = tableHandler(data, { keys }); 56 | expect(getTableMerged(table, 'colSpan')).toEqual([ 57 | [1, 2, 0, 2, 0], 58 | [1, 3, 0, 0, 1], 59 | [3, 0, 0, 2, 0], 60 | [1, 1, 1, 2, 0], 61 | [3, 0, 0, 2, 0], 62 | [3, 0, 0, 2, 0], 63 | [1, 4, 0, 0, 0], 64 | [2, 0, 3, 0, 0] 65 | ]); 66 | 67 | expect(getTableMerged(table, 'rowSpan')).toEqual([ 68 | [1, 1, 1, 2, 1], 69 | [1, 2, 4, 0, 4], 70 | [3, 0, 0, 3, 0], 71 | [0, 1, 0, 0, 0], 72 | [0, 1, 0, 0, 0], 73 | [3, 1, 1, 3, 3], 74 | [0, 1, 2, 0, 0], 75 | [0, 1, 0, 0, 0] 76 | ]); 77 | }); 78 | 79 | test(`options = { keys: ['a', 'b', 'c', 'd', 'e'], range: { row: 3, col: 2 }}`, () => { 80 | const table = tableHandler(data, { keys, range: { row: 3, col: 2 } }); 81 | expect(getTableMerged(table, 'colSpan')).toEqual([ 82 | [1, 1, 1, 1, 1], 83 | [1, 1, 1, 1, 1], 84 | [1, 1, 1, 1, 1], 85 | [1, 1, 1, 2, 0], 86 | [1, 1, 1, 2, 0], 87 | [1, 1, 1, 2, 0], 88 | [1, 1, 3, 0, 0], 89 | [1, 1, 3, 0, 0] 90 | ]); 91 | 92 | expect(getTableMerged(table, 'rowSpan')).toEqual([ 93 | [1, 1, 1, 1, 1], 94 | [1, 1, 1, 1, 1], 95 | [1, 1, 1, 1, 1], 96 | [1, 1, 2, 2, 2], 97 | [1, 1, 0, 0, 0], 98 | [1, 1, 1, 3, 3], 99 | [1, 1, 2, 0, 0], 100 | [1, 1, 0, 0, 0] 101 | ]); 102 | }); 103 | 104 | test(`options = { keys: ['a', 'b', 'c', 'd', 'e'], range: { row: [1, 4], col: [2, 6] }}`, () => { 105 | const table = tableHandler(data, { keys, range: { row: [2, 6], col: [1, 4] } }); 106 | expect(getTableMerged(table, 'colSpan')).toEqual([ 107 | [1, 1, 1, 1, 1], 108 | [1, 1, 1, 1, 1], 109 | [1, 2, 0, 1, 1], 110 | [1, 1, 1, 1, 1], 111 | [1, 2, 0, 1, 1], 112 | [1, 2, 0, 1, 1], 113 | [1, 1, 1, 1, 1], 114 | [1, 1, 1, 1, 1] 115 | ]); 116 | 117 | expect(getTableMerged(table, 'rowSpan')).toEqual([ 118 | [1, 1, 1, 1, 1], 119 | [1, 1, 1, 1, 1], 120 | [1, 1, 3, 3, 1], 121 | [1, 1, 0, 0, 1], 122 | [1, 1, 0, 0, 1], 123 | [1, 1, 1, 1, 1], 124 | [1, 1, 1, 1, 1], 125 | [1, 1, 1, 1, 1] 126 | ]); 127 | }); 128 | 129 | test(`options = { keys: ['a', 'b', 'c', 'd', 'e'], range: { row: [1, 4], col: [2, 6] }}`, () => { 130 | const table = tableHandler(data, { keys, range: { row: [2, 6], col: [1, 4] } }); 131 | 132 | expect(getTableMerged(table)).toEqual([ 133 | [ 134 | [1, 1], 135 | [1, 1], 136 | [1, 1], 137 | [1, 1], 138 | [1, 1] 139 | ], 140 | [ 141 | [1, 1], 142 | [1, 1], 143 | [1, 1], 144 | [1, 1], 145 | [1, 1] 146 | ], 147 | [ 148 | [1, 1], 149 | [1, 2], 150 | [3, 0], 151 | [3, 1], 152 | [1, 1] 153 | ], 154 | [ 155 | [1, 1], 156 | [1, 1], 157 | [0, 1], 158 | [0, 1], 159 | [1, 1] 160 | ], 161 | [ 162 | [1, 1], 163 | [1, 2], 164 | [0, 0], 165 | [0, 1], 166 | [1, 1] 167 | ], 168 | [ 169 | [1, 1], 170 | [1, 2], 171 | [1, 0], 172 | [1, 1], 173 | [1, 1] 174 | ], 175 | [ 176 | [1, 1], 177 | [1, 1], 178 | [1, 1], 179 | [1, 1], 180 | [1, 1] 181 | ], 182 | [ 183 | [1, 1], 184 | [1, 1], 185 | [1, 1], 186 | [1, 1], 187 | [1, 1] 188 | ] 189 | ]); 190 | }); 191 | }); 192 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.4 2 | 3 | importers: 4 | 5 | .: 6 | specifiers: 7 | '@table-merge/ant-design': workspace:* 8 | '@table-merge/ant-design-vue': workspace:* 9 | '@table-merge/core': workspace:* 10 | '@table-merge/element-plus': workspace:* 11 | '@table-merge/element-ui': workspace:* 12 | '@types/node': ^18.8.2 13 | '@vitejs/plugin-vue': ^3.1.2 14 | '@vitejs/plugin-vue-jsx': ^2.0.1 15 | '@vitest/coverage-c8': ^0.23.4 16 | ant-design-vue: ^3.2.12 17 | element-plus: ^2.2.17 18 | sass: ^1.55.0 19 | table-merge: workspace:* 20 | typescript: ^4.8.4 21 | vite: ^3.1.4 22 | vite-plugin-dts: ^1.6.4 23 | vitest: ^0.23.4 24 | vue: ^3.2.40 25 | devDependencies: 26 | '@table-merge/ant-design': link:packages/ant-design 27 | '@table-merge/ant-design-vue': link:packages/ant-design-vue 28 | '@table-merge/core': link:packages/core 29 | '@table-merge/element-plus': link:packages/element-plus 30 | '@table-merge/element-ui': link:packages/element-ui 31 | '@types/node': 18.8.2 32 | '@vitejs/plugin-vue': 3.1.2_vite@3.1.4+vue@3.2.40 33 | '@vitejs/plugin-vue-jsx': 2.0.1_vite@3.1.4+vue@3.2.40 34 | '@vitest/coverage-c8': 0.23.4_sass@1.55.0 35 | ant-design-vue: 3.2.12_vue@3.2.40 36 | element-plus: 2.2.17_vue@3.2.40 37 | sass: 1.55.0 38 | table-merge: link:packages/table-merge 39 | typescript: 4.8.4 40 | vite: 3.1.4_sass@1.55.0 41 | vite-plugin-dts: 1.6.4_vite@3.1.4 42 | vitest: 0.23.4_sass@1.55.0 43 | vue: 3.2.40 44 | 45 | examples/ant-design: 46 | specifiers: 47 | '@table-merge/ant-design': workspace:* 48 | '@types/react': ^18.0.17 49 | '@types/react-dom': ^18.0.6 50 | '@vitejs/plugin-react': ^2.1.0 51 | antd: ^4.23.4 52 | react: ^18.2.0 53 | react-dom: ^18.2.0 54 | typescript: ^4.6.4 55 | vite: ^3.1.0 56 | dependencies: 57 | '@table-merge/ant-design': link:../../packages/ant-design 58 | antd: 4.23.4_biqbaboplfbrettd7655fr4n2y 59 | react: 18.2.0 60 | react-dom: 18.2.0_react@18.2.0 61 | devDependencies: 62 | '@types/react': 18.0.21 63 | '@types/react-dom': 18.0.6 64 | '@vitejs/plugin-react': 2.1.0_vite@3.1.4 65 | typescript: 4.8.4 66 | vite: 3.1.4 67 | 68 | examples/ant-design-vue: 69 | specifiers: 70 | '@table-merge/ant-design-vue': workspace:* 71 | '@vitejs/plugin-vue': ^3.1.0 72 | typescript: ^4.6.4 73 | vite: ^3.1.0 74 | vue: ^3.2.37 75 | vue-tsc: ^0.40.4 76 | dependencies: 77 | '@table-merge/ant-design-vue': link:../../packages/ant-design-vue 78 | vue: 3.2.40 79 | devDependencies: 80 | '@vitejs/plugin-vue': 3.1.2_vite@3.1.4+vue@3.2.40 81 | typescript: 4.8.4 82 | vite: 3.1.4 83 | vue-tsc: 0.40.13_typescript@4.8.4 84 | 85 | examples/element-plus: 86 | specifiers: 87 | '@table-merge/element-plus': workspace:* 88 | '@vitejs/plugin-vue': ^3.1.0 89 | typescript: ^4.6.4 90 | vite: ^3.1.0 91 | vue: ^3.2.37 92 | vue-tsc: ^0.40.4 93 | dependencies: 94 | '@table-merge/element-plus': link:../../packages/element-plus 95 | vue: 3.2.40 96 | devDependencies: 97 | '@vitejs/plugin-vue': 3.1.2_vite@3.1.4+vue@3.2.40 98 | typescript: 4.8.4 99 | vite: 3.1.4 100 | vue-tsc: 0.40.13_typescript@4.8.4 101 | 102 | examples/element-ui: 103 | specifiers: 104 | '@table-merge/element-ui': workspace:* 105 | '@vitejs/plugin-vue2': ^2.0.0 106 | element-ui: ^2.15.10 107 | typescript: ^4.6.4 108 | vite: ^3.1.0 109 | vue: ^2.6.14 110 | vue-tsc: ^0.40.4 111 | dependencies: 112 | '@table-merge/element-ui': link:../../packages/element-ui 113 | element-ui: 2.15.10_vue@2.7.10 114 | vue: 2.7.10 115 | devDependencies: 116 | '@vitejs/plugin-vue2': 2.0.0_vite@3.1.4+vue@2.7.10 117 | typescript: 4.8.4 118 | vite: 3.1.4 119 | vue-tsc: 0.40.13_typescript@4.8.4 120 | 121 | packages/ant-design: 122 | specifiers: 123 | '@table-merge/core': workspace:* 124 | dependencies: 125 | '@table-merge/core': link:../core 126 | 127 | packages/ant-design-vue: 128 | specifiers: 129 | '@table-merge/core': workspace:* 130 | dependencies: 131 | '@table-merge/core': link:../core 132 | 133 | packages/core: 134 | specifiers: {} 135 | 136 | packages/element-plus: 137 | specifiers: 138 | '@table-merge/core': workspace:* 139 | dependencies: 140 | '@table-merge/core': link:../core 141 | 142 | packages/element-ui: 143 | specifiers: 144 | '@table-merge/element-plus': workspace:* 145 | dependencies: 146 | '@table-merge/element-plus': link:../element-plus 147 | 148 | packages/table-merge: 149 | specifiers: 150 | '@table-merge/ant-design': workspace:* 151 | '@table-merge/ant-design-vue': workspace:* 152 | '@table-merge/core': workspace:* 153 | '@table-merge/element-plus': workspace:* 154 | '@table-merge/element-ui': workspace:* 155 | dependencies: 156 | '@table-merge/ant-design': link:../ant-design 157 | '@table-merge/ant-design-vue': link:../ant-design-vue 158 | '@table-merge/core': link:../core 159 | '@table-merge/element-plus': link:../element-plus 160 | '@table-merge/element-ui': link:../element-ui 161 | 162 | packages: 163 | 164 | /@ampproject/remapping/2.2.0: 165 | resolution: {integrity: sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==} 166 | engines: {node: '>=6.0.0'} 167 | dependencies: 168 | '@jridgewell/gen-mapping': 0.1.1 169 | '@jridgewell/trace-mapping': 0.3.15 170 | dev: true 171 | 172 | /@ant-design/colors/6.0.0: 173 | resolution: {integrity: sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==} 174 | dependencies: 175 | '@ctrl/tinycolor': 3.4.1 176 | 177 | /@ant-design/icons-svg/4.2.1: 178 | resolution: {integrity: sha512-EB0iwlKDGpG93hW8f85CTJTs4SvMX7tt5ceupvhALp1IF44SeUFOMhKUOYqpsoYWQKAOuTRDMqn75rEaKDp0Xw==} 179 | 180 | /@ant-design/icons-vue/6.1.0_vue@3.2.40: 181 | resolution: {integrity: sha512-EX6bYm56V+ZrKN7+3MT/ubDkvJ5rK/O2t380WFRflDcVFgsvl3NLH7Wxeau6R8DbrO5jWR6DSTC3B6gYFp77AA==} 182 | peerDependencies: 183 | vue: '>=3.0.3' 184 | dependencies: 185 | '@ant-design/colors': 6.0.0 186 | '@ant-design/icons-svg': 4.2.1 187 | vue: 3.2.40 188 | dev: true 189 | 190 | /@ant-design/icons/4.7.0_biqbaboplfbrettd7655fr4n2y: 191 | resolution: {integrity: sha512-aoB4Z7JA431rt6d4u+8xcNPPCrdufSRMUOpxa1ab6mz1JCQZOEVolj2WVs/tDFmN62zzK30mNelEsprLYsSF3g==} 192 | engines: {node: '>=8'} 193 | peerDependencies: 194 | react: '>=16.0.0' 195 | react-dom: '>=16.0.0' 196 | dependencies: 197 | '@ant-design/colors': 6.0.0 198 | '@ant-design/icons-svg': 4.2.1 199 | '@babel/runtime': 7.19.0 200 | classnames: 2.3.2 201 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 202 | react: 18.2.0 203 | react-dom: 18.2.0_react@18.2.0 204 | dev: false 205 | 206 | /@ant-design/react-slick/0.29.2_react@18.2.0: 207 | resolution: {integrity: sha512-kgjtKmkGHa19FW21lHnAfyyH9AAoh35pBdcJ53rHmQ3O+cfFHGHnUbj/HFrRNJ5vIts09FKJVAD8RpaC+RaWfA==} 208 | peerDependencies: 209 | react: '>=16.9.0' 210 | dependencies: 211 | '@babel/runtime': 7.19.0 212 | classnames: 2.3.2 213 | json2mq: 0.2.0 214 | lodash: 4.17.21 215 | react: 18.2.0 216 | resize-observer-polyfill: 1.5.1 217 | dev: false 218 | 219 | /@babel/code-frame/7.18.6: 220 | resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} 221 | engines: {node: '>=6.9.0'} 222 | dependencies: 223 | '@babel/highlight': 7.18.6 224 | dev: true 225 | 226 | /@babel/compat-data/7.19.3: 227 | resolution: {integrity: sha512-prBHMK4JYYK+wDjJF1q99KK4JLL+egWS4nmNqdlMUgCExMZ+iZW0hGhyC3VEbsPjvaN0TBhW//VIFwBrk8sEiw==} 228 | engines: {node: '>=6.9.0'} 229 | dev: true 230 | 231 | /@babel/core/7.19.3: 232 | resolution: {integrity: sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==} 233 | engines: {node: '>=6.9.0'} 234 | dependencies: 235 | '@ampproject/remapping': 2.2.0 236 | '@babel/code-frame': 7.18.6 237 | '@babel/generator': 7.19.3 238 | '@babel/helper-compilation-targets': 7.19.3_@babel+core@7.19.3 239 | '@babel/helper-module-transforms': 7.19.0 240 | '@babel/helpers': 7.19.0 241 | '@babel/parser': 7.19.3 242 | '@babel/template': 7.18.10 243 | '@babel/traverse': 7.19.3 244 | '@babel/types': 7.19.3 245 | convert-source-map: 1.8.0 246 | debug: 4.3.4 247 | gensync: 1.0.0-beta.2 248 | json5: 2.2.1 249 | semver: 6.3.0 250 | transitivePeerDependencies: 251 | - supports-color 252 | dev: true 253 | 254 | /@babel/generator/7.19.3: 255 | resolution: {integrity: sha512-fqVZnmp1ncvZU757UzDheKZpfPgatqY59XtW2/j/18H7u76akb8xqvjw82f+i2UKd/ksYsSick/BCLQUUtJ/qQ==} 256 | engines: {node: '>=6.9.0'} 257 | dependencies: 258 | '@babel/types': 7.19.3 259 | '@jridgewell/gen-mapping': 0.3.2 260 | jsesc: 2.5.2 261 | dev: true 262 | 263 | /@babel/helper-annotate-as-pure/7.18.6: 264 | resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} 265 | engines: {node: '>=6.9.0'} 266 | dependencies: 267 | '@babel/types': 7.19.3 268 | dev: true 269 | 270 | /@babel/helper-compilation-targets/7.19.3_@babel+core@7.19.3: 271 | resolution: {integrity: sha512-65ESqLGyGmLvgR0mst5AdW1FkNlj9rQsCKduzEoEPhBCDFGXvz2jW6bXFG6i0/MrV2s7hhXjjb2yAzcPuQlLwg==} 272 | engines: {node: '>=6.9.0'} 273 | peerDependencies: 274 | '@babel/core': ^7.0.0 275 | dependencies: 276 | '@babel/compat-data': 7.19.3 277 | '@babel/core': 7.19.3 278 | '@babel/helper-validator-option': 7.18.6 279 | browserslist: 4.21.4 280 | semver: 6.3.0 281 | dev: true 282 | 283 | /@babel/helper-create-class-features-plugin/7.19.0_@babel+core@7.19.3: 284 | resolution: {integrity: sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==} 285 | engines: {node: '>=6.9.0'} 286 | peerDependencies: 287 | '@babel/core': ^7.0.0 288 | dependencies: 289 | '@babel/core': 7.19.3 290 | '@babel/helper-annotate-as-pure': 7.18.6 291 | '@babel/helper-environment-visitor': 7.18.9 292 | '@babel/helper-function-name': 7.19.0 293 | '@babel/helper-member-expression-to-functions': 7.18.9 294 | '@babel/helper-optimise-call-expression': 7.18.6 295 | '@babel/helper-replace-supers': 7.19.1 296 | '@babel/helper-split-export-declaration': 7.18.6 297 | transitivePeerDependencies: 298 | - supports-color 299 | dev: true 300 | 301 | /@babel/helper-environment-visitor/7.18.9: 302 | resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} 303 | engines: {node: '>=6.9.0'} 304 | dev: true 305 | 306 | /@babel/helper-function-name/7.19.0: 307 | resolution: {integrity: sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==} 308 | engines: {node: '>=6.9.0'} 309 | dependencies: 310 | '@babel/template': 7.18.10 311 | '@babel/types': 7.19.3 312 | dev: true 313 | 314 | /@babel/helper-hoist-variables/7.18.6: 315 | resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} 316 | engines: {node: '>=6.9.0'} 317 | dependencies: 318 | '@babel/types': 7.19.3 319 | dev: true 320 | 321 | /@babel/helper-member-expression-to-functions/7.18.9: 322 | resolution: {integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==} 323 | engines: {node: '>=6.9.0'} 324 | dependencies: 325 | '@babel/types': 7.19.3 326 | dev: true 327 | 328 | /@babel/helper-module-imports/7.18.6: 329 | resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} 330 | engines: {node: '>=6.9.0'} 331 | dependencies: 332 | '@babel/types': 7.19.3 333 | dev: true 334 | 335 | /@babel/helper-module-transforms/7.19.0: 336 | resolution: {integrity: sha512-3HBZ377Fe14RbLIA+ac3sY4PTgpxHVkFrESaWhoI5PuyXPBBX8+C34qblV9G89ZtycGJCmCI/Ut+VUDK4bltNQ==} 337 | engines: {node: '>=6.9.0'} 338 | dependencies: 339 | '@babel/helper-environment-visitor': 7.18.9 340 | '@babel/helper-module-imports': 7.18.6 341 | '@babel/helper-simple-access': 7.18.6 342 | '@babel/helper-split-export-declaration': 7.18.6 343 | '@babel/helper-validator-identifier': 7.19.1 344 | '@babel/template': 7.18.10 345 | '@babel/traverse': 7.19.3 346 | '@babel/types': 7.19.3 347 | transitivePeerDependencies: 348 | - supports-color 349 | dev: true 350 | 351 | /@babel/helper-optimise-call-expression/7.18.6: 352 | resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} 353 | engines: {node: '>=6.9.0'} 354 | dependencies: 355 | '@babel/types': 7.19.3 356 | dev: true 357 | 358 | /@babel/helper-plugin-utils/7.19.0: 359 | resolution: {integrity: sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==} 360 | engines: {node: '>=6.9.0'} 361 | dev: true 362 | 363 | /@babel/helper-replace-supers/7.19.1: 364 | resolution: {integrity: sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==} 365 | engines: {node: '>=6.9.0'} 366 | dependencies: 367 | '@babel/helper-environment-visitor': 7.18.9 368 | '@babel/helper-member-expression-to-functions': 7.18.9 369 | '@babel/helper-optimise-call-expression': 7.18.6 370 | '@babel/traverse': 7.19.3 371 | '@babel/types': 7.19.3 372 | transitivePeerDependencies: 373 | - supports-color 374 | dev: true 375 | 376 | /@babel/helper-simple-access/7.18.6: 377 | resolution: {integrity: sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==} 378 | engines: {node: '>=6.9.0'} 379 | dependencies: 380 | '@babel/types': 7.19.3 381 | dev: true 382 | 383 | /@babel/helper-split-export-declaration/7.18.6: 384 | resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} 385 | engines: {node: '>=6.9.0'} 386 | dependencies: 387 | '@babel/types': 7.19.3 388 | dev: true 389 | 390 | /@babel/helper-string-parser/7.18.10: 391 | resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} 392 | engines: {node: '>=6.9.0'} 393 | 394 | /@babel/helper-validator-identifier/7.19.1: 395 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} 396 | engines: {node: '>=6.9.0'} 397 | 398 | /@babel/helper-validator-option/7.18.6: 399 | resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} 400 | engines: {node: '>=6.9.0'} 401 | dev: true 402 | 403 | /@babel/helpers/7.19.0: 404 | resolution: {integrity: sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==} 405 | engines: {node: '>=6.9.0'} 406 | dependencies: 407 | '@babel/template': 7.18.10 408 | '@babel/traverse': 7.19.3 409 | '@babel/types': 7.19.3 410 | transitivePeerDependencies: 411 | - supports-color 412 | dev: true 413 | 414 | /@babel/highlight/7.18.6: 415 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} 416 | engines: {node: '>=6.9.0'} 417 | dependencies: 418 | '@babel/helper-validator-identifier': 7.19.1 419 | chalk: 2.4.2 420 | js-tokens: 4.0.0 421 | dev: true 422 | 423 | /@babel/parser/7.19.3: 424 | resolution: {integrity: sha512-pJ9xOlNWHiy9+FuFP09DEAFbAn4JskgRsVcc169w2xRBC3FRGuQEwjeIMMND9L2zc0iEhO/tGv4Zq+km+hxNpQ==} 425 | engines: {node: '>=6.0.0'} 426 | hasBin: true 427 | dependencies: 428 | '@babel/types': 7.19.3 429 | 430 | /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.19.3: 431 | resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} 432 | peerDependencies: 433 | '@babel/core': ^7.0.0-0 434 | dependencies: 435 | '@babel/core': 7.19.3 436 | '@babel/helper-plugin-utils': 7.19.0 437 | dev: true 438 | 439 | /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.19.3: 440 | resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} 441 | engines: {node: '>=6.9.0'} 442 | peerDependencies: 443 | '@babel/core': ^7.0.0-0 444 | dependencies: 445 | '@babel/core': 7.19.3 446 | '@babel/helper-plugin-utils': 7.19.0 447 | dev: true 448 | 449 | /@babel/plugin-syntax-typescript/7.18.6_@babel+core@7.19.3: 450 | resolution: {integrity: sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA==} 451 | engines: {node: '>=6.9.0'} 452 | peerDependencies: 453 | '@babel/core': ^7.0.0-0 454 | dependencies: 455 | '@babel/core': 7.19.3 456 | '@babel/helper-plugin-utils': 7.19.0 457 | dev: true 458 | 459 | /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.19.3: 460 | resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} 461 | engines: {node: '>=6.9.0'} 462 | peerDependencies: 463 | '@babel/core': ^7.0.0-0 464 | dependencies: 465 | '@babel/core': 7.19.3 466 | '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.3 467 | dev: true 468 | 469 | /@babel/plugin-transform-react-jsx-self/7.18.6_@babel+core@7.19.3: 470 | resolution: {integrity: sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==} 471 | engines: {node: '>=6.9.0'} 472 | peerDependencies: 473 | '@babel/core': ^7.0.0-0 474 | dependencies: 475 | '@babel/core': 7.19.3 476 | '@babel/helper-plugin-utils': 7.19.0 477 | dev: true 478 | 479 | /@babel/plugin-transform-react-jsx-source/7.18.6_@babel+core@7.19.3: 480 | resolution: {integrity: sha512-utZmlASneDfdaMh0m/WausbjUjEdGrQJz0vFK93d7wD3xf5wBtX219+q6IlCNZeguIcxS2f/CvLZrlLSvSHQXw==} 481 | engines: {node: '>=6.9.0'} 482 | peerDependencies: 483 | '@babel/core': ^7.0.0-0 484 | dependencies: 485 | '@babel/core': 7.19.3 486 | '@babel/helper-plugin-utils': 7.19.0 487 | dev: true 488 | 489 | /@babel/plugin-transform-react-jsx/7.19.0_@babel+core@7.19.3: 490 | resolution: {integrity: sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==} 491 | engines: {node: '>=6.9.0'} 492 | peerDependencies: 493 | '@babel/core': ^7.0.0-0 494 | dependencies: 495 | '@babel/core': 7.19.3 496 | '@babel/helper-annotate-as-pure': 7.18.6 497 | '@babel/helper-module-imports': 7.18.6 498 | '@babel/helper-plugin-utils': 7.19.0 499 | '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.3 500 | '@babel/types': 7.19.3 501 | dev: true 502 | 503 | /@babel/plugin-transform-typescript/7.19.3_@babel+core@7.19.3: 504 | resolution: {integrity: sha512-z6fnuK9ve9u/0X0rRvI9MY0xg+DOUaABDYOe+/SQTxtlptaBB/V9JIUxJn6xp3lMBeb9qe8xSFmHU35oZDXD+w==} 505 | engines: {node: '>=6.9.0'} 506 | peerDependencies: 507 | '@babel/core': ^7.0.0-0 508 | dependencies: 509 | '@babel/core': 7.19.3 510 | '@babel/helper-create-class-features-plugin': 7.19.0_@babel+core@7.19.3 511 | '@babel/helper-plugin-utils': 7.19.0 512 | '@babel/plugin-syntax-typescript': 7.18.6_@babel+core@7.19.3 513 | transitivePeerDependencies: 514 | - supports-color 515 | dev: true 516 | 517 | /@babel/runtime/7.19.0: 518 | resolution: {integrity: sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==} 519 | engines: {node: '>=6.9.0'} 520 | dependencies: 521 | regenerator-runtime: 0.13.9 522 | 523 | /@babel/template/7.18.10: 524 | resolution: {integrity: sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==} 525 | engines: {node: '>=6.9.0'} 526 | dependencies: 527 | '@babel/code-frame': 7.18.6 528 | '@babel/parser': 7.19.3 529 | '@babel/types': 7.19.3 530 | dev: true 531 | 532 | /@babel/traverse/7.19.3: 533 | resolution: {integrity: sha512-qh5yf6149zhq2sgIXmwjnsvmnNQC2iw70UFjp4olxucKrWd/dvlUsBI88VSLUsnMNF7/vnOiA+nk1+yLoCqROQ==} 534 | engines: {node: '>=6.9.0'} 535 | dependencies: 536 | '@babel/code-frame': 7.18.6 537 | '@babel/generator': 7.19.3 538 | '@babel/helper-environment-visitor': 7.18.9 539 | '@babel/helper-function-name': 7.19.0 540 | '@babel/helper-hoist-variables': 7.18.6 541 | '@babel/helper-split-export-declaration': 7.18.6 542 | '@babel/parser': 7.19.3 543 | '@babel/types': 7.19.3 544 | debug: 4.3.4 545 | globals: 11.12.0 546 | transitivePeerDependencies: 547 | - supports-color 548 | dev: true 549 | 550 | /@babel/types/7.19.3: 551 | resolution: {integrity: sha512-hGCaQzIY22DJlDh9CH7NOxgKkFjBk0Cw9xDO1Xmh2151ti7wiGfQ3LauXzL4HP1fmFlTX6XjpRETTpUcv7wQLw==} 552 | engines: {node: '>=6.9.0'} 553 | dependencies: 554 | '@babel/helper-string-parser': 7.18.10 555 | '@babel/helper-validator-identifier': 7.19.1 556 | to-fast-properties: 2.0.0 557 | 558 | /@bcoe/v8-coverage/0.2.3: 559 | resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} 560 | dev: true 561 | 562 | /@ctrl/tinycolor/3.4.1: 563 | resolution: {integrity: sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==} 564 | engines: {node: '>=10'} 565 | 566 | /@element-plus/icons-vue/2.0.9_vue@3.2.40: 567 | resolution: {integrity: sha512-okdrwiVeKBmW41Hkl0eMrXDjzJwhQMuKiBOu17rOszqM+LS/yBYpNQNV5Jvoh06Wc+89fMmb/uhzf8NZuDuUaQ==} 568 | peerDependencies: 569 | vue: ^3.2.0 570 | dependencies: 571 | vue: 3.2.40 572 | dev: true 573 | 574 | /@esbuild/android-arm/0.15.10: 575 | resolution: {integrity: sha512-FNONeQPy/ox+5NBkcSbYJxoXj9GWu8gVGJTVmUyoOCKQFDTrHVKgNSzChdNt0I8Aj/iKcsDf2r9BFwv+FSNUXg==} 576 | engines: {node: '>=12'} 577 | cpu: [arm] 578 | os: [android] 579 | requiresBuild: true 580 | dev: true 581 | optional: true 582 | 583 | /@esbuild/linux-loong64/0.15.10: 584 | resolution: {integrity: sha512-w0Ou3Z83LOYEkwaui2M8VwIp+nLi/NA60lBLMvaJ+vXVMcsARYdEzLNE7RSm4+lSg4zq4d7fAVuzk7PNQ5JFgg==} 585 | engines: {node: '>=12'} 586 | cpu: [loong64] 587 | os: [linux] 588 | requiresBuild: true 589 | dev: true 590 | optional: true 591 | 592 | /@floating-ui/core/1.0.1: 593 | resolution: {integrity: sha512-bO37brCPfteXQfFY0DyNDGB3+IMe4j150KFQcgJ5aBP295p9nBGeHEs/p0czrRbtlHq4Px/yoPXO/+dOCcF4uA==} 594 | dev: true 595 | 596 | /@floating-ui/dom/1.0.2: 597 | resolution: {integrity: sha512-5X9WSvZ8/fjy3gDu8yx9HAA4KG1lazUN2P4/VnaXLxTO9Dz53HI1oYoh1OlhqFNlHgGDiwFX5WhFCc2ljbW3yA==} 598 | dependencies: 599 | '@floating-ui/core': 1.0.1 600 | dev: true 601 | 602 | /@istanbuljs/schema/0.1.3: 603 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} 604 | engines: {node: '>=8'} 605 | dev: true 606 | 607 | /@jridgewell/gen-mapping/0.1.1: 608 | resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} 609 | engines: {node: '>=6.0.0'} 610 | dependencies: 611 | '@jridgewell/set-array': 1.1.2 612 | '@jridgewell/sourcemap-codec': 1.4.14 613 | dev: true 614 | 615 | /@jridgewell/gen-mapping/0.3.2: 616 | resolution: {integrity: sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==} 617 | engines: {node: '>=6.0.0'} 618 | dependencies: 619 | '@jridgewell/set-array': 1.1.2 620 | '@jridgewell/sourcemap-codec': 1.4.14 621 | '@jridgewell/trace-mapping': 0.3.15 622 | dev: true 623 | 624 | /@jridgewell/resolve-uri/3.1.0: 625 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 626 | engines: {node: '>=6.0.0'} 627 | dev: true 628 | 629 | /@jridgewell/set-array/1.1.2: 630 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 631 | engines: {node: '>=6.0.0'} 632 | dev: true 633 | 634 | /@jridgewell/sourcemap-codec/1.4.14: 635 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 636 | dev: true 637 | 638 | /@jridgewell/trace-mapping/0.3.15: 639 | resolution: {integrity: sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==} 640 | dependencies: 641 | '@jridgewell/resolve-uri': 3.1.0 642 | '@jridgewell/sourcemap-codec': 1.4.14 643 | dev: true 644 | 645 | /@microsoft/api-extractor-model/7.24.3: 646 | resolution: {integrity: sha512-JElpLULqYDXQb0YIKKQhOJaNWBXsYeYu5J51Z4O6RGbOq7Tby9ViVfpDuXVXa87AMOSR5WKuaxG/5SnQVVNxiw==} 647 | dependencies: 648 | '@microsoft/tsdoc': 0.14.1 649 | '@microsoft/tsdoc-config': 0.16.2 650 | '@rushstack/node-core-library': 3.53.0 651 | dev: true 652 | 653 | /@microsoft/api-extractor/7.32.0: 654 | resolution: {integrity: sha512-BfvPpeVzWLFTdairVItzWQGsZr82fR4RH+8Q4I7t0f9xq66v4Qz9K+u25jbL5R42X01b/vvJMuRhX5KhU8J1Ug==} 655 | hasBin: true 656 | dependencies: 657 | '@microsoft/api-extractor-model': 7.24.3 658 | '@microsoft/tsdoc': 0.14.1 659 | '@microsoft/tsdoc-config': 0.16.2 660 | '@rushstack/node-core-library': 3.53.0 661 | '@rushstack/rig-package': 0.3.16 662 | '@rushstack/ts-command-line': 4.12.4 663 | colors: 1.2.5 664 | lodash: 4.17.21 665 | resolve: 1.17.0 666 | semver: 7.3.8 667 | source-map: 0.6.1 668 | typescript: 4.8.4 669 | dev: true 670 | 671 | /@microsoft/tsdoc-config/0.16.2: 672 | resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} 673 | dependencies: 674 | '@microsoft/tsdoc': 0.14.2 675 | ajv: 6.12.6 676 | jju: 1.4.0 677 | resolve: 1.19.0 678 | dev: true 679 | 680 | /@microsoft/tsdoc/0.14.1: 681 | resolution: {integrity: sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==} 682 | dev: true 683 | 684 | /@microsoft/tsdoc/0.14.2: 685 | resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} 686 | dev: true 687 | 688 | /@nodelib/fs.scandir/2.1.5: 689 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 690 | engines: {node: '>= 8'} 691 | dependencies: 692 | '@nodelib/fs.stat': 2.0.5 693 | run-parallel: 1.2.0 694 | dev: true 695 | 696 | /@nodelib/fs.stat/2.0.5: 697 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 698 | engines: {node: '>= 8'} 699 | dev: true 700 | 701 | /@nodelib/fs.walk/1.2.8: 702 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 703 | engines: {node: '>= 8'} 704 | dependencies: 705 | '@nodelib/fs.scandir': 2.1.5 706 | fastq: 1.13.0 707 | dev: true 708 | 709 | /@rushstack/node-core-library/3.53.0: 710 | resolution: {integrity: sha512-FXk3eDtTHKnaUq+fLyNY867ioRhMa6CJDJO5hZ3wuGlxm184nckAFiU+hx027AodjpnqjX6pYF0zZGq7k7P/vg==} 711 | dependencies: 712 | '@types/node': 12.20.24 713 | colors: 1.2.5 714 | fs-extra: 7.0.1 715 | import-lazy: 4.0.0 716 | jju: 1.4.0 717 | resolve: 1.17.0 718 | semver: 7.3.8 719 | z-schema: 5.0.4 720 | dev: true 721 | 722 | /@rushstack/rig-package/0.3.16: 723 | resolution: {integrity: sha512-FoSQng2RtapEUe+CBPKxbpZUhUht5s2+mMiztRH95qqp81dsUpfEWojtV6XrUVyWIRk2/cY1CDZUKJWxMrT26Q==} 724 | dependencies: 725 | resolve: 1.17.0 726 | strip-json-comments: 3.1.1 727 | dev: true 728 | 729 | /@rushstack/ts-command-line/4.12.4: 730 | resolution: {integrity: sha512-ckZHEfPiJCmBdWd/syve5zu2TNsPIqbFie3jWzM/izZa6ZOkDwex/K1ww+kJ12hFBnN44lMD7voJvKXajUCEDA==} 731 | dependencies: 732 | '@types/argparse': 1.0.38 733 | argparse: 1.0.10 734 | colors: 1.2.5 735 | string-argv: 0.3.1 736 | dev: true 737 | 738 | /@simonwep/pickr/1.8.2: 739 | resolution: {integrity: sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==} 740 | dependencies: 741 | core-js: 3.25.5 742 | nanopop: 2.2.0 743 | dev: true 744 | 745 | /@sxzz/popperjs-es/2.11.7: 746 | resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==} 747 | dev: true 748 | 749 | /@ts-morph/common/0.17.0: 750 | resolution: {integrity: sha512-RMSSvSfs9kb0VzkvQ2NWobwnj7TxCA9vI/IjR9bDHqgAyVbu2T0DN4wiKVqomyDWqO7dPr/tErSfq7urQ1Q37g==} 751 | dependencies: 752 | fast-glob: 3.2.12 753 | minimatch: 5.1.0 754 | mkdirp: 1.0.4 755 | path-browserify: 1.0.1 756 | dev: true 757 | 758 | /@types/argparse/1.0.38: 759 | resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} 760 | dev: true 761 | 762 | /@types/chai-subset/1.3.3: 763 | resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} 764 | dependencies: 765 | '@types/chai': 4.3.3 766 | dev: true 767 | 768 | /@types/chai/4.3.3: 769 | resolution: {integrity: sha512-hC7OMnszpxhZPduX+m+nrx+uFoLkWOMiR4oa/AZF3MuSETYTZmFfJAHqZEM8MVlvfG7BEUcgvtwoCTxBp6hm3g==} 770 | dev: true 771 | 772 | /@types/istanbul-lib-coverage/2.0.4: 773 | resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} 774 | dev: true 775 | 776 | /@types/lodash-es/4.17.6: 777 | resolution: {integrity: sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==} 778 | dependencies: 779 | '@types/lodash': 4.14.186 780 | dev: true 781 | 782 | /@types/lodash/4.14.186: 783 | resolution: {integrity: sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==} 784 | dev: true 785 | 786 | /@types/node/12.20.24: 787 | resolution: {integrity: sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==} 788 | dev: true 789 | 790 | /@types/node/18.8.2: 791 | resolution: {integrity: sha512-cRMwIgdDN43GO4xMWAfJAecYn8wV4JbsOGHNfNUIDiuYkUYAR5ec4Rj7IO2SAhFPEfpPtLtUTbbny/TCT7aDwA==} 792 | dev: true 793 | 794 | /@types/prop-types/15.7.5: 795 | resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 796 | dev: true 797 | 798 | /@types/react-dom/18.0.6: 799 | resolution: {integrity: sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==} 800 | dependencies: 801 | '@types/react': 18.0.21 802 | dev: true 803 | 804 | /@types/react/18.0.21: 805 | resolution: {integrity: sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA==} 806 | dependencies: 807 | '@types/prop-types': 15.7.5 808 | '@types/scheduler': 0.16.2 809 | csstype: 3.1.1 810 | dev: true 811 | 812 | /@types/scheduler/0.16.2: 813 | resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} 814 | dev: true 815 | 816 | /@types/web-bluetooth/0.0.15: 817 | resolution: {integrity: sha512-w7hEHXnPMEZ+4nGKl/KDRVpxkwYxYExuHOYXyzIzCDzEZ9ZCGMAewulr9IqJu2LR4N37fcnb1XVeuZ09qgOxhA==} 818 | dev: true 819 | 820 | /@vitejs/plugin-react/2.1.0_vite@3.1.4: 821 | resolution: {integrity: sha512-am6rPyyU3LzUYne3Gd9oj9c4Rzbq5hQnuGXSMT6Gujq45Il/+bunwq3lrB7wghLkiF45ygMwft37vgJ/NE8IAA==} 822 | engines: {node: ^14.18.0 || >=16.0.0} 823 | peerDependencies: 824 | vite: ^3.0.0 825 | dependencies: 826 | '@babel/core': 7.19.3 827 | '@babel/plugin-transform-react-jsx': 7.19.0_@babel+core@7.19.3 828 | '@babel/plugin-transform-react-jsx-development': 7.18.6_@babel+core@7.19.3 829 | '@babel/plugin-transform-react-jsx-self': 7.18.6_@babel+core@7.19.3 830 | '@babel/plugin-transform-react-jsx-source': 7.18.6_@babel+core@7.19.3 831 | magic-string: 0.26.5 832 | react-refresh: 0.14.0 833 | vite: 3.1.4 834 | transitivePeerDependencies: 835 | - supports-color 836 | dev: true 837 | 838 | /@vitejs/plugin-vue-jsx/2.0.1_vite@3.1.4+vue@3.2.40: 839 | resolution: {integrity: sha512-lmiR1k9+lrF7LMczO0pxtQ8mOn6XeppJDHxnpxkJQpT5SiKz4SKhKdeNstXaTNuR8qZhUo5X0pJlcocn72Y4Jg==} 840 | engines: {node: ^14.18.0 || >=16.0.0} 841 | peerDependencies: 842 | vite: ^3.0.0 843 | vue: ^3.0.0 844 | dependencies: 845 | '@babel/core': 7.19.3 846 | '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.19.3 847 | '@babel/plugin-transform-typescript': 7.19.3_@babel+core@7.19.3 848 | '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.19.3 849 | vite: 3.1.4_sass@1.55.0 850 | vue: 3.2.40 851 | transitivePeerDependencies: 852 | - supports-color 853 | dev: true 854 | 855 | /@vitejs/plugin-vue/3.1.2_vite@3.1.4+vue@3.2.40: 856 | resolution: {integrity: sha512-3zxKNlvA3oNaKDYX0NBclgxTQ1xaFdL7PzwF6zj9tGFziKwmBa3Q/6XcJQxudlT81WxDjEhHmevvIC4Orc1LhQ==} 857 | engines: {node: ^14.18.0 || >=16.0.0} 858 | peerDependencies: 859 | vite: ^3.0.0 860 | vue: ^3.2.25 861 | dependencies: 862 | vite: 3.1.4 863 | vue: 3.2.40 864 | dev: true 865 | 866 | /@vitejs/plugin-vue2/2.0.0_vite@3.1.4+vue@2.7.10: 867 | resolution: {integrity: sha512-VJOCDtBNcRv7kYLQRbbERDP0OqW0EKgMQp6wwbqZRpU3kg38OP891avx6Xl3szntGkf9mK4i8k3TjsAlmkzWFg==} 868 | engines: {node: ^14.18.0 || >= 16.0.0} 869 | peerDependencies: 870 | vite: ^3.0.0 871 | vue: ^2.7.0-0 872 | dependencies: 873 | vite: 3.1.4 874 | vue: 2.7.10 875 | dev: true 876 | 877 | /@vitest/coverage-c8/0.23.4_sass@1.55.0: 878 | resolution: {integrity: sha512-jmD00a5DQH9gu9K+YdvVhcMuv2CzHvU4gCnySS40Ec5hKlXtlCzRfNHl00VnhfuBeaQUmaQYe60BLT413HyDdg==} 879 | dependencies: 880 | c8: 7.12.0 881 | vitest: 0.23.4_sass@1.55.0 882 | transitivePeerDependencies: 883 | - '@edge-runtime/vm' 884 | - '@vitest/browser' 885 | - '@vitest/ui' 886 | - happy-dom 887 | - jsdom 888 | - less 889 | - sass 890 | - stylus 891 | - supports-color 892 | - terser 893 | dev: true 894 | 895 | /@volar/code-gen/0.40.13: 896 | resolution: {integrity: sha512-4gShBWuMce868OVvgyA1cU5WxHbjfEme18Tw6uVMfweZCF5fB2KECG0iPrA9D54vHk3FeHarODNwgIaaFfUBlA==} 897 | dependencies: 898 | '@volar/source-map': 0.40.13 899 | dev: true 900 | 901 | /@volar/source-map/0.40.13: 902 | resolution: {integrity: sha512-dbdkAB2Nxb0wLjAY5O64o3ywVWlAGONnBIoKAkXSf6qkGZM+nJxcizsoiI66K+RHQG0XqlyvjDizfnTxr+6PWg==} 903 | dependencies: 904 | '@vue/reactivity': 3.2.38 905 | dev: true 906 | 907 | /@volar/typescript-faster/0.40.13: 908 | resolution: {integrity: sha512-uy+TlcFkKoNlKEnxA4x5acxdxLyVDIXGSc8cYDNXpPKjBKXrQaetzCzlO3kVBqu1VLMxKNGJMTKn35mo+ILQmw==} 909 | dependencies: 910 | semver: 7.3.8 911 | dev: true 912 | 913 | /@volar/vue-language-core/0.40.13: 914 | resolution: {integrity: sha512-QkCb8msi2KUitTdM6Y4kAb7/ZlEvuLcbBFOC2PLBlFuoZwyxvSP7c/dBGmKGtJlEvMX0LdCyrg5V2aBYxD38/Q==} 915 | dependencies: 916 | '@volar/code-gen': 0.40.13 917 | '@volar/source-map': 0.40.13 918 | '@vue/compiler-core': 3.2.40 919 | '@vue/compiler-dom': 3.2.40 920 | '@vue/compiler-sfc': 3.2.40 921 | '@vue/reactivity': 3.2.40 922 | '@vue/shared': 3.2.40 923 | dev: true 924 | 925 | /@volar/vue-typescript/0.40.13: 926 | resolution: {integrity: sha512-o7bNztwjs8JmbQjVkrnbZUOfm7q4B8ZYssETISN1tRaBdun6cfNqgpkvDYd+VUBh1O4CdksvN+5BUNnwAz4oCQ==} 927 | dependencies: 928 | '@volar/code-gen': 0.40.13 929 | '@volar/typescript-faster': 0.40.13 930 | '@volar/vue-language-core': 0.40.13 931 | dev: true 932 | 933 | /@vue/babel-helper-vue-transform-on/1.0.2: 934 | resolution: {integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==} 935 | dev: true 936 | 937 | /@vue/babel-plugin-jsx/1.1.1_@babel+core@7.19.3: 938 | resolution: {integrity: sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==} 939 | dependencies: 940 | '@babel/helper-module-imports': 7.18.6 941 | '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.19.3 942 | '@babel/template': 7.18.10 943 | '@babel/traverse': 7.19.3 944 | '@babel/types': 7.19.3 945 | '@vue/babel-helper-vue-transform-on': 1.0.2 946 | camelcase: 6.3.0 947 | html-tags: 3.2.0 948 | svg-tags: 1.0.0 949 | transitivePeerDependencies: 950 | - '@babel/core' 951 | - supports-color 952 | dev: true 953 | 954 | /@vue/compiler-core/3.2.40: 955 | resolution: {integrity: sha512-2Dc3Stk0J/VyQ4OUr2yEC53kU28614lZS+bnrCbFSAIftBJ40g/2yQzf4mPBiFuqguMB7hyHaujdgZAQ67kZYA==} 956 | dependencies: 957 | '@babel/parser': 7.19.3 958 | '@vue/shared': 3.2.40 959 | estree-walker: 2.0.2 960 | source-map: 0.6.1 961 | 962 | /@vue/compiler-dom/3.2.40: 963 | resolution: {integrity: sha512-OZCNyYVC2LQJy4H7h0o28rtk+4v+HMQygRTpmibGoG9wZyomQiS5otU7qo3Wlq5UfHDw2RFwxb9BJgKjVpjrQw==} 964 | dependencies: 965 | '@vue/compiler-core': 3.2.40 966 | '@vue/shared': 3.2.40 967 | 968 | /@vue/compiler-sfc/2.7.10: 969 | resolution: {integrity: sha512-55Shns6WPxlYsz4WX7q9ZJBL77sKE1ZAYNYStLs6GbhIOMrNtjMvzcob6gu3cGlfpCR4bT7NXgyJ3tly2+Hx8Q==} 970 | dependencies: 971 | '@babel/parser': 7.19.3 972 | postcss: 8.4.17 973 | source-map: 0.6.1 974 | 975 | /@vue/compiler-sfc/3.2.40: 976 | resolution: {integrity: sha512-tzqwniIN1fu1PDHC3CpqY/dPCfN/RN1thpBC+g69kJcrl7mbGiHKNwbA6kJ3XKKy8R6JLKqcpVugqN4HkeBFFg==} 977 | dependencies: 978 | '@babel/parser': 7.19.3 979 | '@vue/compiler-core': 3.2.40 980 | '@vue/compiler-dom': 3.2.40 981 | '@vue/compiler-ssr': 3.2.40 982 | '@vue/reactivity-transform': 3.2.40 983 | '@vue/shared': 3.2.40 984 | estree-walker: 2.0.2 985 | magic-string: 0.25.9 986 | postcss: 8.4.17 987 | source-map: 0.6.1 988 | 989 | /@vue/compiler-ssr/3.2.40: 990 | resolution: {integrity: sha512-80cQcgasKjrPPuKcxwuCx7feq+wC6oFl5YaKSee9pV3DNq+6fmCVwEEC3vvkf/E2aI76rIJSOYHsWSEIxK74oQ==} 991 | dependencies: 992 | '@vue/compiler-dom': 3.2.40 993 | '@vue/shared': 3.2.40 994 | 995 | /@vue/reactivity-transform/3.2.40: 996 | resolution: {integrity: sha512-HQUCVwEaacq6fGEsg2NUuGKIhUveMCjOk8jGHqLXPI2w6zFoPrlQhwWEaINTv5kkZDXKEnCijAp+4gNEHG03yw==} 997 | dependencies: 998 | '@babel/parser': 7.19.3 999 | '@vue/compiler-core': 3.2.40 1000 | '@vue/shared': 3.2.40 1001 | estree-walker: 2.0.2 1002 | magic-string: 0.25.9 1003 | 1004 | /@vue/reactivity/3.2.38: 1005 | resolution: {integrity: sha512-6L4myYcH9HG2M25co7/BSo0skKFHpAN8PhkNPM4xRVkyGl1K5M3Jx4rp5bsYhvYze2K4+l+pioN4e6ZwFLUVtw==} 1006 | dependencies: 1007 | '@vue/shared': 3.2.38 1008 | dev: true 1009 | 1010 | /@vue/reactivity/3.2.40: 1011 | resolution: {integrity: sha512-N9qgGLlZmtUBMHF9xDT4EkD9RdXde1Xbveb+niWMXuHVWQP5BzgRmE3SFyUBBcyayG4y1lhoz+lphGRRxxK4RA==} 1012 | dependencies: 1013 | '@vue/shared': 3.2.40 1014 | 1015 | /@vue/runtime-core/3.2.40: 1016 | resolution: {integrity: sha512-U1+rWf0H8xK8aBUZhnrN97yoZfHbjgw/bGUzfgKPJl69/mXDuSg8CbdBYBn6VVQdR947vWneQBFzdhasyzMUKg==} 1017 | dependencies: 1018 | '@vue/reactivity': 3.2.40 1019 | '@vue/shared': 3.2.40 1020 | 1021 | /@vue/runtime-dom/3.2.40: 1022 | resolution: {integrity: sha512-AO2HMQ+0s2+MCec8hXAhxMgWhFhOPJ/CyRXnmTJ6XIOnJFLrH5Iq3TNwvVcODGR295jy77I6dWPj+wvFoSYaww==} 1023 | dependencies: 1024 | '@vue/runtime-core': 3.2.40 1025 | '@vue/shared': 3.2.40 1026 | csstype: 2.6.21 1027 | 1028 | /@vue/server-renderer/3.2.40_vue@3.2.40: 1029 | resolution: {integrity: sha512-gtUcpRwrXOJPJ4qyBpU3EyxQa4EkV8I4f8VrDePcGCPe4O/hd0BPS7v9OgjIQob6Ap8VDz9G+mGTKazE45/95w==} 1030 | peerDependencies: 1031 | vue: 3.2.40 1032 | dependencies: 1033 | '@vue/compiler-ssr': 3.2.40 1034 | '@vue/shared': 3.2.40 1035 | vue: 3.2.40 1036 | 1037 | /@vue/shared/3.2.38: 1038 | resolution: {integrity: sha512-dTyhTIRmGXBjxJE+skC8tTWCGLCVc4wQgRRLt8+O9p5ewBAjoBwtCAkLPrtToSr1xltoe3st21Pv953aOZ7alg==} 1039 | dev: true 1040 | 1041 | /@vue/shared/3.2.40: 1042 | resolution: {integrity: sha512-0PLQ6RUtZM0vO3teRfzGi4ltLUO5aO+kLgwh4Um3THSR03rpQWLTuRCkuO5A41ITzwdWeKdPHtSARuPkoo5pCQ==} 1043 | 1044 | /@vueuse/core/9.3.0_vue@3.2.40: 1045 | resolution: {integrity: sha512-64Rna8IQDWpdrJxgitDg7yv1yTp41ZmvV8zlLEylK4QQLWAhz1OFGZDPZ8bU4lwcGgbEJ2sGi2jrdNh4LttUSQ==} 1046 | dependencies: 1047 | '@types/web-bluetooth': 0.0.15 1048 | '@vueuse/metadata': 9.3.0 1049 | '@vueuse/shared': 9.3.0_vue@3.2.40 1050 | vue-demi: 0.13.11_vue@3.2.40 1051 | transitivePeerDependencies: 1052 | - '@vue/composition-api' 1053 | - vue 1054 | dev: true 1055 | 1056 | /@vueuse/metadata/9.3.0: 1057 | resolution: {integrity: sha512-GnnfjbzIPJIh9ngL9s9oGU1+Hx/h5/KFqTfJykzh/1xjaHkedV9g0MASpdmPZIP+ynNhKAcEfA6g5i8KXwtoMA==} 1058 | dev: true 1059 | 1060 | /@vueuse/shared/9.3.0_vue@3.2.40: 1061 | resolution: {integrity: sha512-caGUWLY0DpPC6l31KxeUy6vPVNA0yKxx81jFYLoMpyP6cF84FG5Dkf69DfSUqL57wX8JcUkJDMnQaQIZPWFEQQ==} 1062 | dependencies: 1063 | vue-demi: 0.13.11_vue@3.2.40 1064 | transitivePeerDependencies: 1065 | - '@vue/composition-api' 1066 | - vue 1067 | dev: true 1068 | 1069 | /acorn/8.8.0: 1070 | resolution: {integrity: sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==} 1071 | engines: {node: '>=0.4.0'} 1072 | hasBin: true 1073 | dev: true 1074 | 1075 | /ajv/6.12.6: 1076 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 1077 | dependencies: 1078 | fast-deep-equal: 3.1.3 1079 | fast-json-stable-stringify: 2.1.0 1080 | json-schema-traverse: 0.4.1 1081 | uri-js: 4.4.1 1082 | dev: true 1083 | 1084 | /ansi-regex/5.0.1: 1085 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 1086 | engines: {node: '>=8'} 1087 | dev: true 1088 | 1089 | /ansi-styles/3.2.1: 1090 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 1091 | engines: {node: '>=4'} 1092 | dependencies: 1093 | color-convert: 1.9.3 1094 | dev: true 1095 | 1096 | /ansi-styles/4.3.0: 1097 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 1098 | engines: {node: '>=8'} 1099 | dependencies: 1100 | color-convert: 2.0.1 1101 | dev: true 1102 | 1103 | /ant-design-vue/3.2.12_vue@3.2.40: 1104 | resolution: {integrity: sha512-CPsoWJ3t+sqq/EPINPXb4fC5/9iKkUdYOfK9M9kLKbXlRN3MAoVwWUbaFnUqc+ngtbEpn/d69hTF/Eh7MeWMhQ==} 1105 | engines: {node: '>=12.22.0'} 1106 | peerDependencies: 1107 | vue: '>=3.2.0' 1108 | dependencies: 1109 | '@ant-design/colors': 6.0.0 1110 | '@ant-design/icons-vue': 6.1.0_vue@3.2.40 1111 | '@babel/runtime': 7.19.0 1112 | '@ctrl/tinycolor': 3.4.1 1113 | '@simonwep/pickr': 1.8.2 1114 | array-tree-filter: 2.1.0 1115 | async-validator: 4.2.5 1116 | dayjs: 1.11.5 1117 | dom-align: 1.12.3 1118 | dom-scroll-into-view: 2.0.1 1119 | lodash: 4.17.21 1120 | lodash-es: 4.17.21 1121 | resize-observer-polyfill: 1.5.1 1122 | scroll-into-view-if-needed: 2.2.29 1123 | shallow-equal: 1.2.1 1124 | vue: 3.2.40 1125 | vue-types: 3.0.2_vue@3.2.40 1126 | warning: 4.0.3 1127 | dev: true 1128 | 1129 | /antd/4.23.4_biqbaboplfbrettd7655fr4n2y: 1130 | resolution: {integrity: sha512-2VdDSPXEjCc2m2qBgv6DKpKnsKIGyQtJBdcGn223EqHxDWHqCaRxeJIA9bcW50ntHFkwdeBa+IeWLBor377dkA==} 1131 | peerDependencies: 1132 | react: '>=16.9.0' 1133 | react-dom: '>=16.9.0' 1134 | dependencies: 1135 | '@ant-design/colors': 6.0.0 1136 | '@ant-design/icons': 4.7.0_biqbaboplfbrettd7655fr4n2y 1137 | '@ant-design/react-slick': 0.29.2_react@18.2.0 1138 | '@babel/runtime': 7.19.0 1139 | '@ctrl/tinycolor': 3.4.1 1140 | classnames: 2.3.2 1141 | copy-to-clipboard: 3.3.2 1142 | lodash: 4.17.21 1143 | memoize-one: 6.0.0 1144 | moment: 2.29.4 1145 | rc-cascader: 3.7.0_biqbaboplfbrettd7655fr4n2y 1146 | rc-checkbox: 2.3.2_biqbaboplfbrettd7655fr4n2y 1147 | rc-collapse: 3.3.1_biqbaboplfbrettd7655fr4n2y 1148 | rc-dialog: 8.9.0_biqbaboplfbrettd7655fr4n2y 1149 | rc-drawer: 5.1.0_biqbaboplfbrettd7655fr4n2y 1150 | rc-dropdown: 4.0.1_biqbaboplfbrettd7655fr4n2y 1151 | rc-field-form: 1.27.2_biqbaboplfbrettd7655fr4n2y 1152 | rc-image: 5.7.1_biqbaboplfbrettd7655fr4n2y 1153 | rc-input: 0.1.2_biqbaboplfbrettd7655fr4n2y 1154 | rc-input-number: 7.3.9_biqbaboplfbrettd7655fr4n2y 1155 | rc-mentions: 1.9.2_biqbaboplfbrettd7655fr4n2y 1156 | rc-menu: 9.6.4_biqbaboplfbrettd7655fr4n2y 1157 | rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y 1158 | rc-notification: 4.6.0_biqbaboplfbrettd7655fr4n2y 1159 | rc-pagination: 3.1.17_biqbaboplfbrettd7655fr4n2y 1160 | rc-picker: 2.6.10_biqbaboplfbrettd7655fr4n2y 1161 | rc-progress: 3.3.3_biqbaboplfbrettd7655fr4n2y 1162 | rc-rate: 2.9.2_biqbaboplfbrettd7655fr4n2y 1163 | rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y 1164 | rc-segmented: 2.1.0_biqbaboplfbrettd7655fr4n2y 1165 | rc-select: 14.1.13_biqbaboplfbrettd7655fr4n2y 1166 | rc-slider: 10.0.1_biqbaboplfbrettd7655fr4n2y 1167 | rc-steps: 4.1.4_biqbaboplfbrettd7655fr4n2y 1168 | rc-switch: 3.2.2_biqbaboplfbrettd7655fr4n2y 1169 | rc-table: 7.26.0_biqbaboplfbrettd7655fr4n2y 1170 | rc-tabs: 12.1.0-alpha.1_biqbaboplfbrettd7655fr4n2y 1171 | rc-textarea: 0.3.7_biqbaboplfbrettd7655fr4n2y 1172 | rc-tooltip: 5.2.2_biqbaboplfbrettd7655fr4n2y 1173 | rc-tree: 5.7.0_biqbaboplfbrettd7655fr4n2y 1174 | rc-tree-select: 5.5.0_biqbaboplfbrettd7655fr4n2y 1175 | rc-trigger: 5.3.1_biqbaboplfbrettd7655fr4n2y 1176 | rc-upload: 4.3.4_biqbaboplfbrettd7655fr4n2y 1177 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 1178 | react: 18.2.0 1179 | react-dom: 18.2.0_react@18.2.0 1180 | scroll-into-view-if-needed: 2.2.29 1181 | dev: false 1182 | 1183 | /anymatch/3.1.2: 1184 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 1185 | engines: {node: '>= 8'} 1186 | dependencies: 1187 | normalize-path: 3.0.0 1188 | picomatch: 2.3.1 1189 | dev: true 1190 | 1191 | /argparse/1.0.10: 1192 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 1193 | dependencies: 1194 | sprintf-js: 1.0.3 1195 | dev: true 1196 | 1197 | /array-tree-filter/2.1.0: 1198 | resolution: {integrity: sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==} 1199 | 1200 | /assertion-error/1.1.0: 1201 | resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} 1202 | dev: true 1203 | 1204 | /async-validator/1.8.5: 1205 | resolution: {integrity: sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==} 1206 | dependencies: 1207 | babel-runtime: 6.26.0 1208 | dev: false 1209 | 1210 | /async-validator/4.2.5: 1211 | resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} 1212 | 1213 | /babel-helper-vue-jsx-merge-props/2.0.3: 1214 | resolution: {integrity: sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==} 1215 | dev: false 1216 | 1217 | /babel-runtime/6.26.0: 1218 | resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} 1219 | dependencies: 1220 | core-js: 2.6.12 1221 | regenerator-runtime: 0.11.1 1222 | dev: false 1223 | 1224 | /balanced-match/1.0.2: 1225 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1226 | dev: true 1227 | 1228 | /binary-extensions/2.2.0: 1229 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 1230 | engines: {node: '>=8'} 1231 | dev: true 1232 | 1233 | /brace-expansion/1.1.11: 1234 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 1235 | dependencies: 1236 | balanced-match: 1.0.2 1237 | concat-map: 0.0.1 1238 | dev: true 1239 | 1240 | /brace-expansion/2.0.1: 1241 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 1242 | dependencies: 1243 | balanced-match: 1.0.2 1244 | dev: true 1245 | 1246 | /braces/3.0.2: 1247 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 1248 | engines: {node: '>=8'} 1249 | dependencies: 1250 | fill-range: 7.0.1 1251 | dev: true 1252 | 1253 | /browserslist/4.21.4: 1254 | resolution: {integrity: sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==} 1255 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1256 | hasBin: true 1257 | dependencies: 1258 | caniuse-lite: 1.0.30001416 1259 | electron-to-chromium: 1.4.272 1260 | node-releases: 2.0.6 1261 | update-browserslist-db: 1.0.9_browserslist@4.21.4 1262 | dev: true 1263 | 1264 | /c8/7.12.0: 1265 | resolution: {integrity: sha512-CtgQrHOkyxr5koX1wEUmN/5cfDa2ckbHRA4Gy5LAL0zaCFtVWJS5++n+w4/sr2GWGerBxgTjpKeDclk/Qk6W/A==} 1266 | engines: {node: '>=10.12.0'} 1267 | hasBin: true 1268 | dependencies: 1269 | '@bcoe/v8-coverage': 0.2.3 1270 | '@istanbuljs/schema': 0.1.3 1271 | find-up: 5.0.0 1272 | foreground-child: 2.0.0 1273 | istanbul-lib-coverage: 3.2.0 1274 | istanbul-lib-report: 3.0.0 1275 | istanbul-reports: 3.1.5 1276 | rimraf: 3.0.2 1277 | test-exclude: 6.0.0 1278 | v8-to-istanbul: 9.0.1 1279 | yargs: 16.2.0 1280 | yargs-parser: 20.2.9 1281 | dev: true 1282 | 1283 | /camelcase/6.3.0: 1284 | resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} 1285 | engines: {node: '>=10'} 1286 | dev: true 1287 | 1288 | /caniuse-lite/1.0.30001416: 1289 | resolution: {integrity: sha512-06wzzdAkCPZO+Qm4e/eNghZBDfVNDsCgw33T27OwBH9unE9S478OYw//Q2L7Npf/zBzs7rjZOszIFQkwQKAEqA==} 1290 | dev: true 1291 | 1292 | /chai/4.3.6: 1293 | resolution: {integrity: sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==} 1294 | engines: {node: '>=4'} 1295 | dependencies: 1296 | assertion-error: 1.1.0 1297 | check-error: 1.0.2 1298 | deep-eql: 3.0.1 1299 | get-func-name: 2.0.0 1300 | loupe: 2.3.4 1301 | pathval: 1.1.1 1302 | type-detect: 4.0.8 1303 | dev: true 1304 | 1305 | /chalk/2.4.2: 1306 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 1307 | engines: {node: '>=4'} 1308 | dependencies: 1309 | ansi-styles: 3.2.1 1310 | escape-string-regexp: 1.0.5 1311 | supports-color: 5.5.0 1312 | dev: true 1313 | 1314 | /chalk/4.1.2: 1315 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1316 | engines: {node: '>=10'} 1317 | dependencies: 1318 | ansi-styles: 4.3.0 1319 | supports-color: 7.2.0 1320 | dev: true 1321 | 1322 | /check-error/1.0.2: 1323 | resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} 1324 | dev: true 1325 | 1326 | /chokidar/3.5.3: 1327 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 1328 | engines: {node: '>= 8.10.0'} 1329 | dependencies: 1330 | anymatch: 3.1.2 1331 | braces: 3.0.2 1332 | glob-parent: 5.1.2 1333 | is-binary-path: 2.1.0 1334 | is-glob: 4.0.3 1335 | normalize-path: 3.0.0 1336 | readdirp: 3.6.0 1337 | optionalDependencies: 1338 | fsevents: 2.3.2 1339 | dev: true 1340 | 1341 | /classnames/2.3.2: 1342 | resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} 1343 | dev: false 1344 | 1345 | /cliui/7.0.4: 1346 | resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} 1347 | dependencies: 1348 | string-width: 4.2.3 1349 | strip-ansi: 6.0.1 1350 | wrap-ansi: 7.0.0 1351 | dev: true 1352 | 1353 | /code-block-writer/11.0.3: 1354 | resolution: {integrity: sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==} 1355 | dev: true 1356 | 1357 | /color-convert/1.9.3: 1358 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1359 | dependencies: 1360 | color-name: 1.1.3 1361 | dev: true 1362 | 1363 | /color-convert/2.0.1: 1364 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1365 | engines: {node: '>=7.0.0'} 1366 | dependencies: 1367 | color-name: 1.1.4 1368 | dev: true 1369 | 1370 | /color-name/1.1.3: 1371 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 1372 | dev: true 1373 | 1374 | /color-name/1.1.4: 1375 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1376 | dev: true 1377 | 1378 | /colors/1.2.5: 1379 | resolution: {integrity: sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==} 1380 | engines: {node: '>=0.1.90'} 1381 | dev: true 1382 | 1383 | /commander/2.20.3: 1384 | resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 1385 | requiresBuild: true 1386 | dev: true 1387 | optional: true 1388 | 1389 | /compute-scroll-into-view/1.0.17: 1390 | resolution: {integrity: sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg==} 1391 | 1392 | /concat-map/0.0.1: 1393 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1394 | dev: true 1395 | 1396 | /convert-source-map/1.8.0: 1397 | resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} 1398 | dependencies: 1399 | safe-buffer: 5.1.2 1400 | dev: true 1401 | 1402 | /copy-to-clipboard/3.3.2: 1403 | resolution: {integrity: sha512-Vme1Z6RUDzrb6xAI7EZlVZ5uvOk2F//GaxKUxajDqm9LhOVM1inxNAD2vy+UZDYsd0uyA9s7b3/FVZPSxqrCfg==} 1404 | dependencies: 1405 | toggle-selection: 1.0.6 1406 | dev: false 1407 | 1408 | /core-js/2.6.12: 1409 | resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} 1410 | 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. 1411 | requiresBuild: true 1412 | dev: false 1413 | 1414 | /core-js/3.25.5: 1415 | resolution: {integrity: sha512-nbm6eZSjm+ZuBQxCUPQKQCoUEfFOXjUZ8dTTyikyKaWrTYmAVbykQfwsKE5dBK88u3QCkCrzsx/PPlKfhsvgpw==} 1416 | requiresBuild: true 1417 | dev: true 1418 | 1419 | /cross-spawn/7.0.3: 1420 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1421 | engines: {node: '>= 8'} 1422 | dependencies: 1423 | path-key: 3.1.1 1424 | shebang-command: 2.0.0 1425 | which: 2.0.2 1426 | dev: true 1427 | 1428 | /csstype/2.6.21: 1429 | resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} 1430 | 1431 | /csstype/3.1.1: 1432 | resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==} 1433 | 1434 | /date-fns/2.29.3: 1435 | resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} 1436 | engines: {node: '>=0.11'} 1437 | dev: false 1438 | 1439 | /dayjs/1.11.5: 1440 | resolution: {integrity: sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==} 1441 | 1442 | /debug/4.3.4: 1443 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1444 | engines: {node: '>=6.0'} 1445 | peerDependencies: 1446 | supports-color: '*' 1447 | peerDependenciesMeta: 1448 | supports-color: 1449 | optional: true 1450 | dependencies: 1451 | ms: 2.1.2 1452 | dev: true 1453 | 1454 | /deep-eql/3.0.1: 1455 | resolution: {integrity: sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==} 1456 | engines: {node: '>=0.12'} 1457 | dependencies: 1458 | type-detect: 4.0.8 1459 | dev: true 1460 | 1461 | /deepmerge/1.5.2: 1462 | resolution: {integrity: sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==} 1463 | engines: {node: '>=0.10.0'} 1464 | dev: false 1465 | 1466 | /dom-align/1.12.3: 1467 | resolution: {integrity: sha512-Gj9hZN3a07cbR6zviMUBOMPdWxYhbMI+x+WS0NAIu2zFZmbK8ys9R79g+iG9qLnlCwpFoaB+fKy8Pdv470GsPA==} 1468 | 1469 | /dom-scroll-into-view/2.0.1: 1470 | resolution: {integrity: sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w==} 1471 | dev: true 1472 | 1473 | /electron-to-chromium/1.4.272: 1474 | resolution: {integrity: sha512-KS6gPPGNrzpVv9HzFVq+Etd0AjZEPr5pvaTBn2yD6KV4+cKW4I0CJoJNgmTG6gUQPAMZ4wIPtcOuoou3qFAZCA==} 1475 | dev: true 1476 | 1477 | /element-plus/2.2.17_vue@3.2.40: 1478 | resolution: {integrity: sha512-MGwMIE/q+FFD3kgS23x8HIe5043tmD1cTRwjhIX9o6fim1avFnUkrsfYRvybbz4CkyqSb185EheZS5AUPpXh2g==} 1479 | peerDependencies: 1480 | vue: ^3.2.0 1481 | dependencies: 1482 | '@ctrl/tinycolor': 3.4.1 1483 | '@element-plus/icons-vue': 2.0.9_vue@3.2.40 1484 | '@floating-ui/dom': 1.0.2 1485 | '@popperjs/core': /@sxzz/popperjs-es/2.11.7 1486 | '@types/lodash': 4.14.186 1487 | '@types/lodash-es': 4.17.6 1488 | '@vueuse/core': 9.3.0_vue@3.2.40 1489 | async-validator: 4.2.5 1490 | dayjs: 1.11.5 1491 | escape-html: 1.0.3 1492 | lodash: 4.17.21 1493 | lodash-es: 4.17.21 1494 | lodash-unified: 1.0.2_3ib2ivapxullxkx3xftsimdk7u 1495 | memoize-one: 6.0.0 1496 | normalize-wheel-es: 1.2.0 1497 | vue: 3.2.40 1498 | transitivePeerDependencies: 1499 | - '@vue/composition-api' 1500 | dev: true 1501 | 1502 | /element-ui/2.15.10_vue@2.7.10: 1503 | resolution: {integrity: sha512-jmD++mU2wKXbisvx4fxOl2mHaU+HWHTAq/3Wf8x9Bwyu4GdDZPLABb+CGi3DWN6fPqdgRcd74aX39DO+YHObLw==} 1504 | peerDependencies: 1505 | vue: ^2.5.17 1506 | dependencies: 1507 | async-validator: 1.8.5 1508 | babel-helper-vue-jsx-merge-props: 2.0.3 1509 | deepmerge: 1.5.2 1510 | normalize-wheel: 1.0.1 1511 | resize-observer-polyfill: 1.5.1 1512 | throttle-debounce: 1.1.0 1513 | vue: 2.7.10 1514 | dev: false 1515 | 1516 | /emoji-regex/8.0.0: 1517 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1518 | dev: true 1519 | 1520 | /esbuild-android-64/0.15.10: 1521 | resolution: {integrity: sha512-UI7krF8OYO1N7JYTgLT9ML5j4+45ra3amLZKx7LO3lmLt1Ibn8t3aZbX5Pu4BjWiqDuJ3m/hsvhPhK/5Y/YpnA==} 1522 | engines: {node: '>=12'} 1523 | cpu: [x64] 1524 | os: [android] 1525 | requiresBuild: true 1526 | dev: true 1527 | optional: true 1528 | 1529 | /esbuild-android-arm64/0.15.10: 1530 | resolution: {integrity: sha512-EOt55D6xBk5O05AK8brXUbZmoFj4chM8u3riGflLa6ziEoVvNjRdD7Cnp82NHQGfSHgYR06XsPI8/sMuA/cUwg==} 1531 | engines: {node: '>=12'} 1532 | cpu: [arm64] 1533 | os: [android] 1534 | requiresBuild: true 1535 | dev: true 1536 | optional: true 1537 | 1538 | /esbuild-darwin-64/0.15.10: 1539 | resolution: {integrity: sha512-hbDJugTicqIm+WKZgp208d7FcXcaK8j2c0l+fqSJ3d2AzQAfjEYDRM3Z2oMeqSJ9uFxyj/muSACLdix7oTstRA==} 1540 | engines: {node: '>=12'} 1541 | cpu: [x64] 1542 | os: [darwin] 1543 | requiresBuild: true 1544 | dev: true 1545 | optional: true 1546 | 1547 | /esbuild-darwin-arm64/0.15.10: 1548 | resolution: {integrity: sha512-M1t5+Kj4IgSbYmunf2BB6EKLkWUq+XlqaFRiGOk8bmBapu9bCDrxjf4kUnWn59Dka3I27EiuHBKd1rSO4osLFQ==} 1549 | engines: {node: '>=12'} 1550 | cpu: [arm64] 1551 | os: [darwin] 1552 | requiresBuild: true 1553 | dev: true 1554 | optional: true 1555 | 1556 | /esbuild-freebsd-64/0.15.10: 1557 | resolution: {integrity: sha512-KMBFMa7C8oc97nqDdoZwtDBX7gfpolkk6Bcmj6YFMrtCMVgoU/x2DI1p74DmYl7CSS6Ppa3xgemrLrr5IjIn0w==} 1558 | engines: {node: '>=12'} 1559 | cpu: [x64] 1560 | os: [freebsd] 1561 | requiresBuild: true 1562 | dev: true 1563 | optional: true 1564 | 1565 | /esbuild-freebsd-arm64/0.15.10: 1566 | resolution: {integrity: sha512-m2KNbuCX13yQqLlbSojFMHpewbn8wW5uDS6DxRpmaZKzyq8Dbsku6hHvh2U+BcLwWY4mpgXzFUoENEf7IcioGg==} 1567 | engines: {node: '>=12'} 1568 | cpu: [arm64] 1569 | os: [freebsd] 1570 | requiresBuild: true 1571 | dev: true 1572 | optional: true 1573 | 1574 | /esbuild-linux-32/0.15.10: 1575 | resolution: {integrity: sha512-guXrwSYFAvNkuQ39FNeV4sNkNms1bLlA5vF1H0cazZBOLdLFIny6BhT+TUbK/hdByMQhtWQ5jI9VAmPKbVPu1w==} 1576 | engines: {node: '>=12'} 1577 | cpu: [ia32] 1578 | os: [linux] 1579 | requiresBuild: true 1580 | dev: true 1581 | optional: true 1582 | 1583 | /esbuild-linux-64/0.15.10: 1584 | resolution: {integrity: sha512-jd8XfaSJeucMpD63YNMO1JCrdJhckHWcMv6O233bL4l6ogQKQOxBYSRP/XLWP+6kVTu0obXovuckJDcA0DKtQA==} 1585 | engines: {node: '>=12'} 1586 | cpu: [x64] 1587 | os: [linux] 1588 | requiresBuild: true 1589 | dev: true 1590 | optional: true 1591 | 1592 | /esbuild-linux-arm/0.15.10: 1593 | resolution: {integrity: sha512-6N8vThLL/Lysy9y4Ex8XoLQAlbZKUyExCWyayGi2KgTBelKpPgj6RZnUaKri0dHNPGgReJriKVU6+KDGQwn10A==} 1594 | engines: {node: '>=12'} 1595 | cpu: [arm] 1596 | os: [linux] 1597 | requiresBuild: true 1598 | dev: true 1599 | optional: true 1600 | 1601 | /esbuild-linux-arm64/0.15.10: 1602 | resolution: {integrity: sha512-GByBi4fgkvZFTHFDYNftu1DQ1GzR23jws0oWyCfhnI7eMOe+wgwWrc78dbNk709Ivdr/evefm2PJiUBMiusS1A==} 1603 | engines: {node: '>=12'} 1604 | cpu: [arm64] 1605 | os: [linux] 1606 | requiresBuild: true 1607 | dev: true 1608 | optional: true 1609 | 1610 | /esbuild-linux-mips64le/0.15.10: 1611 | resolution: {integrity: sha512-BxP+LbaGVGIdQNJUNF7qpYjEGWb0YyHVSKqYKrn+pTwH/SiHUxFyJYSP3pqkku61olQiSBnSmWZ+YUpj78Tw7Q==} 1612 | engines: {node: '>=12'} 1613 | cpu: [mips64el] 1614 | os: [linux] 1615 | requiresBuild: true 1616 | dev: true 1617 | optional: true 1618 | 1619 | /esbuild-linux-ppc64le/0.15.10: 1620 | resolution: {integrity: sha512-LoSQCd6498PmninNgqd/BR7z3Bsk/mabImBWuQ4wQgmQEeanzWd5BQU2aNi9mBURCLgyheuZS6Xhrw5luw3OkQ==} 1621 | engines: {node: '>=12'} 1622 | cpu: [ppc64] 1623 | os: [linux] 1624 | requiresBuild: true 1625 | dev: true 1626 | optional: true 1627 | 1628 | /esbuild-linux-riscv64/0.15.10: 1629 | resolution: {integrity: sha512-Lrl9Cr2YROvPV4wmZ1/g48httE8z/5SCiXIyebiB5N8VT7pX3t6meI7TQVHw/wQpqP/AF4SksDuFImPTM7Z32Q==} 1630 | engines: {node: '>=12'} 1631 | cpu: [riscv64] 1632 | os: [linux] 1633 | requiresBuild: true 1634 | dev: true 1635 | optional: true 1636 | 1637 | /esbuild-linux-s390x/0.15.10: 1638 | resolution: {integrity: sha512-ReP+6q3eLVVP2lpRrvl5EodKX7EZ1bS1/z5j6hsluAlZP5aHhk6ghT6Cq3IANvvDdscMMCB4QEbI+AjtvoOFpA==} 1639 | engines: {node: '>=12'} 1640 | cpu: [s390x] 1641 | os: [linux] 1642 | requiresBuild: true 1643 | dev: true 1644 | optional: true 1645 | 1646 | /esbuild-netbsd-64/0.15.10: 1647 | resolution: {integrity: sha512-iGDYtJCMCqldMskQ4eIV+QSS/CuT7xyy9i2/FjpKvxAuCzrESZXiA1L64YNj6/afuzfBe9i8m/uDkFHy257hTw==} 1648 | engines: {node: '>=12'} 1649 | cpu: [x64] 1650 | os: [netbsd] 1651 | requiresBuild: true 1652 | dev: true 1653 | optional: true 1654 | 1655 | /esbuild-openbsd-64/0.15.10: 1656 | resolution: {integrity: sha512-ftMMIwHWrnrYnvuJQRJs/Smlcb28F9ICGde/P3FUTCgDDM0N7WA0o9uOR38f5Xe2/OhNCgkjNeb7QeaE3cyWkQ==} 1657 | engines: {node: '>=12'} 1658 | cpu: [x64] 1659 | os: [openbsd] 1660 | requiresBuild: true 1661 | dev: true 1662 | optional: true 1663 | 1664 | /esbuild-sunos-64/0.15.10: 1665 | resolution: {integrity: sha512-mf7hBL9Uo2gcy2r3rUFMjVpTaGpFJJE5QTDDqUFf1632FxteYANffDZmKbqX0PfeQ2XjUDE604IcE7OJeoHiyg==} 1666 | engines: {node: '>=12'} 1667 | cpu: [x64] 1668 | os: [sunos] 1669 | requiresBuild: true 1670 | dev: true 1671 | optional: true 1672 | 1673 | /esbuild-windows-32/0.15.10: 1674 | resolution: {integrity: sha512-ttFVo+Cg8b5+qHmZHbEc8Vl17kCleHhLzgT8X04y8zudEApo0PxPg9Mz8Z2cKH1bCYlve1XL8LkyXGFjtUYeGg==} 1675 | engines: {node: '>=12'} 1676 | cpu: [ia32] 1677 | os: [win32] 1678 | requiresBuild: true 1679 | dev: true 1680 | optional: true 1681 | 1682 | /esbuild-windows-64/0.15.10: 1683 | resolution: {integrity: sha512-2H0gdsyHi5x+8lbng3hLbxDWR7mKHWh5BXZGKVG830KUmXOOWFE2YKJ4tHRkejRduOGDrBvHBriYsGtmTv3ntA==} 1684 | engines: {node: '>=12'} 1685 | cpu: [x64] 1686 | os: [win32] 1687 | requiresBuild: true 1688 | dev: true 1689 | optional: true 1690 | 1691 | /esbuild-windows-arm64/0.15.10: 1692 | resolution: {integrity: sha512-S+th4F+F8VLsHLR0zrUcG+Et4hx0RKgK1eyHc08kztmLOES8BWwMiaGdoW9hiXuzznXQ0I/Fg904MNbr11Nktw==} 1693 | engines: {node: '>=12'} 1694 | cpu: [arm64] 1695 | os: [win32] 1696 | requiresBuild: true 1697 | dev: true 1698 | optional: true 1699 | 1700 | /esbuild/0.15.10: 1701 | resolution: {integrity: sha512-N7wBhfJ/E5fzn/SpNgX+oW2RLRjwaL8Y0ezqNqhjD6w0H2p0rDuEz2FKZqpqLnO8DCaWumKe8dsC/ljvVSSxng==} 1702 | engines: {node: '>=12'} 1703 | hasBin: true 1704 | requiresBuild: true 1705 | optionalDependencies: 1706 | '@esbuild/android-arm': 0.15.10 1707 | '@esbuild/linux-loong64': 0.15.10 1708 | esbuild-android-64: 0.15.10 1709 | esbuild-android-arm64: 0.15.10 1710 | esbuild-darwin-64: 0.15.10 1711 | esbuild-darwin-arm64: 0.15.10 1712 | esbuild-freebsd-64: 0.15.10 1713 | esbuild-freebsd-arm64: 0.15.10 1714 | esbuild-linux-32: 0.15.10 1715 | esbuild-linux-64: 0.15.10 1716 | esbuild-linux-arm: 0.15.10 1717 | esbuild-linux-arm64: 0.15.10 1718 | esbuild-linux-mips64le: 0.15.10 1719 | esbuild-linux-ppc64le: 0.15.10 1720 | esbuild-linux-riscv64: 0.15.10 1721 | esbuild-linux-s390x: 0.15.10 1722 | esbuild-netbsd-64: 0.15.10 1723 | esbuild-openbsd-64: 0.15.10 1724 | esbuild-sunos-64: 0.15.10 1725 | esbuild-windows-32: 0.15.10 1726 | esbuild-windows-64: 0.15.10 1727 | esbuild-windows-arm64: 0.15.10 1728 | dev: true 1729 | 1730 | /escalade/3.1.1: 1731 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1732 | engines: {node: '>=6'} 1733 | dev: true 1734 | 1735 | /escape-html/1.0.3: 1736 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 1737 | dev: true 1738 | 1739 | /escape-string-regexp/1.0.5: 1740 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1741 | engines: {node: '>=0.8.0'} 1742 | dev: true 1743 | 1744 | /estree-walker/2.0.2: 1745 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1746 | 1747 | /fast-deep-equal/3.1.3: 1748 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1749 | dev: true 1750 | 1751 | /fast-glob/3.2.12: 1752 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 1753 | engines: {node: '>=8.6.0'} 1754 | dependencies: 1755 | '@nodelib/fs.stat': 2.0.5 1756 | '@nodelib/fs.walk': 1.2.8 1757 | glob-parent: 5.1.2 1758 | merge2: 1.4.1 1759 | micromatch: 4.0.5 1760 | dev: true 1761 | 1762 | /fast-json-stable-stringify/2.1.0: 1763 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1764 | dev: true 1765 | 1766 | /fastq/1.13.0: 1767 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 1768 | dependencies: 1769 | reusify: 1.0.4 1770 | dev: true 1771 | 1772 | /fill-range/7.0.1: 1773 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1774 | engines: {node: '>=8'} 1775 | dependencies: 1776 | to-regex-range: 5.0.1 1777 | dev: true 1778 | 1779 | /find-up/5.0.0: 1780 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1781 | engines: {node: '>=10'} 1782 | dependencies: 1783 | locate-path: 6.0.0 1784 | path-exists: 4.0.0 1785 | dev: true 1786 | 1787 | /foreground-child/2.0.0: 1788 | resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} 1789 | engines: {node: '>=8.0.0'} 1790 | dependencies: 1791 | cross-spawn: 7.0.3 1792 | signal-exit: 3.0.7 1793 | dev: true 1794 | 1795 | /fs-extra/10.1.0: 1796 | resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} 1797 | engines: {node: '>=12'} 1798 | dependencies: 1799 | graceful-fs: 4.2.10 1800 | jsonfile: 6.1.0 1801 | universalify: 2.0.0 1802 | dev: true 1803 | 1804 | /fs-extra/7.0.1: 1805 | resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} 1806 | engines: {node: '>=6 <7 || >=8'} 1807 | dependencies: 1808 | graceful-fs: 4.2.10 1809 | jsonfile: 4.0.0 1810 | universalify: 0.1.2 1811 | dev: true 1812 | 1813 | /fs.realpath/1.0.0: 1814 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1815 | dev: true 1816 | 1817 | /fsevents/2.3.2: 1818 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1819 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1820 | os: [darwin] 1821 | requiresBuild: true 1822 | dev: true 1823 | optional: true 1824 | 1825 | /function-bind/1.1.1: 1826 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1827 | dev: true 1828 | 1829 | /gensync/1.0.0-beta.2: 1830 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1831 | engines: {node: '>=6.9.0'} 1832 | dev: true 1833 | 1834 | /get-caller-file/2.0.5: 1835 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1836 | engines: {node: 6.* || 8.* || >= 10.*} 1837 | dev: true 1838 | 1839 | /get-func-name/2.0.0: 1840 | resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} 1841 | dev: true 1842 | 1843 | /glob-parent/5.1.2: 1844 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1845 | engines: {node: '>= 6'} 1846 | dependencies: 1847 | is-glob: 4.0.3 1848 | dev: true 1849 | 1850 | /glob/7.2.3: 1851 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1852 | dependencies: 1853 | fs.realpath: 1.0.0 1854 | inflight: 1.0.6 1855 | inherits: 2.0.4 1856 | minimatch: 3.1.2 1857 | once: 1.4.0 1858 | path-is-absolute: 1.0.1 1859 | dev: true 1860 | 1861 | /globals/11.12.0: 1862 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1863 | engines: {node: '>=4'} 1864 | dev: true 1865 | 1866 | /graceful-fs/4.2.10: 1867 | resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} 1868 | dev: true 1869 | 1870 | /has-flag/3.0.0: 1871 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1872 | engines: {node: '>=4'} 1873 | dev: true 1874 | 1875 | /has-flag/4.0.0: 1876 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1877 | engines: {node: '>=8'} 1878 | dev: true 1879 | 1880 | /has/1.0.3: 1881 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1882 | engines: {node: '>= 0.4.0'} 1883 | dependencies: 1884 | function-bind: 1.1.1 1885 | dev: true 1886 | 1887 | /html-escaper/2.0.2: 1888 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 1889 | dev: true 1890 | 1891 | /html-tags/3.2.0: 1892 | resolution: {integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==} 1893 | engines: {node: '>=8'} 1894 | dev: true 1895 | 1896 | /immutable/4.1.0: 1897 | resolution: {integrity: sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==} 1898 | dev: true 1899 | 1900 | /import-lazy/4.0.0: 1901 | resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} 1902 | engines: {node: '>=8'} 1903 | dev: true 1904 | 1905 | /inflight/1.0.6: 1906 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1907 | dependencies: 1908 | once: 1.4.0 1909 | wrappy: 1.0.2 1910 | dev: true 1911 | 1912 | /inherits/2.0.4: 1913 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1914 | dev: true 1915 | 1916 | /is-binary-path/2.1.0: 1917 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1918 | engines: {node: '>=8'} 1919 | dependencies: 1920 | binary-extensions: 2.2.0 1921 | dev: true 1922 | 1923 | /is-core-module/2.10.0: 1924 | resolution: {integrity: sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==} 1925 | dependencies: 1926 | has: 1.0.3 1927 | dev: true 1928 | 1929 | /is-extglob/2.1.1: 1930 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1931 | engines: {node: '>=0.10.0'} 1932 | dev: true 1933 | 1934 | /is-fullwidth-code-point/3.0.0: 1935 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1936 | engines: {node: '>=8'} 1937 | dev: true 1938 | 1939 | /is-glob/4.0.3: 1940 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1941 | engines: {node: '>=0.10.0'} 1942 | dependencies: 1943 | is-extglob: 2.1.1 1944 | dev: true 1945 | 1946 | /is-number/7.0.0: 1947 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1948 | engines: {node: '>=0.12.0'} 1949 | dev: true 1950 | 1951 | /is-plain-object/3.0.1: 1952 | resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} 1953 | engines: {node: '>=0.10.0'} 1954 | dev: true 1955 | 1956 | /isexe/2.0.0: 1957 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1958 | dev: true 1959 | 1960 | /istanbul-lib-coverage/3.2.0: 1961 | resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} 1962 | engines: {node: '>=8'} 1963 | dev: true 1964 | 1965 | /istanbul-lib-report/3.0.0: 1966 | resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} 1967 | engines: {node: '>=8'} 1968 | dependencies: 1969 | istanbul-lib-coverage: 3.2.0 1970 | make-dir: 3.1.0 1971 | supports-color: 7.2.0 1972 | dev: true 1973 | 1974 | /istanbul-reports/3.1.5: 1975 | resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} 1976 | engines: {node: '>=8'} 1977 | dependencies: 1978 | html-escaper: 2.0.2 1979 | istanbul-lib-report: 3.0.0 1980 | dev: true 1981 | 1982 | /jju/1.4.0: 1983 | resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} 1984 | dev: true 1985 | 1986 | /js-tokens/4.0.0: 1987 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1988 | 1989 | /jsesc/2.5.2: 1990 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 1991 | engines: {node: '>=4'} 1992 | hasBin: true 1993 | dev: true 1994 | 1995 | /json-schema-traverse/0.4.1: 1996 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1997 | dev: true 1998 | 1999 | /json2mq/0.2.0: 2000 | resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==} 2001 | dependencies: 2002 | string-convert: 0.2.1 2003 | dev: false 2004 | 2005 | /json5/2.2.1: 2006 | resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} 2007 | engines: {node: '>=6'} 2008 | hasBin: true 2009 | dev: true 2010 | 2011 | /jsonfile/4.0.0: 2012 | resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 2013 | optionalDependencies: 2014 | graceful-fs: 4.2.10 2015 | dev: true 2016 | 2017 | /jsonfile/6.1.0: 2018 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 2019 | dependencies: 2020 | universalify: 2.0.0 2021 | optionalDependencies: 2022 | graceful-fs: 4.2.10 2023 | dev: true 2024 | 2025 | /kolorist/1.6.0: 2026 | resolution: {integrity: sha512-dLkz37Ab97HWMx9KTes3Tbi3D1ln9fCAy2zr2YVExJasDRPGRaKcoE4fycWNtnCAJfjFqe0cnY+f8KT2JePEXQ==} 2027 | dev: true 2028 | 2029 | /local-pkg/0.4.2: 2030 | resolution: {integrity: sha512-mlERgSPrbxU3BP4qBqAvvwlgW4MTg78iwJdGGnv7kibKjWcJksrG3t6LB5lXI93wXRDvG4NpUgJFmTG4T6rdrg==} 2031 | engines: {node: '>=14'} 2032 | dev: true 2033 | 2034 | /locate-path/6.0.0: 2035 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2036 | engines: {node: '>=10'} 2037 | dependencies: 2038 | p-locate: 5.0.0 2039 | dev: true 2040 | 2041 | /lodash-es/4.17.21: 2042 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} 2043 | dev: true 2044 | 2045 | /lodash-unified/1.0.2_3ib2ivapxullxkx3xftsimdk7u: 2046 | resolution: {integrity: sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g==} 2047 | peerDependencies: 2048 | '@types/lodash-es': '*' 2049 | lodash: '*' 2050 | lodash-es: '*' 2051 | dependencies: 2052 | '@types/lodash-es': 4.17.6 2053 | lodash: 4.17.21 2054 | lodash-es: 4.17.21 2055 | dev: true 2056 | 2057 | /lodash.get/4.4.2: 2058 | resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} 2059 | dev: true 2060 | 2061 | /lodash.isequal/4.5.0: 2062 | resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} 2063 | dev: true 2064 | 2065 | /lodash/4.17.21: 2066 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 2067 | 2068 | /loose-envify/1.4.0: 2069 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 2070 | hasBin: true 2071 | dependencies: 2072 | js-tokens: 4.0.0 2073 | 2074 | /loupe/2.3.4: 2075 | resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==} 2076 | dependencies: 2077 | get-func-name: 2.0.0 2078 | dev: true 2079 | 2080 | /lru-cache/6.0.0: 2081 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2082 | engines: {node: '>=10'} 2083 | dependencies: 2084 | yallist: 4.0.0 2085 | dev: true 2086 | 2087 | /magic-string/0.25.9: 2088 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} 2089 | dependencies: 2090 | sourcemap-codec: 1.4.8 2091 | 2092 | /magic-string/0.26.5: 2093 | resolution: {integrity: sha512-yXUIYOOQnEHKHOftp5shMWpB9ImfgfDJpapa38j/qMtTj5QHWucvxP4lUtuRmHT9vAzvtpHkWKXW9xBwimXeNg==} 2094 | engines: {node: '>=12'} 2095 | dependencies: 2096 | sourcemap-codec: 1.4.8 2097 | dev: true 2098 | 2099 | /make-dir/3.1.0: 2100 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 2101 | engines: {node: '>=8'} 2102 | dependencies: 2103 | semver: 6.3.0 2104 | dev: true 2105 | 2106 | /memoize-one/6.0.0: 2107 | resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} 2108 | 2109 | /merge2/1.4.1: 2110 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2111 | engines: {node: '>= 8'} 2112 | dev: true 2113 | 2114 | /micromatch/4.0.5: 2115 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2116 | engines: {node: '>=8.6'} 2117 | dependencies: 2118 | braces: 3.0.2 2119 | picomatch: 2.3.1 2120 | dev: true 2121 | 2122 | /minimatch/3.1.2: 2123 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2124 | dependencies: 2125 | brace-expansion: 1.1.11 2126 | dev: true 2127 | 2128 | /minimatch/5.1.0: 2129 | resolution: {integrity: sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==} 2130 | engines: {node: '>=10'} 2131 | dependencies: 2132 | brace-expansion: 2.0.1 2133 | dev: true 2134 | 2135 | /mkdirp/1.0.4: 2136 | resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} 2137 | engines: {node: '>=10'} 2138 | hasBin: true 2139 | dev: true 2140 | 2141 | /moment/2.29.4: 2142 | resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} 2143 | dev: false 2144 | 2145 | /ms/2.1.2: 2146 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2147 | dev: true 2148 | 2149 | /nanoid/3.3.4: 2150 | resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} 2151 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2152 | hasBin: true 2153 | 2154 | /nanopop/2.2.0: 2155 | resolution: {integrity: sha512-E9JaHcxh3ere8/BEZHAcnuD10RluTSPyTToBvoFWS9/7DcCx6gyKjbn7M7Bx7E1veCxCuY1iO6h4+gdAf1j73Q==} 2156 | dev: true 2157 | 2158 | /node-releases/2.0.6: 2159 | resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==} 2160 | dev: true 2161 | 2162 | /normalize-path/3.0.0: 2163 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2164 | engines: {node: '>=0.10.0'} 2165 | dev: true 2166 | 2167 | /normalize-wheel-es/1.2.0: 2168 | resolution: {integrity: sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==} 2169 | dev: true 2170 | 2171 | /normalize-wheel/1.0.1: 2172 | resolution: {integrity: sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==} 2173 | dev: false 2174 | 2175 | /once/1.4.0: 2176 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2177 | dependencies: 2178 | wrappy: 1.0.2 2179 | dev: true 2180 | 2181 | /p-limit/3.1.0: 2182 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2183 | engines: {node: '>=10'} 2184 | dependencies: 2185 | yocto-queue: 0.1.0 2186 | dev: true 2187 | 2188 | /p-locate/5.0.0: 2189 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2190 | engines: {node: '>=10'} 2191 | dependencies: 2192 | p-limit: 3.1.0 2193 | dev: true 2194 | 2195 | /path-browserify/1.0.1: 2196 | resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} 2197 | dev: true 2198 | 2199 | /path-exists/4.0.0: 2200 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2201 | engines: {node: '>=8'} 2202 | dev: true 2203 | 2204 | /path-is-absolute/1.0.1: 2205 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2206 | engines: {node: '>=0.10.0'} 2207 | dev: true 2208 | 2209 | /path-key/3.1.1: 2210 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2211 | engines: {node: '>=8'} 2212 | dev: true 2213 | 2214 | /path-parse/1.0.7: 2215 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2216 | dev: true 2217 | 2218 | /pathval/1.1.1: 2219 | resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} 2220 | dev: true 2221 | 2222 | /picocolors/1.0.0: 2223 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2224 | 2225 | /picomatch/2.3.1: 2226 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2227 | engines: {node: '>=8.6'} 2228 | dev: true 2229 | 2230 | /postcss/8.4.17: 2231 | resolution: {integrity: sha512-UNxNOLQydcOFi41yHNMcKRZ39NeXlr8AxGuZJsdub8vIb12fHzcq37DTU/QtbI6WLxNg2gF9Z+8qtRwTj1UI1Q==} 2232 | engines: {node: ^10 || ^12 || >=14} 2233 | dependencies: 2234 | nanoid: 3.3.4 2235 | picocolors: 1.0.0 2236 | source-map-js: 1.0.2 2237 | 2238 | /punycode/2.1.1: 2239 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 2240 | engines: {node: '>=6'} 2241 | dev: true 2242 | 2243 | /queue-microtask/1.2.3: 2244 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2245 | dev: true 2246 | 2247 | /rc-align/4.0.12_biqbaboplfbrettd7655fr4n2y: 2248 | resolution: {integrity: sha512-3DuwSJp8iC/dgHzwreOQl52soj40LchlfUHtgACOUtwGuoFIOVh6n/sCpfqCU8kO5+iz6qR0YKvjgB8iPdE3aQ==} 2249 | peerDependencies: 2250 | react: '>=16.9.0' 2251 | react-dom: '>=16.9.0' 2252 | dependencies: 2253 | '@babel/runtime': 7.19.0 2254 | classnames: 2.3.2 2255 | dom-align: 1.12.3 2256 | lodash: 4.17.21 2257 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2258 | react: 18.2.0 2259 | react-dom: 18.2.0_react@18.2.0 2260 | resize-observer-polyfill: 1.5.1 2261 | dev: false 2262 | 2263 | /rc-cascader/3.7.0_biqbaboplfbrettd7655fr4n2y: 2264 | resolution: {integrity: sha512-SFtGpwmYN7RaWEAGTS4Rkc62ZV/qmQGg/tajr/7mfIkleuu8ro9Hlk6J+aA0x1YS4zlaZBtTcSaXM01QMiEV/A==} 2265 | peerDependencies: 2266 | react: '>=16.9.0' 2267 | react-dom: '>=16.9.0' 2268 | dependencies: 2269 | '@babel/runtime': 7.19.0 2270 | array-tree-filter: 2.1.0 2271 | classnames: 2.3.2 2272 | rc-select: 14.1.13_biqbaboplfbrettd7655fr4n2y 2273 | rc-tree: 5.7.0_biqbaboplfbrettd7655fr4n2y 2274 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2275 | react: 18.2.0 2276 | react-dom: 18.2.0_react@18.2.0 2277 | dev: false 2278 | 2279 | /rc-checkbox/2.3.2_biqbaboplfbrettd7655fr4n2y: 2280 | resolution: {integrity: sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg==} 2281 | peerDependencies: 2282 | react: '>=16.9.0' 2283 | react-dom: '>=16.9.0' 2284 | dependencies: 2285 | '@babel/runtime': 7.19.0 2286 | classnames: 2.3.2 2287 | react: 18.2.0 2288 | react-dom: 18.2.0_react@18.2.0 2289 | dev: false 2290 | 2291 | /rc-collapse/3.3.1_biqbaboplfbrettd7655fr4n2y: 2292 | resolution: {integrity: sha512-cOJfcSe3R8vocrF8T+PgaHDrgeA1tX+lwfhwSj60NX9QVRidsILIbRNDLD6nAzmcvVC5PWiIRiR4S1OobxdhCg==} 2293 | peerDependencies: 2294 | react: '>=16.9.0' 2295 | react-dom: '>=16.9.0' 2296 | dependencies: 2297 | '@babel/runtime': 7.19.0 2298 | classnames: 2.3.2 2299 | rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y 2300 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2301 | react: 18.2.0 2302 | react-dom: 18.2.0_react@18.2.0 2303 | shallowequal: 1.1.0 2304 | dev: false 2305 | 2306 | /rc-dialog/8.9.0_biqbaboplfbrettd7655fr4n2y: 2307 | resolution: {integrity: sha512-Cp0tbJnrvPchJfnwIvOMWmJ4yjX3HWFatO6oBFD1jx8QkgsQCR0p8nUWAKdd3seLJhEC39/v56kZaEjwp9muoQ==} 2308 | peerDependencies: 2309 | react: '>=16.9.0' 2310 | react-dom: '>=16.9.0' 2311 | dependencies: 2312 | '@babel/runtime': 7.19.0 2313 | classnames: 2.3.2 2314 | rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y 2315 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2316 | react: 18.2.0 2317 | react-dom: 18.2.0_react@18.2.0 2318 | dev: false 2319 | 2320 | /rc-drawer/5.1.0_biqbaboplfbrettd7655fr4n2y: 2321 | resolution: {integrity: sha512-pU3Tsn99pxGdYowXehzZbdDVE+4lDXSGb7p8vA9mSmr569oc2Izh4Zw5vLKSe/Xxn2p5MSNbLVqD4tz+pK6SOw==} 2322 | peerDependencies: 2323 | react: '>=16.9.0' 2324 | react-dom: '>=16.9.0' 2325 | dependencies: 2326 | '@babel/runtime': 7.19.0 2327 | classnames: 2.3.2 2328 | rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y 2329 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2330 | react: 18.2.0 2331 | react-dom: 18.2.0_react@18.2.0 2332 | dev: false 2333 | 2334 | /rc-dropdown/4.0.1_biqbaboplfbrettd7655fr4n2y: 2335 | resolution: {integrity: sha512-OdpXuOcme1rm45cR0Jzgfl1otzmU4vuBVb+etXM8vcaULGokAKVpKlw8p6xzspG7jGd/XxShvq+N3VNEfk/l5g==} 2336 | peerDependencies: 2337 | react: '>=16.11.0' 2338 | react-dom: '>=16.11.0' 2339 | dependencies: 2340 | '@babel/runtime': 7.19.0 2341 | classnames: 2.3.2 2342 | rc-trigger: 5.3.1_biqbaboplfbrettd7655fr4n2y 2343 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2344 | react: 18.2.0 2345 | react-dom: 18.2.0_react@18.2.0 2346 | dev: false 2347 | 2348 | /rc-field-form/1.27.2_biqbaboplfbrettd7655fr4n2y: 2349 | resolution: {integrity: sha512-NaTjkSB8JsHRgm52wkDorsDzFf2HH6GmCQ2AqkwO8zo+zIqybw8K1lkzDBMDJI8nw1pFuD46U5QsYZv4blYvdw==} 2350 | engines: {node: '>=8.x'} 2351 | peerDependencies: 2352 | react: '>=16.9.0' 2353 | react-dom: '>=16.9.0' 2354 | dependencies: 2355 | '@babel/runtime': 7.19.0 2356 | async-validator: 4.2.5 2357 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2358 | react: 18.2.0 2359 | react-dom: 18.2.0_react@18.2.0 2360 | dev: false 2361 | 2362 | /rc-image/5.7.1_biqbaboplfbrettd7655fr4n2y: 2363 | resolution: {integrity: sha512-QyMfdhoUfb5W14plqXSisaYwpdstcLYnB0MjX5ccIK2rydQM9sDPuekQWu500DDGR2dBaIF5vx9XbWkNFK17Fg==} 2364 | peerDependencies: 2365 | react: '>=16.9.0' 2366 | react-dom: '>=16.9.0' 2367 | dependencies: 2368 | '@babel/runtime': 7.19.0 2369 | classnames: 2.3.2 2370 | rc-dialog: 8.9.0_biqbaboplfbrettd7655fr4n2y 2371 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2372 | react: 18.2.0 2373 | react-dom: 18.2.0_react@18.2.0 2374 | dev: false 2375 | 2376 | /rc-input-number/7.3.9_biqbaboplfbrettd7655fr4n2y: 2377 | resolution: {integrity: sha512-u0+miS+SATdb6DtssYei2JJ1WuZME+nXaG6XGtR8maNyW5uGDytfDu60OTWLQEb0Anv/AcCzehldV8CKmKyQfA==} 2378 | peerDependencies: 2379 | react: '>=16.9.0' 2380 | react-dom: '>=16.9.0' 2381 | dependencies: 2382 | '@babel/runtime': 7.19.0 2383 | classnames: 2.3.2 2384 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2385 | react: 18.2.0 2386 | react-dom: 18.2.0_react@18.2.0 2387 | dev: false 2388 | 2389 | /rc-input/0.1.2_biqbaboplfbrettd7655fr4n2y: 2390 | resolution: {integrity: sha512-ZPmwcFspgfYpUfbSx3KnLk9gImBcLOrlQCr4oTJ4jBoIXgJLTfm26yelzRgBJewhkvD8uJbgX0sQ/yOzuOHnJg==} 2391 | peerDependencies: 2392 | react: '>=16.0.0' 2393 | react-dom: '>=16.0.0' 2394 | dependencies: 2395 | '@babel/runtime': 7.19.0 2396 | classnames: 2.3.2 2397 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2398 | react: 18.2.0 2399 | react-dom: 18.2.0_react@18.2.0 2400 | dev: false 2401 | 2402 | /rc-mentions/1.9.2_biqbaboplfbrettd7655fr4n2y: 2403 | resolution: {integrity: sha512-uxb/lzNnEGmvraKWNGE6KXMVXvt8RQv9XW8R0Dqi3hYsyPiAZeHRCHQKdLARuk5YBhFhZ6ga55D/8XuY367g3g==} 2404 | peerDependencies: 2405 | react: '>=16.9.0' 2406 | react-dom: '>=16.9.0' 2407 | dependencies: 2408 | '@babel/runtime': 7.19.0 2409 | classnames: 2.3.2 2410 | rc-menu: 9.6.4_biqbaboplfbrettd7655fr4n2y 2411 | rc-textarea: 0.3.7_biqbaboplfbrettd7655fr4n2y 2412 | rc-trigger: 5.3.1_biqbaboplfbrettd7655fr4n2y 2413 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2414 | react: 18.2.0 2415 | react-dom: 18.2.0_react@18.2.0 2416 | dev: false 2417 | 2418 | /rc-menu/9.6.4_biqbaboplfbrettd7655fr4n2y: 2419 | resolution: {integrity: sha512-6DiNAjxjVIPLZXHffXxxcyE15d4isRL7iQ1ru4MqYDH2Cqc5bW96wZOdMydFtGLyDdnmEQ9jVvdCE9yliGvzkw==} 2420 | peerDependencies: 2421 | react: '>=16.9.0' 2422 | react-dom: '>=16.9.0' 2423 | dependencies: 2424 | '@babel/runtime': 7.19.0 2425 | classnames: 2.3.2 2426 | rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y 2427 | rc-overflow: 1.2.8_biqbaboplfbrettd7655fr4n2y 2428 | rc-trigger: 5.3.1_biqbaboplfbrettd7655fr4n2y 2429 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2430 | react: 18.2.0 2431 | react-dom: 18.2.0_react@18.2.0 2432 | shallowequal: 1.1.0 2433 | dev: false 2434 | 2435 | /rc-motion/2.6.2_biqbaboplfbrettd7655fr4n2y: 2436 | resolution: {integrity: sha512-4w1FaX3dtV749P8GwfS4fYnFG4Rb9pxvCYPc/b2fw1cmlHJWNNgOFIz7ysiD+eOrzJSvnLJWlNQQncpNMXwwpg==} 2437 | peerDependencies: 2438 | react: '>=16.9.0' 2439 | react-dom: '>=16.9.0' 2440 | dependencies: 2441 | '@babel/runtime': 7.19.0 2442 | classnames: 2.3.2 2443 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2444 | react: 18.2.0 2445 | react-dom: 18.2.0_react@18.2.0 2446 | dev: false 2447 | 2448 | /rc-notification/4.6.0_biqbaboplfbrettd7655fr4n2y: 2449 | resolution: {integrity: sha512-xF3MKgIoynzjQAO4lqsoraiFo3UXNYlBfpHs0VWvwF+4pimen9/H1DYLN2mfRWhHovW6gRpla73m2nmyIqAMZQ==} 2450 | engines: {node: '>=8.x'} 2451 | peerDependencies: 2452 | react: '>=16.9.0' 2453 | react-dom: '>=16.9.0' 2454 | dependencies: 2455 | '@babel/runtime': 7.19.0 2456 | classnames: 2.3.2 2457 | rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y 2458 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2459 | react: 18.2.0 2460 | react-dom: 18.2.0_react@18.2.0 2461 | dev: false 2462 | 2463 | /rc-overflow/1.2.8_biqbaboplfbrettd7655fr4n2y: 2464 | resolution: {integrity: sha512-QJ0UItckWPQ37ZL1dMEBAdY1dhfTXFL9k6oTTcyydVwoUNMnMqCGqnRNA98axSr/OeDKqR6DVFyi8eA5RQI/uQ==} 2465 | peerDependencies: 2466 | react: '>=16.9.0' 2467 | react-dom: '>=16.9.0' 2468 | dependencies: 2469 | '@babel/runtime': 7.19.0 2470 | classnames: 2.3.2 2471 | rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y 2472 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2473 | react: 18.2.0 2474 | react-dom: 18.2.0_react@18.2.0 2475 | dev: false 2476 | 2477 | /rc-pagination/3.1.17_biqbaboplfbrettd7655fr4n2y: 2478 | resolution: {integrity: sha512-/BQ5UxcBnW28vFAcP2hfh+Xg15W0QZn8TWYwdCApchMH1H0CxiaUUcULP8uXcFM1TygcdKWdt3JqsL9cTAfdkQ==} 2479 | peerDependencies: 2480 | react: '>=16.9.0' 2481 | react-dom: '>=16.9.0' 2482 | dependencies: 2483 | '@babel/runtime': 7.19.0 2484 | classnames: 2.3.2 2485 | react: 18.2.0 2486 | react-dom: 18.2.0_react@18.2.0 2487 | dev: false 2488 | 2489 | /rc-picker/2.6.10_biqbaboplfbrettd7655fr4n2y: 2490 | resolution: {integrity: sha512-9wYtw0DFWs9FO92Qh2D76P0iojUr8ZhLOtScUeOit6ks/F+TBLrOC1uze3IOu+u9gbDAjmosNWLKbBzx/Yuv2w==} 2491 | engines: {node: '>=8.x'} 2492 | peerDependencies: 2493 | react: '>=16.9.0' 2494 | react-dom: '>=16.9.0' 2495 | dependencies: 2496 | '@babel/runtime': 7.19.0 2497 | classnames: 2.3.2 2498 | date-fns: 2.29.3 2499 | dayjs: 1.11.5 2500 | moment: 2.29.4 2501 | rc-trigger: 5.3.1_biqbaboplfbrettd7655fr4n2y 2502 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2503 | react: 18.2.0 2504 | react-dom: 18.2.0_react@18.2.0 2505 | shallowequal: 1.1.0 2506 | dev: false 2507 | 2508 | /rc-progress/3.3.3_biqbaboplfbrettd7655fr4n2y: 2509 | resolution: {integrity: sha512-MDVNVHzGanYtRy2KKraEaWeZLri2ZHWIRyaE1a9MQ2MuJ09m+Wxj5cfcaoaR6z5iRpHpA59YeUxAlpML8N4PJw==} 2510 | peerDependencies: 2511 | react: '>=16.9.0' 2512 | react-dom: '>=16.9.0' 2513 | dependencies: 2514 | '@babel/runtime': 7.19.0 2515 | classnames: 2.3.2 2516 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2517 | react: 18.2.0 2518 | react-dom: 18.2.0_react@18.2.0 2519 | dev: false 2520 | 2521 | /rc-rate/2.9.2_biqbaboplfbrettd7655fr4n2y: 2522 | resolution: {integrity: sha512-SaiZFyN8pe0Fgphv8t3+kidlej+cq/EALkAJAc3A0w0XcPaH2L1aggM8bhe1u6GAGuQNAoFvTLjw4qLPGRKV5g==} 2523 | engines: {node: '>=8.x'} 2524 | peerDependencies: 2525 | react: '>=16.9.0' 2526 | react-dom: '>=16.9.0' 2527 | dependencies: 2528 | '@babel/runtime': 7.19.0 2529 | classnames: 2.3.2 2530 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2531 | react: 18.2.0 2532 | react-dom: 18.2.0_react@18.2.0 2533 | dev: false 2534 | 2535 | /rc-resize-observer/1.2.0_biqbaboplfbrettd7655fr4n2y: 2536 | resolution: {integrity: sha512-6W+UzT3PyDM0wVCEHfoW3qTHPTvbdSgiA43buiy8PzmeMnfgnDeb9NjdimMXMl3/TcrvvWl5RRVdp+NqcR47pQ==} 2537 | peerDependencies: 2538 | react: '>=16.9.0' 2539 | react-dom: '>=16.9.0' 2540 | dependencies: 2541 | '@babel/runtime': 7.19.0 2542 | classnames: 2.3.2 2543 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2544 | react: 18.2.0 2545 | react-dom: 18.2.0_react@18.2.0 2546 | resize-observer-polyfill: 1.5.1 2547 | dev: false 2548 | 2549 | /rc-segmented/2.1.0_biqbaboplfbrettd7655fr4n2y: 2550 | resolution: {integrity: sha512-hUlonro+pYoZcwrH6Vm56B2ftLfQh046hrwif/VwLIw1j3zGt52p5mREBwmeVzXnSwgnagpOpfafspzs1asjGw==} 2551 | peerDependencies: 2552 | react: '>=16.0.0' 2553 | react-dom: '>=16.0.0' 2554 | dependencies: 2555 | '@babel/runtime': 7.19.0 2556 | classnames: 2.3.2 2557 | rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y 2558 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2559 | react: 18.2.0 2560 | react-dom: 18.2.0_react@18.2.0 2561 | dev: false 2562 | 2563 | /rc-select/14.1.13_biqbaboplfbrettd7655fr4n2y: 2564 | resolution: {integrity: sha512-WMEsC3gTwA1dbzWOdVIXDmWyidYNLq68AwvvUlRROw790uGUly0/vmqDozXrIr0QvN/A3CEULx12o+WtLCAefg==} 2565 | engines: {node: '>=8.x'} 2566 | peerDependencies: 2567 | react: '*' 2568 | react-dom: '*' 2569 | dependencies: 2570 | '@babel/runtime': 7.19.0 2571 | classnames: 2.3.2 2572 | rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y 2573 | rc-overflow: 1.2.8_biqbaboplfbrettd7655fr4n2y 2574 | rc-trigger: 5.3.1_biqbaboplfbrettd7655fr4n2y 2575 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2576 | rc-virtual-list: 3.4.8_biqbaboplfbrettd7655fr4n2y 2577 | react: 18.2.0 2578 | react-dom: 18.2.0_react@18.2.0 2579 | dev: false 2580 | 2581 | /rc-slider/10.0.1_biqbaboplfbrettd7655fr4n2y: 2582 | resolution: {integrity: sha512-igTKF3zBet7oS/3yNiIlmU8KnZ45npmrmHlUUio8PNbIhzMcsh+oE/r2UD42Y6YD2D/s+kzCQkzQrPD6RY435Q==} 2583 | engines: {node: '>=8.x'} 2584 | peerDependencies: 2585 | react: '>=16.9.0' 2586 | react-dom: '>=16.9.0' 2587 | dependencies: 2588 | '@babel/runtime': 7.19.0 2589 | classnames: 2.3.2 2590 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2591 | react: 18.2.0 2592 | react-dom: 18.2.0_react@18.2.0 2593 | shallowequal: 1.1.0 2594 | dev: false 2595 | 2596 | /rc-steps/4.1.4_biqbaboplfbrettd7655fr4n2y: 2597 | resolution: {integrity: sha512-qoCqKZWSpkh/b03ASGx1WhpKnuZcRWmvuW+ZUu4mvMdfvFzVxblTwUM+9aBd0mlEUFmt6GW8FXhMpHkK3Uzp3w==} 2598 | engines: {node: '>=8.x'} 2599 | peerDependencies: 2600 | react: '>=16.9.0' 2601 | react-dom: '>=16.9.0' 2602 | dependencies: 2603 | '@babel/runtime': 7.19.0 2604 | classnames: 2.3.2 2605 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2606 | react: 18.2.0 2607 | react-dom: 18.2.0_react@18.2.0 2608 | dev: false 2609 | 2610 | /rc-switch/3.2.2_biqbaboplfbrettd7655fr4n2y: 2611 | resolution: {integrity: sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A==} 2612 | peerDependencies: 2613 | react: '>=16.9.0' 2614 | react-dom: '>=16.9.0' 2615 | dependencies: 2616 | '@babel/runtime': 7.19.0 2617 | classnames: 2.3.2 2618 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2619 | react: 18.2.0 2620 | react-dom: 18.2.0_react@18.2.0 2621 | dev: false 2622 | 2623 | /rc-table/7.26.0_biqbaboplfbrettd7655fr4n2y: 2624 | resolution: {integrity: sha512-0cD8e6S+DTGAt5nBZQIPFYEaIukn17sfa5uFL98faHlH/whZzD8ii3dbFL4wmUDEL4BLybhYop+QUfZJ4CPvNQ==} 2625 | engines: {node: '>=8.x'} 2626 | peerDependencies: 2627 | react: '>=16.9.0' 2628 | react-dom: '>=16.9.0' 2629 | dependencies: 2630 | '@babel/runtime': 7.19.0 2631 | classnames: 2.3.2 2632 | rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y 2633 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2634 | react: 18.2.0 2635 | react-dom: 18.2.0_react@18.2.0 2636 | shallowequal: 1.1.0 2637 | dev: false 2638 | 2639 | /rc-tabs/12.1.0-alpha.1_biqbaboplfbrettd7655fr4n2y: 2640 | resolution: {integrity: sha512-M+B88WEnGSuE+mR54fpgPbZLAakzxa/H6FmEetLBl5WG4I3AcwSk9amuIPC/tu0KXBl+H6Bg5ZwrrEUOBUvgzg==} 2641 | engines: {node: '>=8.x'} 2642 | peerDependencies: 2643 | react: '>=16.9.0' 2644 | react-dom: '>=16.9.0' 2645 | dependencies: 2646 | '@babel/runtime': 7.19.0 2647 | classnames: 2.3.2 2648 | rc-dropdown: 4.0.1_biqbaboplfbrettd7655fr4n2y 2649 | rc-menu: 9.6.4_biqbaboplfbrettd7655fr4n2y 2650 | rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y 2651 | rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y 2652 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2653 | react: 18.2.0 2654 | react-dom: 18.2.0_react@18.2.0 2655 | dev: false 2656 | 2657 | /rc-textarea/0.3.7_biqbaboplfbrettd7655fr4n2y: 2658 | resolution: {integrity: sha512-yCdZ6binKmAQB13hc/oehh0E/QRwoPP1pjF21aHBxlgXO3RzPF6dUu4LG2R4FZ1zx/fQd2L1faktulrXOM/2rw==} 2659 | peerDependencies: 2660 | react: '>=16.9.0' 2661 | react-dom: '>=16.9.0' 2662 | dependencies: 2663 | '@babel/runtime': 7.19.0 2664 | classnames: 2.3.2 2665 | rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y 2666 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2667 | react: 18.2.0 2668 | react-dom: 18.2.0_react@18.2.0 2669 | shallowequal: 1.1.0 2670 | dev: false 2671 | 2672 | /rc-tooltip/5.2.2_biqbaboplfbrettd7655fr4n2y: 2673 | resolution: {integrity: sha512-jtQzU/18S6EI3lhSGoDYhPqNpWajMtS5VV/ld1LwyfrDByQpYmw/LW6U7oFXXLukjfDHQ7Ju705A82PRNFWYhg==} 2674 | peerDependencies: 2675 | react: '>=16.9.0' 2676 | react-dom: '>=16.9.0' 2677 | dependencies: 2678 | '@babel/runtime': 7.19.0 2679 | classnames: 2.3.2 2680 | rc-trigger: 5.3.1_biqbaboplfbrettd7655fr4n2y 2681 | react: 18.2.0 2682 | react-dom: 18.2.0_react@18.2.0 2683 | dev: false 2684 | 2685 | /rc-tree-select/5.5.0_biqbaboplfbrettd7655fr4n2y: 2686 | resolution: {integrity: sha512-XS0Jvw4OjFz/Xvb2byEkBWv55JFKFz0HVvTBa/cPOHJaQh/3EaYwymEMnCCvGEzS1+5CfDVwMtA8j/v4rt1DHw==} 2687 | peerDependencies: 2688 | react: '*' 2689 | react-dom: '*' 2690 | dependencies: 2691 | '@babel/runtime': 7.19.0 2692 | classnames: 2.3.2 2693 | rc-select: 14.1.13_biqbaboplfbrettd7655fr4n2y 2694 | rc-tree: 5.7.0_biqbaboplfbrettd7655fr4n2y 2695 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2696 | react: 18.2.0 2697 | react-dom: 18.2.0_react@18.2.0 2698 | dev: false 2699 | 2700 | /rc-tree/5.7.0_biqbaboplfbrettd7655fr4n2y: 2701 | resolution: {integrity: sha512-F+Ewkv/UcutshnVBMISP+lPdHDlcsL+YH/MQDVWbk+QdkfID7vXiwrHMEZn31+2Rbbm21z/HPceGS8PXGMmnQg==} 2702 | engines: {node: '>=10.x'} 2703 | peerDependencies: 2704 | react: '*' 2705 | react-dom: '*' 2706 | dependencies: 2707 | '@babel/runtime': 7.19.0 2708 | classnames: 2.3.2 2709 | rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y 2710 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2711 | rc-virtual-list: 3.4.8_biqbaboplfbrettd7655fr4n2y 2712 | react: 18.2.0 2713 | react-dom: 18.2.0_react@18.2.0 2714 | dev: false 2715 | 2716 | /rc-trigger/5.3.1_biqbaboplfbrettd7655fr4n2y: 2717 | resolution: {integrity: sha512-5gaFbDkYSefZ14j2AdzucXzlWgU2ri5uEjkHvsf1ynRhdJbKxNOnw4PBZ9+FVULNGFiDzzlVF8RJnR9P/xrnKQ==} 2718 | engines: {node: '>=8.x'} 2719 | peerDependencies: 2720 | react: '>=16.9.0' 2721 | react-dom: '>=16.9.0' 2722 | dependencies: 2723 | '@babel/runtime': 7.19.0 2724 | classnames: 2.3.2 2725 | rc-align: 4.0.12_biqbaboplfbrettd7655fr4n2y 2726 | rc-motion: 2.6.2_biqbaboplfbrettd7655fr4n2y 2727 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2728 | react: 18.2.0 2729 | react-dom: 18.2.0_react@18.2.0 2730 | dev: false 2731 | 2732 | /rc-upload/4.3.4_biqbaboplfbrettd7655fr4n2y: 2733 | resolution: {integrity: sha512-uVbtHFGNjHG/RyAfm9fluXB6pvArAGyAx8z7XzXXyorEgVIWj6mOlriuDm0XowDHYz4ycNK0nE0oP3cbFnzxiQ==} 2734 | peerDependencies: 2735 | react: '>=16.9.0' 2736 | react-dom: '>=16.9.0' 2737 | dependencies: 2738 | '@babel/runtime': 7.19.0 2739 | classnames: 2.3.2 2740 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2741 | react: 18.2.0 2742 | react-dom: 18.2.0_react@18.2.0 2743 | dev: false 2744 | 2745 | /rc-util/5.24.4_biqbaboplfbrettd7655fr4n2y: 2746 | resolution: {integrity: sha512-2a4RQnycV9eV7lVZPEJ7QwJRPlZNc06J7CwcwZo4vIHr3PfUqtYgl1EkUV9ETAc6VRRi8XZOMFhYG63whlIC9Q==} 2747 | peerDependencies: 2748 | react: '>=16.9.0' 2749 | react-dom: '>=16.9.0' 2750 | dependencies: 2751 | '@babel/runtime': 7.19.0 2752 | react: 18.2.0 2753 | react-dom: 18.2.0_react@18.2.0 2754 | react-is: 16.13.1 2755 | shallowequal: 1.1.0 2756 | dev: false 2757 | 2758 | /rc-virtual-list/3.4.8_biqbaboplfbrettd7655fr4n2y: 2759 | resolution: {integrity: sha512-qSN+Rv4i/E7RCTvTMr1uZo7f3crJJg/5DekoCagydo9zsXrxj07zsFSxqizqW+ldGA16lwa8So/bIbV9Ofjddg==} 2760 | engines: {node: '>=8.x'} 2761 | peerDependencies: 2762 | react: '*' 2763 | react-dom: '*' 2764 | dependencies: 2765 | classnames: 2.3.2 2766 | rc-resize-observer: 1.2.0_biqbaboplfbrettd7655fr4n2y 2767 | rc-util: 5.24.4_biqbaboplfbrettd7655fr4n2y 2768 | react: 18.2.0 2769 | react-dom: 18.2.0_react@18.2.0 2770 | dev: false 2771 | 2772 | /react-dom/18.2.0_react@18.2.0: 2773 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 2774 | peerDependencies: 2775 | react: ^18.2.0 2776 | dependencies: 2777 | loose-envify: 1.4.0 2778 | react: 18.2.0 2779 | scheduler: 0.23.0 2780 | dev: false 2781 | 2782 | /react-is/16.13.1: 2783 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 2784 | dev: false 2785 | 2786 | /react-refresh/0.14.0: 2787 | resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} 2788 | engines: {node: '>=0.10.0'} 2789 | dev: true 2790 | 2791 | /react/18.2.0: 2792 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 2793 | engines: {node: '>=0.10.0'} 2794 | dependencies: 2795 | loose-envify: 1.4.0 2796 | dev: false 2797 | 2798 | /readdirp/3.6.0: 2799 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2800 | engines: {node: '>=8.10.0'} 2801 | dependencies: 2802 | picomatch: 2.3.1 2803 | dev: true 2804 | 2805 | /regenerator-runtime/0.11.1: 2806 | resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} 2807 | dev: false 2808 | 2809 | /regenerator-runtime/0.13.9: 2810 | resolution: {integrity: sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==} 2811 | 2812 | /require-directory/2.1.1: 2813 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 2814 | engines: {node: '>=0.10.0'} 2815 | dev: true 2816 | 2817 | /resize-observer-polyfill/1.5.1: 2818 | resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} 2819 | 2820 | /resolve/1.17.0: 2821 | resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} 2822 | dependencies: 2823 | path-parse: 1.0.7 2824 | dev: true 2825 | 2826 | /resolve/1.19.0: 2827 | resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} 2828 | dependencies: 2829 | is-core-module: 2.10.0 2830 | path-parse: 1.0.7 2831 | dev: true 2832 | 2833 | /resolve/1.22.1: 2834 | resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} 2835 | hasBin: true 2836 | dependencies: 2837 | is-core-module: 2.10.0 2838 | path-parse: 1.0.7 2839 | supports-preserve-symlinks-flag: 1.0.0 2840 | dev: true 2841 | 2842 | /reusify/1.0.4: 2843 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2844 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2845 | dev: true 2846 | 2847 | /rimraf/3.0.2: 2848 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2849 | hasBin: true 2850 | dependencies: 2851 | glob: 7.2.3 2852 | dev: true 2853 | 2854 | /rollup/2.78.1: 2855 | resolution: {integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==} 2856 | engines: {node: '>=10.0.0'} 2857 | hasBin: true 2858 | optionalDependencies: 2859 | fsevents: 2.3.2 2860 | dev: true 2861 | 2862 | /run-parallel/1.2.0: 2863 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2864 | dependencies: 2865 | queue-microtask: 1.2.3 2866 | dev: true 2867 | 2868 | /safe-buffer/5.1.2: 2869 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 2870 | dev: true 2871 | 2872 | /sass/1.55.0: 2873 | resolution: {integrity: sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A==} 2874 | engines: {node: '>=12.0.0'} 2875 | hasBin: true 2876 | dependencies: 2877 | chokidar: 3.5.3 2878 | immutable: 4.1.0 2879 | source-map-js: 1.0.2 2880 | dev: true 2881 | 2882 | /scheduler/0.23.0: 2883 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 2884 | dependencies: 2885 | loose-envify: 1.4.0 2886 | dev: false 2887 | 2888 | /scroll-into-view-if-needed/2.2.29: 2889 | resolution: {integrity: sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg==} 2890 | dependencies: 2891 | compute-scroll-into-view: 1.0.17 2892 | 2893 | /semver/6.3.0: 2894 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 2895 | hasBin: true 2896 | dev: true 2897 | 2898 | /semver/7.3.8: 2899 | resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} 2900 | engines: {node: '>=10'} 2901 | hasBin: true 2902 | dependencies: 2903 | lru-cache: 6.0.0 2904 | dev: true 2905 | 2906 | /shallow-equal/1.2.1: 2907 | resolution: {integrity: sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==} 2908 | dev: true 2909 | 2910 | /shallowequal/1.1.0: 2911 | resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} 2912 | dev: false 2913 | 2914 | /shebang-command/2.0.0: 2915 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2916 | engines: {node: '>=8'} 2917 | dependencies: 2918 | shebang-regex: 3.0.0 2919 | dev: true 2920 | 2921 | /shebang-regex/3.0.0: 2922 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2923 | engines: {node: '>=8'} 2924 | dev: true 2925 | 2926 | /signal-exit/3.0.7: 2927 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 2928 | dev: true 2929 | 2930 | /source-map-js/1.0.2: 2931 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2932 | engines: {node: '>=0.10.0'} 2933 | 2934 | /source-map/0.6.1: 2935 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 2936 | engines: {node: '>=0.10.0'} 2937 | 2938 | /sourcemap-codec/1.4.8: 2939 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 2940 | 2941 | /sprintf-js/1.0.3: 2942 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 2943 | dev: true 2944 | 2945 | /string-argv/0.3.1: 2946 | resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} 2947 | engines: {node: '>=0.6.19'} 2948 | dev: true 2949 | 2950 | /string-convert/0.2.1: 2951 | resolution: {integrity: sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==} 2952 | dev: false 2953 | 2954 | /string-width/4.2.3: 2955 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2956 | engines: {node: '>=8'} 2957 | dependencies: 2958 | emoji-regex: 8.0.0 2959 | is-fullwidth-code-point: 3.0.0 2960 | strip-ansi: 6.0.1 2961 | dev: true 2962 | 2963 | /strip-ansi/6.0.1: 2964 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2965 | engines: {node: '>=8'} 2966 | dependencies: 2967 | ansi-regex: 5.0.1 2968 | dev: true 2969 | 2970 | /strip-json-comments/3.1.1: 2971 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2972 | engines: {node: '>=8'} 2973 | dev: true 2974 | 2975 | /strip-literal/0.4.2: 2976 | resolution: {integrity: sha512-pv48ybn4iE1O9RLgCAN0iU4Xv7RlBTiit6DKmMiErbs9x1wH6vXBs45tWc0H5wUIF6TLTrKweqkmYF/iraQKNw==} 2977 | dependencies: 2978 | acorn: 8.8.0 2979 | dev: true 2980 | 2981 | /supports-color/5.5.0: 2982 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2983 | engines: {node: '>=4'} 2984 | dependencies: 2985 | has-flag: 3.0.0 2986 | dev: true 2987 | 2988 | /supports-color/7.2.0: 2989 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2990 | engines: {node: '>=8'} 2991 | dependencies: 2992 | has-flag: 4.0.0 2993 | dev: true 2994 | 2995 | /supports-preserve-symlinks-flag/1.0.0: 2996 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2997 | engines: {node: '>= 0.4'} 2998 | dev: true 2999 | 3000 | /svg-tags/1.0.0: 3001 | resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} 3002 | dev: true 3003 | 3004 | /test-exclude/6.0.0: 3005 | resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} 3006 | engines: {node: '>=8'} 3007 | dependencies: 3008 | '@istanbuljs/schema': 0.1.3 3009 | glob: 7.2.3 3010 | minimatch: 3.1.2 3011 | dev: true 3012 | 3013 | /throttle-debounce/1.1.0: 3014 | resolution: {integrity: sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==} 3015 | engines: {node: '>=4'} 3016 | dev: false 3017 | 3018 | /tinybench/2.3.0: 3019 | resolution: {integrity: sha512-zs1gMVBwyyG2QbVchYIbnabRhMOCGvrwZz/q+SV+LIMa9q5YDQZi2kkI6ZRqV2Bz7ba1uvrc7ieUoE4KWnGeKg==} 3020 | dev: true 3021 | 3022 | /tinypool/0.3.0: 3023 | resolution: {integrity: sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==} 3024 | engines: {node: '>=14.0.0'} 3025 | dev: true 3026 | 3027 | /tinyspy/1.0.2: 3028 | resolution: {integrity: sha512-bSGlgwLBYf7PnUsQ6WOc6SJ3pGOcd+d8AA6EUnLDDM0kWEstC1JIlSZA3UNliDXhd9ABoS7hiRBDCu+XP/sf1Q==} 3029 | engines: {node: '>=14.0.0'} 3030 | dev: true 3031 | 3032 | /to-fast-properties/2.0.0: 3033 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 3034 | engines: {node: '>=4'} 3035 | 3036 | /to-regex-range/5.0.1: 3037 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3038 | engines: {node: '>=8.0'} 3039 | dependencies: 3040 | is-number: 7.0.0 3041 | dev: true 3042 | 3043 | /toggle-selection/1.0.6: 3044 | resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} 3045 | dev: false 3046 | 3047 | /ts-morph/16.0.0: 3048 | resolution: {integrity: sha512-jGNF0GVpFj0orFw55LTsQxVYEUOCWBAbR5Ls7fTYE5pQsbW18ssTb/6UXx/GYAEjS+DQTp8VoTw0vqYMiaaQuw==} 3049 | dependencies: 3050 | '@ts-morph/common': 0.17.0 3051 | code-block-writer: 11.0.3 3052 | dev: true 3053 | 3054 | /type-detect/4.0.8: 3055 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 3056 | engines: {node: '>=4'} 3057 | dev: true 3058 | 3059 | /typescript/4.8.4: 3060 | resolution: {integrity: sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==} 3061 | engines: {node: '>=4.2.0'} 3062 | hasBin: true 3063 | dev: true 3064 | 3065 | /universalify/0.1.2: 3066 | resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 3067 | engines: {node: '>= 4.0.0'} 3068 | dev: true 3069 | 3070 | /universalify/2.0.0: 3071 | resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} 3072 | engines: {node: '>= 10.0.0'} 3073 | dev: true 3074 | 3075 | /update-browserslist-db/1.0.9_browserslist@4.21.4: 3076 | resolution: {integrity: sha512-/xsqn21EGVdXI3EXSum1Yckj3ZVZugqyOZQ/CxYPBD/R+ko9NSUScf8tFF4dOKY+2pvSSJA/S+5B8s4Zr4kyvg==} 3077 | hasBin: true 3078 | peerDependencies: 3079 | browserslist: '>= 4.21.0' 3080 | dependencies: 3081 | browserslist: 4.21.4 3082 | escalade: 3.1.1 3083 | picocolors: 1.0.0 3084 | dev: true 3085 | 3086 | /uri-js/4.4.1: 3087 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3088 | dependencies: 3089 | punycode: 2.1.1 3090 | dev: true 3091 | 3092 | /v8-to-istanbul/9.0.1: 3093 | resolution: {integrity: sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==} 3094 | engines: {node: '>=10.12.0'} 3095 | dependencies: 3096 | '@jridgewell/trace-mapping': 0.3.15 3097 | '@types/istanbul-lib-coverage': 2.0.4 3098 | convert-source-map: 1.8.0 3099 | dev: true 3100 | 3101 | /validator/13.7.0: 3102 | resolution: {integrity: sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==} 3103 | engines: {node: '>= 0.10'} 3104 | dev: true 3105 | 3106 | /vite-plugin-dts/1.6.4_vite@3.1.4: 3107 | resolution: {integrity: sha512-NaCkdhb9f+0jvmIMQRXbRkSokz6AANbTLjoZOhbeXw3IyLhkM0pTguicM14X8/XEAruZ8XdOM/1MyRgEi70P/Q==} 3108 | engines: {node: ^14.18.0 || >=16.0.0} 3109 | requiresBuild: true 3110 | peerDependencies: 3111 | vite: '>=2.9.0' 3112 | dependencies: 3113 | '@microsoft/api-extractor': 7.32.0 3114 | '@rushstack/node-core-library': 3.53.0 3115 | chalk: 4.1.2 3116 | debug: 4.3.4 3117 | fast-glob: 3.2.12 3118 | fs-extra: 10.1.0 3119 | kolorist: 1.6.0 3120 | ts-morph: 16.0.0 3121 | vite: 3.1.4_sass@1.55.0 3122 | transitivePeerDependencies: 3123 | - supports-color 3124 | dev: true 3125 | 3126 | /vite/3.1.4: 3127 | resolution: {integrity: sha512-JoQI08aBjY9lycL7jcEq4p9o1xUjq5aRvdH4KWaXtkSx7e7RpAh9D3IjzDWRD4Fg44LS3oDAIOG/Kq1L+82psA==} 3128 | engines: {node: ^14.18.0 || >=16.0.0} 3129 | hasBin: true 3130 | peerDependencies: 3131 | less: '*' 3132 | sass: '*' 3133 | stylus: '*' 3134 | terser: ^5.4.0 3135 | peerDependenciesMeta: 3136 | less: 3137 | optional: true 3138 | sass: 3139 | optional: true 3140 | stylus: 3141 | optional: true 3142 | terser: 3143 | optional: true 3144 | dependencies: 3145 | esbuild: 0.15.10 3146 | postcss: 8.4.17 3147 | resolve: 1.22.1 3148 | rollup: 2.78.1 3149 | optionalDependencies: 3150 | fsevents: 2.3.2 3151 | dev: true 3152 | 3153 | /vite/3.1.4_sass@1.55.0: 3154 | resolution: {integrity: sha512-JoQI08aBjY9lycL7jcEq4p9o1xUjq5aRvdH4KWaXtkSx7e7RpAh9D3IjzDWRD4Fg44LS3oDAIOG/Kq1L+82psA==} 3155 | engines: {node: ^14.18.0 || >=16.0.0} 3156 | hasBin: true 3157 | peerDependencies: 3158 | less: '*' 3159 | sass: '*' 3160 | stylus: '*' 3161 | terser: ^5.4.0 3162 | peerDependenciesMeta: 3163 | less: 3164 | optional: true 3165 | sass: 3166 | optional: true 3167 | stylus: 3168 | optional: true 3169 | terser: 3170 | optional: true 3171 | dependencies: 3172 | esbuild: 0.15.10 3173 | postcss: 8.4.17 3174 | resolve: 1.22.1 3175 | rollup: 2.78.1 3176 | sass: 1.55.0 3177 | optionalDependencies: 3178 | fsevents: 2.3.2 3179 | dev: true 3180 | 3181 | /vitest/0.23.4_sass@1.55.0: 3182 | resolution: {integrity: sha512-iukBNWqQAv8EKDBUNntspLp9SfpaVFbmzmM0sNcnTxASQZMzRw3PsM6DMlsHiI+I6GeO5/sYDg3ecpC+SNFLrQ==} 3183 | engines: {node: '>=v14.16.0'} 3184 | hasBin: true 3185 | peerDependencies: 3186 | '@edge-runtime/vm': '*' 3187 | '@vitest/browser': '*' 3188 | '@vitest/ui': '*' 3189 | happy-dom: '*' 3190 | jsdom: '*' 3191 | peerDependenciesMeta: 3192 | '@edge-runtime/vm': 3193 | optional: true 3194 | '@vitest/browser': 3195 | optional: true 3196 | '@vitest/ui': 3197 | optional: true 3198 | happy-dom: 3199 | optional: true 3200 | jsdom: 3201 | optional: true 3202 | dependencies: 3203 | '@types/chai': 4.3.3 3204 | '@types/chai-subset': 1.3.3 3205 | '@types/node': 18.8.2 3206 | chai: 4.3.6 3207 | debug: 4.3.4 3208 | local-pkg: 0.4.2 3209 | strip-literal: 0.4.2 3210 | tinybench: 2.3.0 3211 | tinypool: 0.3.0 3212 | tinyspy: 1.0.2 3213 | vite: 3.1.4_sass@1.55.0 3214 | transitivePeerDependencies: 3215 | - less 3216 | - sass 3217 | - stylus 3218 | - supports-color 3219 | - terser 3220 | dev: true 3221 | 3222 | /vue-demi/0.13.11_vue@3.2.40: 3223 | resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} 3224 | engines: {node: '>=12'} 3225 | hasBin: true 3226 | requiresBuild: true 3227 | peerDependencies: 3228 | '@vue/composition-api': ^1.0.0-rc.1 3229 | vue: ^3.0.0-0 || ^2.6.0 3230 | peerDependenciesMeta: 3231 | '@vue/composition-api': 3232 | optional: true 3233 | dependencies: 3234 | vue: 3.2.40 3235 | dev: true 3236 | 3237 | /vue-tsc/0.40.13_typescript@4.8.4: 3238 | resolution: {integrity: sha512-xzuN3g5PnKfJcNrLv4+mAjteMd5wLm5fRhW0034OfNJZY4WhB07vhngea/XeGn7wNYt16r7syonzvW/54dcNiA==} 3239 | hasBin: true 3240 | peerDependencies: 3241 | typescript: '*' 3242 | dependencies: 3243 | '@volar/vue-language-core': 0.40.13 3244 | '@volar/vue-typescript': 0.40.13 3245 | typescript: 4.8.4 3246 | dev: true 3247 | 3248 | /vue-types/3.0.2_vue@3.2.40: 3249 | resolution: {integrity: sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw==} 3250 | engines: {node: '>=10.15.0'} 3251 | peerDependencies: 3252 | vue: ^3.0.0 3253 | dependencies: 3254 | is-plain-object: 3.0.1 3255 | vue: 3.2.40 3256 | dev: true 3257 | 3258 | /vue/2.7.10: 3259 | resolution: {integrity: sha512-HmFC70qarSHPXcKtW8U8fgIkF6JGvjEmDiVInTkKZP0gIlEPhlVlcJJLkdGIDiNkIeA2zJPQTWJUI4iWe+AVfg==} 3260 | dependencies: 3261 | '@vue/compiler-sfc': 2.7.10 3262 | csstype: 3.1.1 3263 | 3264 | /vue/3.2.40: 3265 | resolution: {integrity: sha512-1mGHulzUbl2Nk3pfvI5aXYYyJUs1nm4kyvuz38u4xlQkLUn1i2R7nDbI4TufECmY8v1qNBHYy62bCaM+3cHP2A==} 3266 | dependencies: 3267 | '@vue/compiler-dom': 3.2.40 3268 | '@vue/compiler-sfc': 3.2.40 3269 | '@vue/runtime-dom': 3.2.40 3270 | '@vue/server-renderer': 3.2.40_vue@3.2.40 3271 | '@vue/shared': 3.2.40 3272 | 3273 | /warning/4.0.3: 3274 | resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} 3275 | dependencies: 3276 | loose-envify: 1.4.0 3277 | dev: true 3278 | 3279 | /which/2.0.2: 3280 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3281 | engines: {node: '>= 8'} 3282 | hasBin: true 3283 | dependencies: 3284 | isexe: 2.0.0 3285 | dev: true 3286 | 3287 | /wrap-ansi/7.0.0: 3288 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 3289 | engines: {node: '>=10'} 3290 | dependencies: 3291 | ansi-styles: 4.3.0 3292 | string-width: 4.2.3 3293 | strip-ansi: 6.0.1 3294 | dev: true 3295 | 3296 | /wrappy/1.0.2: 3297 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 3298 | dev: true 3299 | 3300 | /y18n/5.0.8: 3301 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 3302 | engines: {node: '>=10'} 3303 | dev: true 3304 | 3305 | /yallist/4.0.0: 3306 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3307 | dev: true 3308 | 3309 | /yargs-parser/20.2.9: 3310 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} 3311 | engines: {node: '>=10'} 3312 | dev: true 3313 | 3314 | /yargs/16.2.0: 3315 | resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} 3316 | engines: {node: '>=10'} 3317 | dependencies: 3318 | cliui: 7.0.4 3319 | escalade: 3.1.1 3320 | get-caller-file: 2.0.5 3321 | require-directory: 2.1.1 3322 | string-width: 4.2.3 3323 | y18n: 5.0.8 3324 | yargs-parser: 20.2.9 3325 | dev: true 3326 | 3327 | /yocto-queue/0.1.0: 3328 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 3329 | engines: {node: '>=10'} 3330 | dev: true 3331 | 3332 | /z-schema/5.0.4: 3333 | resolution: {integrity: sha512-gm/lx3hDzJNcLwseIeQVm1UcwhWIKpSB4NqH89pTBtFns4k/HDHudsICtvG05Bvw/Mv3jMyk700y5dadueLHdA==} 3334 | engines: {node: '>=8.0.0'} 3335 | hasBin: true 3336 | dependencies: 3337 | lodash.get: 4.4.2 3338 | lodash.isequal: 4.5.0 3339 | validator: 13.7.0 3340 | optionalDependencies: 3341 | commander: 2.20.3 3342 | dev: true 3343 | --------------------------------------------------------------------------------