├── .editorconfig ├── .eslintrc.js ├── .gitignore ├── .prettierignore ├── .prettierrc ├── README.md ├── auto-imports.d.ts ├── components.d.ts ├── index.html ├── package.json ├── pnpm-lock.yaml ├── public └── starpixel.png ├── src ├── App.tsx ├── assets │ ├── images │ │ ├── draw.svg │ │ ├── pixel.svg │ │ └── 星宿.svg │ └── styles │ │ ├── index.scss │ │ ├── mixins.scss │ │ ├── normalize.scss │ │ ├── reset.scss │ │ ├── variables.scss │ │ └── 思源黑体SourceHanSansCN-Regular.be37d606385ec5a4ff63.otf ├── components │ ├── Common.tsx │ ├── FormBody.vue │ ├── FormHead.tsx │ ├── FormView.tsx │ ├── PageHead.tsx │ ├── PluginConfig.vue │ ├── PluginsCard.vue │ ├── PluginsWrap.tsx │ ├── common.scss │ └── plugins │ │ ├── Input.vue │ │ ├── Textarea.vue │ │ ├── index.ts │ │ ├── publicPlugins.ts │ │ └── types │ │ ├── pluginConfig.ts │ │ └── pluginProp.ts ├── env.d.ts ├── main.ts ├── rosy-ui │ ├── button │ │ ├── index.ts │ │ └── src │ │ │ ├── button-types.ts │ │ │ ├── button.scss │ │ │ ├── button.tsx │ │ │ └── use-button.ts │ └── directives │ │ ├── drag │ │ ├── drag.ts │ │ ├── type │ │ │ └── type.ts │ │ ├── utils │ │ │ └── dragUtils.ts │ │ └── v-drag-directives.ts │ │ └── ripple │ │ ├── ripple.ts │ │ ├── utils │ │ └── rippleUtils.ts │ │ └── v-ripple-directives.ts ├── router │ └── index.ts ├── store │ ├── index.ts │ └── type.ts └── views │ ├── home │ └── index.tsx │ └── preview │ ├── index.scss │ └── index.tsx ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | browser: true, 4 | es2021: true, 5 | node: true 6 | }, 7 | extends: [ 8 | 'plugin:vue/essential', 9 | 'airbnb-base', 10 | 'plugin:prettier/recommended' 11 | ], 12 | parserOptions: { 13 | ecmaVersion: 'latest', 14 | parser: '@typescript-eslint/parser', 15 | sourceType: 'module' 16 | }, 17 | plugins: ['vue', '@typescript-eslint'], 18 | rules: { 19 | 'import/no-extraneous-dependencies': 0, 20 | 'import/no-unresolved': 0, 21 | 'import/extensions': 0, 22 | 'no-use-before-define': 0, 23 | 'vue/multi-word-component-names': 0, 24 | 'vue/no-mutating-props': 1, 25 | 'no-param-reassign': [ 26 | 'error', 27 | { 28 | props: true, 29 | ignorePropertyModificationsFor: [ 30 | 'e', // for e.returnvalue 31 | 'ctx', // for Koa routing 32 | 'req', // for Express requests 33 | 'request', // for Express requests 34 | 'res', // for Express responses 35 | 'response', // for Express responses 36 | 'state' // for vuex state 37 | ] 38 | } 39 | ] 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | LICENSE.md 2 | .prettierignore 3 | pnpm-lock.yaml 4 | pnpm-workspace.yaml 5 | /dist/* 6 | .local 7 | .output.js 8 | /node_modules/** 9 | 10 | **/*.svg 11 | **/*.sh 12 | 13 | /public/* 14 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "tabWidth": 2, 4 | "singleQuote": true, 5 | "printWidth": 80, 6 | "trailingComma": "none", 7 | "overrides": [ 8 | { 9 | "files": ["*.json5"], 10 | "options": { 11 | "singleQuote": false, 12 | "quoteProps": "preserve" 13 | } 14 | }, 15 | { 16 | "files": ["*.yml"], 17 | "options": { 18 | "singleQuote": false 19 | } 20 | } 21 | ] 22 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Vue 3 + TypeScript + Vite 2 | 3 | This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 ` 33 | 34 | 35 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "form-design", 3 | "private": true, 4 | "version": "1.0.0", 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "vite build", 8 | "build-tsc": "vue-tsc --noEmit && vite build", 9 | "preview": "vite preview", 10 | "format": "prettier --write ./src", 11 | "lint": "eslint ./src --ext .vue,.js,.ts", 12 | "lint-fix": "eslint --fix ./src --ext .vue,.js,.ts" 13 | }, 14 | "dependencies": { 15 | "@typescript-eslint/parser": "^5.19.0", 16 | "element-plus": "^2.1.9", 17 | "eslint-plugin-import": "^2.25.2", 18 | "hint.css": "^2.7.0", 19 | "intro.js": "^5.1.0", 20 | "loaders.css": "^0.1.2", 21 | "vue": "^3.2.25", 22 | "vue-router": "^4.0.14", 23 | "vuedraggable": "^4.1.0", 24 | "vuex": "^4.0.2" 25 | }, 26 | "devDependencies": { 27 | "@types/intro.js": "^3.0.2", 28 | "@types/node": "^17.0.24", 29 | "@typescript-eslint/eslint-plugin": "^5.19.0", 30 | "@vitejs/plugin-vue": "^2.3.1", 31 | "@vitejs/plugin-vue-jsx": "^1.3.10", 32 | "eslint": "^8.13.0", 33 | "eslint-config-airbnb-base": "^15.0.0", 34 | "eslint-config-prettier": "^8.5.0", 35 | "eslint-plugin-prettier": "^4.0.0", 36 | "eslint-plugin-vue": "^8.6.0", 37 | "prettier": "^2.6.2", 38 | "sass": "^1.50.0", 39 | "typescript": "^4.5.4", 40 | "unplugin-auto-import": "^0.7.1", 41 | "unplugin-vue-components": "^0.19.3", 42 | "vite": "^2.9.2", 43 | "vue-tsc": "^0.29.8" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: 5.3 2 | 3 | specifiers: 4 | '@types/intro.js': ^3.0.2 5 | '@types/node': ^17.0.24 6 | '@typescript-eslint/eslint-plugin': ^5.19.0 7 | '@typescript-eslint/parser': ^5.19.0 8 | '@vitejs/plugin-vue': ^2.3.1 9 | '@vitejs/plugin-vue-jsx': ^1.3.10 10 | element-plus: ^2.1.9 11 | eslint: ^8.13.0 12 | eslint-config-airbnb-base: ^15.0.0 13 | eslint-config-prettier: ^8.5.0 14 | eslint-plugin-import: ^2.25.2 15 | eslint-plugin-prettier: ^4.0.0 16 | eslint-plugin-vue: ^8.6.0 17 | hint.css: ^2.7.0 18 | intro.js: ^5.1.0 19 | loaders.css: ^0.1.2 20 | prettier: ^2.6.2 21 | sass: ^1.50.0 22 | typescript: ^4.5.4 23 | unplugin-auto-import: ^0.7.1 24 | unplugin-vue-components: ^0.19.3 25 | vite: ^2.9.2 26 | vue: ^3.2.25 27 | vue-router: ^4.0.14 28 | vue-tsc: ^0.29.8 29 | vuedraggable: ^4.1.0 30 | vuex: ^4.0.2 31 | 32 | dependencies: 33 | '@typescript-eslint/parser': 5.19.0_eslint@8.13.0+typescript@4.6.3 34 | element-plus: 2.1.9_vue@3.2.33 35 | eslint-plugin-import: 2.26.0_eslint@8.13.0 36 | hint.css: 2.7.0 37 | intro.js: 5.1.0 38 | loaders.css: 0.1.2 39 | vue: 3.2.33 40 | vue-router: 4.0.14_vue@3.2.33 41 | vuedraggable: 4.1.0_vue@3.2.33 42 | vuex: 4.0.2_vue@3.2.33 43 | 44 | devDependencies: 45 | '@types/intro.js': 3.0.2 46 | '@types/node': 17.0.24 47 | '@typescript-eslint/eslint-plugin': 5.19.0_f34adc8488d2e4f014fe61432d70cbf2 48 | '@vitejs/plugin-vue': 2.3.1_vite@2.9.5+vue@3.2.33 49 | '@vitejs/plugin-vue-jsx': 1.3.10 50 | eslint: 8.13.0 51 | eslint-config-airbnb-base: 15.0.0_25dbcfb8cfecb7418ebda712664abe37 52 | eslint-config-prettier: 8.5.0_eslint@8.13.0 53 | eslint-plugin-prettier: 4.0.0_1815ac95b7fb26c13c7d48a8eef62d0f 54 | eslint-plugin-vue: 8.6.0_eslint@8.13.0 55 | prettier: 2.6.2 56 | sass: 1.50.0 57 | typescript: 4.6.3 58 | unplugin-auto-import: 0.7.1_vite@2.9.5 59 | unplugin-vue-components: 0.19.3_vite@2.9.5+vue@3.2.33 60 | vite: 2.9.5_sass@1.50.0 61 | vue-tsc: 0.29.8_typescript@4.6.3 62 | 63 | packages: 64 | 65 | /@ampproject/remapping/2.1.2: 66 | resolution: {integrity: sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==} 67 | engines: {node: '>=6.0.0'} 68 | dependencies: 69 | '@jridgewell/trace-mapping': 0.3.4 70 | dev: true 71 | 72 | /@antfu/utils/0.5.1: 73 | resolution: {integrity: sha512-8Afo0+xvYe1K8Wm4xHTymfTkpzy36aaqDvhXIayUwl+mecMG9Xzl3XjXa6swG6Bk8FBeQ646RyvmsYt6+2Be9g==} 74 | dev: true 75 | 76 | /@babel/code-frame/7.16.7: 77 | resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} 78 | engines: {node: '>=6.9.0'} 79 | dependencies: 80 | '@babel/highlight': 7.17.9 81 | dev: true 82 | 83 | /@babel/compat-data/7.17.7: 84 | resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==} 85 | engines: {node: '>=6.9.0'} 86 | dev: true 87 | 88 | /@babel/core/7.17.9: 89 | resolution: {integrity: sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==} 90 | engines: {node: '>=6.9.0'} 91 | dependencies: 92 | '@ampproject/remapping': 2.1.2 93 | '@babel/code-frame': 7.16.7 94 | '@babel/generator': 7.17.9 95 | '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.17.9 96 | '@babel/helper-module-transforms': 7.17.7 97 | '@babel/helpers': 7.17.9 98 | '@babel/parser': 7.17.9 99 | '@babel/template': 7.16.7 100 | '@babel/traverse': 7.17.9 101 | '@babel/types': 7.17.0 102 | convert-source-map: 1.8.0 103 | debug: 4.3.4 104 | gensync: 1.0.0-beta.2 105 | json5: 2.2.1 106 | semver: 6.3.0 107 | transitivePeerDependencies: 108 | - supports-color 109 | dev: true 110 | 111 | /@babel/generator/7.17.9: 112 | resolution: {integrity: sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==} 113 | engines: {node: '>=6.9.0'} 114 | dependencies: 115 | '@babel/types': 7.17.0 116 | jsesc: 2.5.2 117 | source-map: 0.5.7 118 | dev: true 119 | 120 | /@babel/helper-annotate-as-pure/7.16.7: 121 | resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} 122 | engines: {node: '>=6.9.0'} 123 | dependencies: 124 | '@babel/types': 7.17.0 125 | dev: true 126 | 127 | /@babel/helper-compilation-targets/7.17.7_@babel+core@7.17.9: 128 | resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} 129 | engines: {node: '>=6.9.0'} 130 | peerDependencies: 131 | '@babel/core': ^7.0.0 132 | dependencies: 133 | '@babel/compat-data': 7.17.7 134 | '@babel/core': 7.17.9 135 | '@babel/helper-validator-option': 7.16.7 136 | browserslist: 4.20.2 137 | semver: 6.3.0 138 | dev: true 139 | 140 | /@babel/helper-create-class-features-plugin/7.17.9_@babel+core@7.17.9: 141 | resolution: {integrity: sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==} 142 | engines: {node: '>=6.9.0'} 143 | peerDependencies: 144 | '@babel/core': ^7.0.0 145 | dependencies: 146 | '@babel/core': 7.17.9 147 | '@babel/helper-annotate-as-pure': 7.16.7 148 | '@babel/helper-environment-visitor': 7.16.7 149 | '@babel/helper-function-name': 7.17.9 150 | '@babel/helper-member-expression-to-functions': 7.17.7 151 | '@babel/helper-optimise-call-expression': 7.16.7 152 | '@babel/helper-replace-supers': 7.16.7 153 | '@babel/helper-split-export-declaration': 7.16.7 154 | transitivePeerDependencies: 155 | - supports-color 156 | dev: true 157 | 158 | /@babel/helper-environment-visitor/7.16.7: 159 | resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} 160 | engines: {node: '>=6.9.0'} 161 | dependencies: 162 | '@babel/types': 7.17.0 163 | dev: true 164 | 165 | /@babel/helper-function-name/7.17.9: 166 | resolution: {integrity: sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==} 167 | engines: {node: '>=6.9.0'} 168 | dependencies: 169 | '@babel/template': 7.16.7 170 | '@babel/types': 7.17.0 171 | dev: true 172 | 173 | /@babel/helper-hoist-variables/7.16.7: 174 | resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} 175 | engines: {node: '>=6.9.0'} 176 | dependencies: 177 | '@babel/types': 7.17.0 178 | dev: true 179 | 180 | /@babel/helper-member-expression-to-functions/7.17.7: 181 | resolution: {integrity: sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==} 182 | engines: {node: '>=6.9.0'} 183 | dependencies: 184 | '@babel/types': 7.17.0 185 | dev: true 186 | 187 | /@babel/helper-module-imports/7.16.7: 188 | resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} 189 | engines: {node: '>=6.9.0'} 190 | dependencies: 191 | '@babel/types': 7.17.0 192 | dev: true 193 | 194 | /@babel/helper-module-transforms/7.17.7: 195 | resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==} 196 | engines: {node: '>=6.9.0'} 197 | dependencies: 198 | '@babel/helper-environment-visitor': 7.16.7 199 | '@babel/helper-module-imports': 7.16.7 200 | '@babel/helper-simple-access': 7.17.7 201 | '@babel/helper-split-export-declaration': 7.16.7 202 | '@babel/helper-validator-identifier': 7.16.7 203 | '@babel/template': 7.16.7 204 | '@babel/traverse': 7.17.9 205 | '@babel/types': 7.17.0 206 | transitivePeerDependencies: 207 | - supports-color 208 | dev: true 209 | 210 | /@babel/helper-optimise-call-expression/7.16.7: 211 | resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==} 212 | engines: {node: '>=6.9.0'} 213 | dependencies: 214 | '@babel/types': 7.17.0 215 | dev: true 216 | 217 | /@babel/helper-plugin-utils/7.16.7: 218 | resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==} 219 | engines: {node: '>=6.9.0'} 220 | dev: true 221 | 222 | /@babel/helper-replace-supers/7.16.7: 223 | resolution: {integrity: sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==} 224 | engines: {node: '>=6.9.0'} 225 | dependencies: 226 | '@babel/helper-environment-visitor': 7.16.7 227 | '@babel/helper-member-expression-to-functions': 7.17.7 228 | '@babel/helper-optimise-call-expression': 7.16.7 229 | '@babel/traverse': 7.17.9 230 | '@babel/types': 7.17.0 231 | transitivePeerDependencies: 232 | - supports-color 233 | dev: true 234 | 235 | /@babel/helper-simple-access/7.17.7: 236 | resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==} 237 | engines: {node: '>=6.9.0'} 238 | dependencies: 239 | '@babel/types': 7.17.0 240 | dev: true 241 | 242 | /@babel/helper-split-export-declaration/7.16.7: 243 | resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} 244 | engines: {node: '>=6.9.0'} 245 | dependencies: 246 | '@babel/types': 7.17.0 247 | dev: true 248 | 249 | /@babel/helper-validator-identifier/7.16.7: 250 | resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} 251 | engines: {node: '>=6.9.0'} 252 | dev: true 253 | 254 | /@babel/helper-validator-option/7.16.7: 255 | resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} 256 | engines: {node: '>=6.9.0'} 257 | dev: true 258 | 259 | /@babel/helpers/7.17.9: 260 | resolution: {integrity: sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==} 261 | engines: {node: '>=6.9.0'} 262 | dependencies: 263 | '@babel/template': 7.16.7 264 | '@babel/traverse': 7.17.9 265 | '@babel/types': 7.17.0 266 | transitivePeerDependencies: 267 | - supports-color 268 | dev: true 269 | 270 | /@babel/highlight/7.17.9: 271 | resolution: {integrity: sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==} 272 | engines: {node: '>=6.9.0'} 273 | dependencies: 274 | '@babel/helper-validator-identifier': 7.16.7 275 | chalk: 2.4.2 276 | js-tokens: 4.0.0 277 | dev: true 278 | 279 | /@babel/parser/7.17.9: 280 | resolution: {integrity: sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==} 281 | engines: {node: '>=6.0.0'} 282 | hasBin: true 283 | 284 | /@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.17.9: 285 | resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} 286 | peerDependencies: 287 | '@babel/core': ^7.0.0-0 288 | dependencies: 289 | '@babel/core': 7.17.9 290 | '@babel/helper-plugin-utils': 7.16.7 291 | dev: true 292 | 293 | /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.17.9: 294 | resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} 295 | engines: {node: '>=6.9.0'} 296 | peerDependencies: 297 | '@babel/core': ^7.0.0-0 298 | dependencies: 299 | '@babel/core': 7.17.9 300 | '@babel/helper-plugin-utils': 7.16.7 301 | dev: true 302 | 303 | /@babel/plugin-syntax-typescript/7.16.7_@babel+core@7.17.9: 304 | resolution: {integrity: sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==} 305 | engines: {node: '>=6.9.0'} 306 | peerDependencies: 307 | '@babel/core': ^7.0.0-0 308 | dependencies: 309 | '@babel/core': 7.17.9 310 | '@babel/helper-plugin-utils': 7.16.7 311 | dev: true 312 | 313 | /@babel/plugin-transform-typescript/7.16.8_@babel+core@7.17.9: 314 | resolution: {integrity: sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==} 315 | engines: {node: '>=6.9.0'} 316 | peerDependencies: 317 | '@babel/core': ^7.0.0-0 318 | dependencies: 319 | '@babel/core': 7.17.9 320 | '@babel/helper-create-class-features-plugin': 7.17.9_@babel+core@7.17.9 321 | '@babel/helper-plugin-utils': 7.16.7 322 | '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.17.9 323 | transitivePeerDependencies: 324 | - supports-color 325 | dev: true 326 | 327 | /@babel/template/7.16.7: 328 | resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} 329 | engines: {node: '>=6.9.0'} 330 | dependencies: 331 | '@babel/code-frame': 7.16.7 332 | '@babel/parser': 7.17.9 333 | '@babel/types': 7.17.0 334 | dev: true 335 | 336 | /@babel/traverse/7.17.9: 337 | resolution: {integrity: sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==} 338 | engines: {node: '>=6.9.0'} 339 | dependencies: 340 | '@babel/code-frame': 7.16.7 341 | '@babel/generator': 7.17.9 342 | '@babel/helper-environment-visitor': 7.16.7 343 | '@babel/helper-function-name': 7.17.9 344 | '@babel/helper-hoist-variables': 7.16.7 345 | '@babel/helper-split-export-declaration': 7.16.7 346 | '@babel/parser': 7.17.9 347 | '@babel/types': 7.17.0 348 | debug: 4.3.4 349 | globals: 11.12.0 350 | transitivePeerDependencies: 351 | - supports-color 352 | dev: true 353 | 354 | /@babel/types/7.17.0: 355 | resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} 356 | engines: {node: '>=6.9.0'} 357 | dependencies: 358 | '@babel/helper-validator-identifier': 7.16.7 359 | to-fast-properties: 2.0.0 360 | dev: true 361 | 362 | /@ctrl/tinycolor/3.4.1: 363 | resolution: {integrity: sha512-ej5oVy6lykXsvieQtqZxCOaLT+xD4+QNarq78cIYISHmZXshCvROLudpQN3lfL8G0NL7plMSSK+zlyvCaIJ4Iw==} 364 | engines: {node: '>=10'} 365 | dev: false 366 | 367 | /@element-plus/icons-vue/1.1.4_vue@3.2.33: 368 | resolution: {integrity: sha512-Iz/nHqdp1sFPmdzRwHkEQQA3lKvoObk8azgABZ81QUOpW9s/lUyQVUSh0tNtEPZXQlKwlSh7SPgoVxzrE0uuVQ==} 369 | peerDependencies: 370 | vue: ^3.2.0 371 | dependencies: 372 | vue: 3.2.33 373 | dev: false 374 | 375 | /@emmetio/abbreviation/2.2.3: 376 | resolution: {integrity: sha512-87pltuCPt99aL+y9xS6GPZ+Wmmyhll2WXH73gG/xpGcQ84DRnptBsI2r0BeIQ0EB/SQTOe2ANPqFqj3Rj5FOGA==} 377 | dependencies: 378 | '@emmetio/scanner': 1.0.0 379 | dev: true 380 | 381 | /@emmetio/css-abbreviation/2.1.4: 382 | resolution: {integrity: sha512-qk9L60Y+uRtM5CPbB0y+QNl/1XKE09mSO+AhhSauIfr2YOx/ta3NJw2d8RtCFxgzHeRqFRr8jgyzThbu+MZ4Uw==} 383 | dependencies: 384 | '@emmetio/scanner': 1.0.0 385 | dev: true 386 | 387 | /@emmetio/scanner/1.0.0: 388 | resolution: {integrity: sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==} 389 | dev: true 390 | 391 | /@eslint/eslintrc/1.2.1: 392 | resolution: {integrity: sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==} 393 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 394 | dependencies: 395 | ajv: 6.12.6 396 | debug: 4.3.4 397 | espree: 9.3.1 398 | globals: 13.13.0 399 | ignore: 5.2.0 400 | import-fresh: 3.3.0 401 | js-yaml: 4.1.0 402 | minimatch: 3.1.2 403 | strip-json-comments: 3.1.1 404 | transitivePeerDependencies: 405 | - supports-color 406 | dev: true 407 | 408 | /@floating-ui/core/0.6.1: 409 | resolution: {integrity: sha512-Y30eVMcZva8o84c0HcXAtDO4BEzPJMvF6+B7x7urL2xbAqVsGJhojOyHLaoQHQYjb6OkqRq5kO+zeySycQwKqg==} 410 | dev: false 411 | 412 | /@floating-ui/dom/0.4.4: 413 | resolution: {integrity: sha512-0Ulu3B/dqQplUUSqnTx0foSrlYuMN+GTtlJWvNJwt6Fr7/PqmlR/Y08o6/+bxDWr6p3roBJRaQ51MDZsNmEhhw==} 414 | dependencies: 415 | '@floating-ui/core': 0.6.1 416 | dev: false 417 | 418 | /@humanwhocodes/config-array/0.9.5: 419 | resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} 420 | engines: {node: '>=10.10.0'} 421 | dependencies: 422 | '@humanwhocodes/object-schema': 1.2.1 423 | debug: 4.3.4 424 | minimatch: 3.1.2 425 | transitivePeerDependencies: 426 | - supports-color 427 | dev: true 428 | 429 | /@humanwhocodes/object-schema/1.2.1: 430 | resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} 431 | dev: true 432 | 433 | /@jridgewell/resolve-uri/3.0.5: 434 | resolution: {integrity: sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==} 435 | engines: {node: '>=6.0.0'} 436 | dev: true 437 | 438 | /@jridgewell/sourcemap-codec/1.4.11: 439 | resolution: {integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==} 440 | dev: true 441 | 442 | /@jridgewell/trace-mapping/0.3.4: 443 | resolution: {integrity: sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==} 444 | dependencies: 445 | '@jridgewell/resolve-uri': 3.0.5 446 | '@jridgewell/sourcemap-codec': 1.4.11 447 | dev: true 448 | 449 | /@nodelib/fs.scandir/2.1.5: 450 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 451 | engines: {node: '>= 8'} 452 | dependencies: 453 | '@nodelib/fs.stat': 2.0.5 454 | run-parallel: 1.2.0 455 | 456 | /@nodelib/fs.stat/2.0.5: 457 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 458 | engines: {node: '>= 8'} 459 | 460 | /@nodelib/fs.walk/1.2.8: 461 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 462 | engines: {node: '>= 8'} 463 | dependencies: 464 | '@nodelib/fs.scandir': 2.1.5 465 | fastq: 1.13.0 466 | 467 | /@popperjs/core/2.11.5: 468 | resolution: {integrity: sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==} 469 | dev: false 470 | 471 | /@rollup/pluginutils/4.2.1: 472 | resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} 473 | engines: {node: '>= 8.0.0'} 474 | dependencies: 475 | estree-walker: 2.0.2 476 | picomatch: 2.3.1 477 | dev: true 478 | 479 | /@types/intro.js/3.0.2: 480 | resolution: {integrity: sha512-kow8REgIIG42atN9vAaIdpEqVzj6WzV9m0PII8oce+an4Lc3eyfQF32/FbabbGmfWuF7TceTdd+gh74kOrXkPw==} 481 | dev: true 482 | 483 | /@types/json-schema/7.0.11: 484 | resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} 485 | dev: true 486 | 487 | /@types/json5/0.0.29: 488 | resolution: {integrity: sha1-7ihweulOEdK4J7y+UnC86n8+ce4=} 489 | dev: false 490 | 491 | /@types/lodash-es/4.17.6: 492 | resolution: {integrity: sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==} 493 | dependencies: 494 | '@types/lodash': 4.14.181 495 | dev: false 496 | 497 | /@types/lodash/4.14.181: 498 | resolution: {integrity: sha512-n3tyKthHJbkiWhDZs3DkhkCzt2MexYHXlX0td5iMplyfwketaOeKboEVBqzceH7juqvEg3q5oUoBFxSLu7zFag==} 499 | dev: false 500 | 501 | /@types/node/17.0.24: 502 | resolution: {integrity: sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g==} 503 | dev: true 504 | 505 | /@typescript-eslint/eslint-plugin/5.19.0_f34adc8488d2e4f014fe61432d70cbf2: 506 | resolution: {integrity: sha512-w59GpFqDYGnWFim9p6TGJz7a3qWeENJuAKCqjGSx+Hq/bwq3RZwXYqy98KIfN85yDqz9mq6QXiY5h0FjGQLyEg==} 507 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 508 | peerDependencies: 509 | '@typescript-eslint/parser': ^5.0.0 510 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 511 | typescript: '*' 512 | peerDependenciesMeta: 513 | typescript: 514 | optional: true 515 | dependencies: 516 | '@typescript-eslint/parser': 5.19.0_eslint@8.13.0+typescript@4.6.3 517 | '@typescript-eslint/scope-manager': 5.19.0 518 | '@typescript-eslint/type-utils': 5.19.0_eslint@8.13.0+typescript@4.6.3 519 | '@typescript-eslint/utils': 5.19.0_eslint@8.13.0+typescript@4.6.3 520 | debug: 4.3.4 521 | eslint: 8.13.0 522 | functional-red-black-tree: 1.0.1 523 | ignore: 5.2.0 524 | regexpp: 3.2.0 525 | semver: 7.3.7 526 | tsutils: 3.21.0_typescript@4.6.3 527 | typescript: 4.6.3 528 | transitivePeerDependencies: 529 | - supports-color 530 | dev: true 531 | 532 | /@typescript-eslint/parser/5.19.0_eslint@8.13.0+typescript@4.6.3: 533 | resolution: {integrity: sha512-yhktJjMCJX8BSBczh1F/uY8wGRYrBeyn84kH6oyqdIJwTGKmzX5Qiq49LRQ0Jh0LXnWijEziSo6BRqny8nqLVQ==} 534 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 535 | peerDependencies: 536 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 537 | typescript: '*' 538 | peerDependenciesMeta: 539 | typescript: 540 | optional: true 541 | dependencies: 542 | '@typescript-eslint/scope-manager': 5.19.0 543 | '@typescript-eslint/types': 5.19.0 544 | '@typescript-eslint/typescript-estree': 5.19.0_typescript@4.6.3 545 | debug: 4.3.4 546 | eslint: 8.13.0 547 | typescript: 4.6.3 548 | transitivePeerDependencies: 549 | - supports-color 550 | dev: false 551 | 552 | /@typescript-eslint/scope-manager/5.19.0: 553 | resolution: {integrity: sha512-Fz+VrjLmwq5fbQn5W7cIJZ066HxLMKvDEmf4eu1tZ8O956aoX45jAuBB76miAECMTODyUxH61AQM7q4/GOMQ5g==} 554 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 555 | dependencies: 556 | '@typescript-eslint/types': 5.19.0 557 | '@typescript-eslint/visitor-keys': 5.19.0 558 | 559 | /@typescript-eslint/type-utils/5.19.0_eslint@8.13.0+typescript@4.6.3: 560 | resolution: {integrity: sha512-O6XQ4RI4rQcBGshTQAYBUIGsKqrKeuIOz9v8bckXZnSeXjn/1+BDZndHLe10UplQeJLXDNbaZYrAytKNQO2T4Q==} 561 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 562 | peerDependencies: 563 | eslint: '*' 564 | typescript: '*' 565 | peerDependenciesMeta: 566 | typescript: 567 | optional: true 568 | dependencies: 569 | '@typescript-eslint/utils': 5.19.0_eslint@8.13.0+typescript@4.6.3 570 | debug: 4.3.4 571 | eslint: 8.13.0 572 | tsutils: 3.21.0_typescript@4.6.3 573 | typescript: 4.6.3 574 | transitivePeerDependencies: 575 | - supports-color 576 | dev: true 577 | 578 | /@typescript-eslint/types/5.19.0: 579 | resolution: {integrity: sha512-zR1ithF4Iyq1wLwkDcT+qFnhs8L5VUtjgac212ftiOP/ZZUOCuuF2DeGiZZGQXGoHA50OreZqLH5NjDcDqn34w==} 580 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 581 | 582 | /@typescript-eslint/typescript-estree/5.19.0_typescript@4.6.3: 583 | resolution: {integrity: sha512-dRPuD4ocXdaE1BM/dNR21elSEUPKaWgowCA0bqJ6YbYkvtrPVEvZ+zqcX5a8ECYn3q5iBSSUcBBD42ubaOp0Hw==} 584 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 585 | peerDependencies: 586 | typescript: '*' 587 | peerDependenciesMeta: 588 | typescript: 589 | optional: true 590 | dependencies: 591 | '@typescript-eslint/types': 5.19.0 592 | '@typescript-eslint/visitor-keys': 5.19.0 593 | debug: 4.3.4 594 | globby: 11.1.0 595 | is-glob: 4.0.3 596 | semver: 7.3.7 597 | tsutils: 3.21.0_typescript@4.6.3 598 | typescript: 4.6.3 599 | transitivePeerDependencies: 600 | - supports-color 601 | 602 | /@typescript-eslint/utils/5.19.0_eslint@8.13.0+typescript@4.6.3: 603 | resolution: {integrity: sha512-ZuEckdupXpXamKvFz/Ql8YnePh2ZWcwz7APICzJL985Rp5C2AYcHO62oJzIqNhAMtMK6XvrlBTZeNG8n7gS3lQ==} 604 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 605 | peerDependencies: 606 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 607 | dependencies: 608 | '@types/json-schema': 7.0.11 609 | '@typescript-eslint/scope-manager': 5.19.0 610 | '@typescript-eslint/types': 5.19.0 611 | '@typescript-eslint/typescript-estree': 5.19.0_typescript@4.6.3 612 | eslint: 8.13.0 613 | eslint-scope: 5.1.1 614 | eslint-utils: 3.0.0_eslint@8.13.0 615 | transitivePeerDependencies: 616 | - supports-color 617 | - typescript 618 | dev: true 619 | 620 | /@typescript-eslint/visitor-keys/5.19.0: 621 | resolution: {integrity: sha512-Ym7zZoMDZcAKWsULi2s7UMLREdVQdScPQ/fKWMYefarCztWlHPFVJo8racf8R0Gc8FAEJ2eD4of8As1oFtnQlQ==} 622 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 623 | dependencies: 624 | '@typescript-eslint/types': 5.19.0 625 | eslint-visitor-keys: 3.3.0 626 | 627 | /@vitejs/plugin-vue-jsx/1.3.10: 628 | resolution: {integrity: sha512-Cf5zznh4yNMiEMBfTOztaDVDmK1XXfgxClzOSUVUc8WAmHzogrCUeM8B05ABzuGtg0D1amfng+mUmSIOFGP3Pw==} 629 | engines: {node: '>=12.0.0'} 630 | dependencies: 631 | '@babel/core': 7.17.9 632 | '@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.17.9 633 | '@babel/plugin-transform-typescript': 7.16.8_@babel+core@7.17.9 634 | '@rollup/pluginutils': 4.2.1 635 | '@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.17.9 636 | hash-sum: 2.0.0 637 | transitivePeerDependencies: 638 | - supports-color 639 | dev: true 640 | 641 | /@vitejs/plugin-vue/2.3.1_vite@2.9.5+vue@3.2.33: 642 | resolution: {integrity: sha512-YNzBt8+jt6bSwpt7LP890U1UcTOIZZxfpE5WOJ638PNxSEKOqAi0+FSKS0nVeukfdZ0Ai/H7AFd6k3hayfGZqQ==} 643 | engines: {node: '>=12.0.0'} 644 | peerDependencies: 645 | vite: ^2.5.10 646 | vue: ^3.2.25 647 | dependencies: 648 | vite: 2.9.5_sass@1.50.0 649 | vue: 3.2.33 650 | dev: true 651 | 652 | /@volar/code-gen/0.29.8: 653 | resolution: {integrity: sha512-eohLLUqPChHRPDFT5gXn4V6pr/CeTri7Ou5GI26lUvBRRAbP8p+oYfQRcbMPGeKmVkYjfVj0chsxQGx6T8PQ4Q==} 654 | dependencies: 655 | '@volar/shared': 0.29.8 656 | '@volar/source-map': 0.29.8 657 | dev: true 658 | 659 | /@volar/html2pug/0.29.8: 660 | resolution: {integrity: sha512-bhSNXg8A2aD3w0B+CwmHjqCAaKtj5rORbE5C/q/UdGqptJbC6STCmi30KuRTdfPhR++Xb18Hauf3s/WCmtNAPA==} 661 | dependencies: 662 | domelementtype: 2.3.0 663 | domhandler: 4.3.1 664 | htmlparser2: 7.2.0 665 | pug: 3.0.2 666 | dev: true 667 | 668 | /@volar/shared/0.29.8: 669 | resolution: {integrity: sha512-Y1NN6irkIukD+T0wf4p/dHWYL90sacN2e2lYoDXxRlvoYxwANnHgw0J0Rcp+yw58ElWRScdG7/YntEIuZWeJsw==} 670 | dependencies: 671 | upath: 2.0.1 672 | vscode-jsonrpc: 8.0.0-next.7 673 | vscode-uri: 3.0.3 674 | dev: true 675 | 676 | /@volar/source-map/0.29.8: 677 | resolution: {integrity: sha512-7w+UoYtnc6UQu30CgMVvx0YN4dzDgP4TIsSmUaW62AGmxU9Lxwp3Kkn/4N8efi91z8ma5Z78v/HddyJPwAC3LA==} 678 | dependencies: 679 | '@volar/shared': 0.29.8 680 | dev: true 681 | 682 | /@volar/transforms/0.29.8: 683 | resolution: {integrity: sha512-o2hRa8CoDwYTO1Mu5KA47+1elUnYUjDaVhCvbyKlRfd8qpHea2llotArq7B6OORSL2M9DVs1IRJ5NGURBFeZ3Q==} 684 | dependencies: 685 | '@volar/shared': 0.29.8 686 | vscode-languageserver: 8.0.0-next.10 687 | dev: true 688 | 689 | /@volar/vue-code-gen/0.29.8: 690 | resolution: {integrity: sha512-E1e7P2oktNC/DzgDBditfla4s8+HlUlluZ+BtcLvEdbkl3QEjujkB0x1wxguWzXmpWgLIDPtrS3Jzll5cCOkTg==} 691 | dependencies: 692 | '@volar/code-gen': 0.29.8 693 | '@volar/shared': 0.29.8 694 | '@volar/source-map': 0.29.8 695 | '@vue/compiler-core': 3.2.33 696 | '@vue/compiler-dom': 3.2.33 697 | '@vue/shared': 3.2.33 698 | upath: 2.0.1 699 | dev: true 700 | 701 | /@vscode/emmet-helper/2.8.4: 702 | resolution: {integrity: sha512-lUki5QLS47bz/U8IlG9VQ+1lfxMtxMZENmU5nu4Z71eOD5j9FK0SmYGL5NiVJg9WBWeAU0VxRADMY2Qpq7BfVg==} 703 | dependencies: 704 | emmet: 2.3.6 705 | jsonc-parser: 2.3.1 706 | vscode-languageserver-textdocument: 1.0.4 707 | vscode-languageserver-types: 3.16.0 708 | vscode-nls: 5.0.0 709 | vscode-uri: 2.1.2 710 | dev: true 711 | 712 | /@vue/babel-helper-vue-transform-on/1.0.2: 713 | resolution: {integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==} 714 | dev: true 715 | 716 | /@vue/babel-plugin-jsx/1.1.1_@babel+core@7.17.9: 717 | resolution: {integrity: sha512-j2uVfZjnB5+zkcbc/zsOc0fSNGCMMjaEXP52wdwdIfn0qjFfEYpYZBFKFg+HHnQeJCVrjOeO0YxgaL7DMrym9w==} 718 | dependencies: 719 | '@babel/helper-module-imports': 7.16.7 720 | '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.17.9 721 | '@babel/template': 7.16.7 722 | '@babel/traverse': 7.17.9 723 | '@babel/types': 7.17.0 724 | '@vue/babel-helper-vue-transform-on': 1.0.2 725 | camelcase: 6.3.0 726 | html-tags: 3.2.0 727 | svg-tags: 1.0.0 728 | transitivePeerDependencies: 729 | - '@babel/core' 730 | - supports-color 731 | dev: true 732 | 733 | /@vue/compiler-core/3.2.33: 734 | resolution: {integrity: sha512-AAmr52ji3Zhk7IKIuigX2osWWsb2nQE5xsdFYjdnmtQ4gymmqXbjLvkSE174+fF3A3kstYrTgGkqgOEbsdLDpw==} 735 | dependencies: 736 | '@babel/parser': 7.17.9 737 | '@vue/shared': 3.2.33 738 | estree-walker: 2.0.2 739 | source-map: 0.6.1 740 | 741 | /@vue/compiler-dom/3.2.33: 742 | resolution: {integrity: sha512-GhiG1C8X98Xz9QUX/RlA6/kgPBWJkjq0Rq6//5XTAGSYrTMBgcLpP9+CnlUg1TFxnnCVughAG+KZl28XJqw8uQ==} 743 | dependencies: 744 | '@vue/compiler-core': 3.2.33 745 | '@vue/shared': 3.2.33 746 | 747 | /@vue/compiler-sfc/3.2.33: 748 | resolution: {integrity: sha512-H8D0WqagCr295pQjUYyO8P3IejM3vEzeCO1apzByAEaAR/WimhMYczHfZVvlCE/9yBaEu/eu9RdiWr0kF8b71Q==} 749 | dependencies: 750 | '@babel/parser': 7.17.9 751 | '@vue/compiler-core': 3.2.33 752 | '@vue/compiler-dom': 3.2.33 753 | '@vue/compiler-ssr': 3.2.33 754 | '@vue/reactivity-transform': 3.2.33 755 | '@vue/shared': 3.2.33 756 | estree-walker: 2.0.2 757 | magic-string: 0.25.9 758 | postcss: 8.4.12 759 | source-map: 0.6.1 760 | dev: false 761 | 762 | /@vue/compiler-ssr/3.2.33: 763 | resolution: {integrity: sha512-XQh1Xdk3VquDpXsnoCd7JnMoWec9CfAzQDQsaMcSU79OrrO2PNR0ErlIjm/mGq3GmBfkQjzZACV+7GhfRB8xMQ==} 764 | dependencies: 765 | '@vue/compiler-dom': 3.2.33 766 | '@vue/shared': 3.2.33 767 | dev: false 768 | 769 | /@vue/devtools-api/6.1.4: 770 | resolution: {integrity: sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ==} 771 | dev: false 772 | 773 | /@vue/reactivity-transform/3.2.33: 774 | resolution: {integrity: sha512-4UL5KOIvSQb254aqenW4q34qMXbfZcmEsV/yVidLUgvwYQQ/D21bGX3DlgPUGI3c4C+iOnNmDCkIxkILoX/Pyw==} 775 | dependencies: 776 | '@babel/parser': 7.17.9 777 | '@vue/compiler-core': 3.2.33 778 | '@vue/shared': 3.2.33 779 | estree-walker: 2.0.2 780 | magic-string: 0.25.9 781 | dev: false 782 | 783 | /@vue/reactivity/3.2.33: 784 | resolution: {integrity: sha512-62Sq0mp9/0bLmDuxuLD5CIaMG2susFAGARLuZ/5jkU1FCf9EDbwUuF+BO8Ub3Rbodx0ziIecM/NsmyjardBxfQ==} 785 | dependencies: 786 | '@vue/shared': 3.2.33 787 | 788 | /@vue/runtime-core/3.2.33: 789 | resolution: {integrity: sha512-N2D2vfaXsBPhzCV3JsXQa2NECjxP3eXgZlFqKh4tgakp3iX6LCGv76DLlc+IfFZq+TW10Y8QUfeihXOupJ1dGw==} 790 | dependencies: 791 | '@vue/reactivity': 3.2.33 792 | '@vue/shared': 3.2.33 793 | dev: false 794 | 795 | /@vue/runtime-dom/3.2.33: 796 | resolution: {integrity: sha512-LSrJ6W7CZTSUygX5s8aFkraDWlO6K4geOwA3quFF2O+hC3QuAMZt/0Xb7JKE3C4JD4pFwCSO7oCrZmZ0BIJUnw==} 797 | dependencies: 798 | '@vue/runtime-core': 3.2.33 799 | '@vue/shared': 3.2.33 800 | csstype: 2.6.20 801 | dev: false 802 | 803 | /@vue/server-renderer/3.2.33_vue@3.2.33: 804 | resolution: {integrity: sha512-4jpJHRD4ORv8PlbYi+/MfP8ec1okz6rybe36MdpkDrGIdEItHEUyaHSKvz+ptNEyQpALmmVfRteHkU9F8vxOew==} 805 | peerDependencies: 806 | vue: 3.2.33 807 | dependencies: 808 | '@vue/compiler-ssr': 3.2.33 809 | '@vue/shared': 3.2.33 810 | vue: 3.2.33 811 | dev: false 812 | 813 | /@vue/shared/3.2.33: 814 | resolution: {integrity: sha512-UBc1Pg1T3yZ97vsA2ueER0F6GbJebLHYlEi4ou1H5YL4KWvMOOWwpYo9/QpWq93wxKG6Wo13IY74Hcn/f7c7Bg==} 815 | 816 | /@vueuse/core/8.2.6_vue@3.2.33: 817 | resolution: {integrity: sha512-fzlpM3B5oVe+UhCT1mXlhG1Zxdq2lq1Z2AvddSB8+RxrsSFzII7DKfsQEz8Vop7Lzc++4m8drTNbhPovYoFqHw==} 818 | peerDependencies: 819 | '@vue/composition-api': ^1.1.0 820 | vue: ^2.6.0 || ^3.2.0 821 | peerDependenciesMeta: 822 | '@vue/composition-api': 823 | optional: true 824 | vue: 825 | optional: true 826 | dependencies: 827 | '@vueuse/metadata': 8.2.6 828 | '@vueuse/shared': 8.2.6_vue@3.2.33 829 | vue: 3.2.33 830 | vue-demi: 0.12.5_vue@3.2.33 831 | dev: false 832 | 833 | /@vueuse/metadata/8.2.6: 834 | resolution: {integrity: sha512-OBKtafCt+4RcEJlYDCjp1vl65pBCL2g4TmipEtdZ8/qphKlW6nakJbkY7XRN5grPmjqU99/ahJGtyGk5NHS2hw==} 835 | dev: false 836 | 837 | /@vueuse/shared/8.2.6_vue@3.2.33: 838 | resolution: {integrity: sha512-J/W4CMfdL8TahELuSOgtfVO4eQXTjhigp7dVWIBsLUVFCeY9d49gvHUcQN3y5xYLZ6iNP57TjTQjMMT/zhklkw==} 839 | peerDependencies: 840 | '@vue/composition-api': ^1.1.0 841 | vue: ^2.6.0 || ^3.2.0 842 | peerDependenciesMeta: 843 | '@vue/composition-api': 844 | optional: true 845 | vue: 846 | optional: true 847 | dependencies: 848 | vue: 3.2.33 849 | vue-demi: 0.12.5_vue@3.2.33 850 | dev: false 851 | 852 | /acorn-jsx/5.3.2_acorn@8.7.0: 853 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 854 | peerDependencies: 855 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 856 | dependencies: 857 | acorn: 8.7.0 858 | dev: true 859 | 860 | /acorn/7.4.1: 861 | resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} 862 | engines: {node: '>=0.4.0'} 863 | hasBin: true 864 | dev: true 865 | 866 | /acorn/8.7.0: 867 | resolution: {integrity: sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==} 868 | engines: {node: '>=0.4.0'} 869 | hasBin: true 870 | dev: true 871 | 872 | /ajv/6.12.6: 873 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 874 | dependencies: 875 | fast-deep-equal: 3.1.3 876 | fast-json-stable-stringify: 2.1.0 877 | json-schema-traverse: 0.4.1 878 | uri-js: 4.4.1 879 | dev: true 880 | 881 | /ansi-regex/5.0.1: 882 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 883 | engines: {node: '>=8'} 884 | dev: true 885 | 886 | /ansi-styles/3.2.1: 887 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 888 | engines: {node: '>=4'} 889 | dependencies: 890 | color-convert: 1.9.3 891 | dev: true 892 | 893 | /ansi-styles/4.3.0: 894 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 895 | engines: {node: '>=8'} 896 | dependencies: 897 | color-convert: 2.0.1 898 | dev: true 899 | 900 | /anymatch/3.1.2: 901 | resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} 902 | engines: {node: '>= 8'} 903 | dependencies: 904 | normalize-path: 3.0.0 905 | picomatch: 2.3.1 906 | dev: true 907 | 908 | /argparse/2.0.1: 909 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 910 | dev: true 911 | 912 | /array-includes/3.1.4: 913 | resolution: {integrity: sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==} 914 | engines: {node: '>= 0.4'} 915 | dependencies: 916 | call-bind: 1.0.2 917 | define-properties: 1.1.4 918 | es-abstract: 1.19.5 919 | get-intrinsic: 1.1.1 920 | is-string: 1.0.7 921 | dev: false 922 | 923 | /array-union/2.1.0: 924 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 925 | engines: {node: '>=8'} 926 | 927 | /array.prototype.flat/1.3.0: 928 | resolution: {integrity: sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==} 929 | engines: {node: '>= 0.4'} 930 | dependencies: 931 | call-bind: 1.0.2 932 | define-properties: 1.1.4 933 | es-abstract: 1.19.5 934 | es-shim-unscopables: 1.0.0 935 | dev: false 936 | 937 | /asap/2.0.6: 938 | resolution: {integrity: sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=} 939 | dev: true 940 | 941 | /assert-never/1.2.1: 942 | resolution: {integrity: sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==} 943 | dev: true 944 | 945 | /async-validator/4.0.7: 946 | resolution: {integrity: sha512-Pj2IR7u8hmUEDOwB++su6baaRi+QvsgajuFB9j95foM1N2gy5HM4z60hfusIO0fBPG5uLAEl6yCJr1jNSVugEQ==} 947 | dev: false 948 | 949 | /babel-walk/3.0.0-canary-5: 950 | resolution: {integrity: sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==} 951 | engines: {node: '>= 10.0.0'} 952 | dependencies: 953 | '@babel/types': 7.17.0 954 | dev: true 955 | 956 | /balanced-match/1.0.2: 957 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 958 | 959 | /binary-extensions/2.2.0: 960 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 961 | engines: {node: '>=8'} 962 | dev: true 963 | 964 | /brace-expansion/1.1.11: 965 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 966 | dependencies: 967 | balanced-match: 1.0.2 968 | concat-map: 0.0.1 969 | 970 | /brace-expansion/2.0.1: 971 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 972 | dependencies: 973 | balanced-match: 1.0.2 974 | dev: true 975 | 976 | /braces/3.0.2: 977 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 978 | engines: {node: '>=8'} 979 | dependencies: 980 | fill-range: 7.0.1 981 | 982 | /browserslist/4.20.2: 983 | resolution: {integrity: sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==} 984 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 985 | hasBin: true 986 | dependencies: 987 | caniuse-lite: 1.0.30001332 988 | electron-to-chromium: 1.4.111 989 | escalade: 3.1.1 990 | node-releases: 2.0.3 991 | picocolors: 1.0.0 992 | dev: true 993 | 994 | /call-bind/1.0.2: 995 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} 996 | dependencies: 997 | function-bind: 1.1.1 998 | get-intrinsic: 1.1.1 999 | 1000 | /callsites/3.1.0: 1001 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1002 | engines: {node: '>=6'} 1003 | dev: true 1004 | 1005 | /camelcase/6.3.0: 1006 | resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} 1007 | engines: {node: '>=10'} 1008 | dev: true 1009 | 1010 | /caniuse-lite/1.0.30001332: 1011 | resolution: {integrity: sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==} 1012 | dev: true 1013 | 1014 | /chalk/2.4.2: 1015 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 1016 | engines: {node: '>=4'} 1017 | dependencies: 1018 | ansi-styles: 3.2.1 1019 | escape-string-regexp: 1.0.5 1020 | supports-color: 5.5.0 1021 | dev: true 1022 | 1023 | /chalk/4.1.2: 1024 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1025 | engines: {node: '>=10'} 1026 | dependencies: 1027 | ansi-styles: 4.3.0 1028 | supports-color: 7.2.0 1029 | dev: true 1030 | 1031 | /character-parser/2.2.0: 1032 | resolution: {integrity: sha1-x84o821LzZdE5f/CxfzeHHMmH8A=} 1033 | dependencies: 1034 | is-regex: 1.1.4 1035 | dev: true 1036 | 1037 | /chokidar/3.5.3: 1038 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 1039 | engines: {node: '>= 8.10.0'} 1040 | dependencies: 1041 | anymatch: 3.1.2 1042 | braces: 3.0.2 1043 | glob-parent: 5.1.2 1044 | is-binary-path: 2.1.0 1045 | is-glob: 4.0.3 1046 | normalize-path: 3.0.0 1047 | readdirp: 3.6.0 1048 | optionalDependencies: 1049 | fsevents: 2.3.2 1050 | dev: true 1051 | 1052 | /color-convert/1.9.3: 1053 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 1054 | dependencies: 1055 | color-name: 1.1.3 1056 | dev: true 1057 | 1058 | /color-convert/2.0.1: 1059 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1060 | engines: {node: '>=7.0.0'} 1061 | dependencies: 1062 | color-name: 1.1.4 1063 | dev: true 1064 | 1065 | /color-name/1.1.3: 1066 | resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} 1067 | dev: true 1068 | 1069 | /color-name/1.1.4: 1070 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1071 | dev: true 1072 | 1073 | /concat-map/0.0.1: 1074 | resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} 1075 | 1076 | /confusing-browser-globals/1.0.11: 1077 | resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} 1078 | dev: true 1079 | 1080 | /constantinople/4.0.1: 1081 | resolution: {integrity: sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==} 1082 | dependencies: 1083 | '@babel/parser': 7.17.9 1084 | '@babel/types': 7.17.0 1085 | dev: true 1086 | 1087 | /convert-source-map/1.8.0: 1088 | resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} 1089 | dependencies: 1090 | safe-buffer: 5.1.2 1091 | dev: true 1092 | 1093 | /cross-spawn/7.0.3: 1094 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1095 | engines: {node: '>= 8'} 1096 | dependencies: 1097 | path-key: 3.1.1 1098 | shebang-command: 2.0.0 1099 | which: 2.0.2 1100 | dev: true 1101 | 1102 | /csstype/2.6.20: 1103 | resolution: {integrity: sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==} 1104 | dev: false 1105 | 1106 | /dayjs/1.11.1: 1107 | resolution: {integrity: sha512-ER7EjqVAMkRRsxNCC5YqJ9d9VQYuWdGt7aiH2qA5R5wt8ZmWaP2dLUSIK6y/kVzLMlmh1Tvu5xUf4M/wdGJ5KA==} 1108 | dev: false 1109 | 1110 | /debug/2.6.9: 1111 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 1112 | dependencies: 1113 | ms: 2.0.0 1114 | dev: false 1115 | 1116 | /debug/3.2.7: 1117 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 1118 | dependencies: 1119 | ms: 2.1.2 1120 | dev: false 1121 | 1122 | /debug/4.3.4: 1123 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1124 | engines: {node: '>=6.0'} 1125 | peerDependencies: 1126 | supports-color: '*' 1127 | peerDependenciesMeta: 1128 | supports-color: 1129 | optional: true 1130 | dependencies: 1131 | ms: 2.1.2 1132 | 1133 | /deep-is/0.1.4: 1134 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1135 | dev: true 1136 | 1137 | /define-properties/1.1.4: 1138 | resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==} 1139 | engines: {node: '>= 0.4'} 1140 | dependencies: 1141 | has-property-descriptors: 1.0.0 1142 | object-keys: 1.1.1 1143 | 1144 | /dir-glob/3.0.1: 1145 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1146 | engines: {node: '>=8'} 1147 | dependencies: 1148 | path-type: 4.0.0 1149 | 1150 | /doctrine/2.1.0: 1151 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 1152 | engines: {node: '>=0.10.0'} 1153 | dependencies: 1154 | esutils: 2.0.3 1155 | dev: false 1156 | 1157 | /doctrine/3.0.0: 1158 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1159 | engines: {node: '>=6.0.0'} 1160 | dependencies: 1161 | esutils: 2.0.3 1162 | dev: true 1163 | 1164 | /doctypes/1.1.0: 1165 | resolution: {integrity: sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk=} 1166 | dev: true 1167 | 1168 | /dom-serializer/1.4.1: 1169 | resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} 1170 | dependencies: 1171 | domelementtype: 2.3.0 1172 | domhandler: 4.3.1 1173 | entities: 2.2.0 1174 | dev: true 1175 | 1176 | /domelementtype/2.3.0: 1177 | resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 1178 | dev: true 1179 | 1180 | /domhandler/4.3.1: 1181 | resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} 1182 | engines: {node: '>= 4'} 1183 | dependencies: 1184 | domelementtype: 2.3.0 1185 | dev: true 1186 | 1187 | /domutils/2.8.0: 1188 | resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} 1189 | dependencies: 1190 | dom-serializer: 1.4.1 1191 | domelementtype: 2.3.0 1192 | domhandler: 4.3.1 1193 | dev: true 1194 | 1195 | /electron-to-chromium/1.4.111: 1196 | resolution: {integrity: sha512-/s3+fwhKf1YK4k7btOImOzCQLpUjS6MaPf0ODTNuT4eTM1Bg4itBpLkydhOzJmpmH6Z9eXFyuuK5czsmzRzwtw==} 1197 | dev: true 1198 | 1199 | /element-plus/2.1.9_vue@3.2.33: 1200 | resolution: {integrity: sha512-6mWqS3YrmJPnouWP4otzL8+MehfOnDFqDbcIdnmC07p+Z0JkWe/CVKc4Wky8AYC8nyDMUQyiZYvooCbqGuM7pg==} 1201 | peerDependencies: 1202 | vue: ^3.2.0 1203 | dependencies: 1204 | '@ctrl/tinycolor': 3.4.1 1205 | '@element-plus/icons-vue': 1.1.4_vue@3.2.33 1206 | '@floating-ui/dom': 0.4.4 1207 | '@popperjs/core': 2.11.5 1208 | '@types/lodash': 4.14.181 1209 | '@types/lodash-es': 4.17.6 1210 | '@vueuse/core': 8.2.6_vue@3.2.33 1211 | async-validator: 4.0.7 1212 | dayjs: 1.11.1 1213 | escape-html: 1.0.3 1214 | lodash: 4.17.21 1215 | lodash-es: 4.17.21 1216 | lodash-unified: 1.0.2_da03a4540fbd16bbaafbb96724306afd 1217 | memoize-one: 6.0.0 1218 | normalize-wheel-es: 1.1.2 1219 | vue: 3.2.33 1220 | transitivePeerDependencies: 1221 | - '@vue/composition-api' 1222 | dev: false 1223 | 1224 | /emmet/2.3.6: 1225 | resolution: {integrity: sha512-pLS4PBPDdxuUAmw7Me7+TcHbykTsBKN/S9XJbUOMFQrNv9MoshzyMFK/R57JBm94/6HSL4vHnDeEmxlC82NQ4A==} 1226 | dependencies: 1227 | '@emmetio/abbreviation': 2.2.3 1228 | '@emmetio/css-abbreviation': 2.1.4 1229 | dev: true 1230 | 1231 | /entities/2.2.0: 1232 | resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} 1233 | dev: true 1234 | 1235 | /entities/3.0.1: 1236 | resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} 1237 | engines: {node: '>=0.12'} 1238 | dev: true 1239 | 1240 | /es-abstract/1.19.5: 1241 | resolution: {integrity: sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==} 1242 | engines: {node: '>= 0.4'} 1243 | dependencies: 1244 | call-bind: 1.0.2 1245 | es-to-primitive: 1.2.1 1246 | function-bind: 1.1.1 1247 | get-intrinsic: 1.1.1 1248 | get-symbol-description: 1.0.0 1249 | has: 1.0.3 1250 | has-symbols: 1.0.3 1251 | internal-slot: 1.0.3 1252 | is-callable: 1.2.4 1253 | is-negative-zero: 2.0.2 1254 | is-regex: 1.1.4 1255 | is-shared-array-buffer: 1.0.2 1256 | is-string: 1.0.7 1257 | is-weakref: 1.0.2 1258 | object-inspect: 1.12.0 1259 | object-keys: 1.1.1 1260 | object.assign: 4.1.2 1261 | string.prototype.trimend: 1.0.4 1262 | string.prototype.trimstart: 1.0.4 1263 | unbox-primitive: 1.0.1 1264 | 1265 | /es-shim-unscopables/1.0.0: 1266 | resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} 1267 | dependencies: 1268 | has: 1.0.3 1269 | dev: false 1270 | 1271 | /es-to-primitive/1.2.1: 1272 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 1273 | engines: {node: '>= 0.4'} 1274 | dependencies: 1275 | is-callable: 1.2.4 1276 | is-date-object: 1.0.5 1277 | is-symbol: 1.0.4 1278 | 1279 | /esbuild-android-64/0.14.36: 1280 | resolution: {integrity: sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==} 1281 | engines: {node: '>=12'} 1282 | cpu: [x64] 1283 | os: [android] 1284 | requiresBuild: true 1285 | dev: true 1286 | optional: true 1287 | 1288 | /esbuild-android-arm64/0.14.36: 1289 | resolution: {integrity: sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==} 1290 | engines: {node: '>=12'} 1291 | cpu: [arm64] 1292 | os: [android] 1293 | requiresBuild: true 1294 | dev: true 1295 | optional: true 1296 | 1297 | /esbuild-darwin-64/0.14.36: 1298 | resolution: {integrity: sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==} 1299 | engines: {node: '>=12'} 1300 | cpu: [x64] 1301 | os: [darwin] 1302 | requiresBuild: true 1303 | dev: true 1304 | optional: true 1305 | 1306 | /esbuild-darwin-arm64/0.14.36: 1307 | resolution: {integrity: sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==} 1308 | engines: {node: '>=12'} 1309 | cpu: [arm64] 1310 | os: [darwin] 1311 | requiresBuild: true 1312 | dev: true 1313 | optional: true 1314 | 1315 | /esbuild-freebsd-64/0.14.36: 1316 | resolution: {integrity: sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==} 1317 | engines: {node: '>=12'} 1318 | cpu: [x64] 1319 | os: [freebsd] 1320 | requiresBuild: true 1321 | dev: true 1322 | optional: true 1323 | 1324 | /esbuild-freebsd-arm64/0.14.36: 1325 | resolution: {integrity: sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==} 1326 | engines: {node: '>=12'} 1327 | cpu: [arm64] 1328 | os: [freebsd] 1329 | requiresBuild: true 1330 | dev: true 1331 | optional: true 1332 | 1333 | /esbuild-linux-32/0.14.36: 1334 | resolution: {integrity: sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==} 1335 | engines: {node: '>=12'} 1336 | cpu: [ia32] 1337 | os: [linux] 1338 | requiresBuild: true 1339 | dev: true 1340 | optional: true 1341 | 1342 | /esbuild-linux-64/0.14.36: 1343 | resolution: {integrity: sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==} 1344 | engines: {node: '>=12'} 1345 | cpu: [x64] 1346 | os: [linux] 1347 | requiresBuild: true 1348 | dev: true 1349 | optional: true 1350 | 1351 | /esbuild-linux-arm/0.14.36: 1352 | resolution: {integrity: sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==} 1353 | engines: {node: '>=12'} 1354 | cpu: [arm] 1355 | os: [linux] 1356 | requiresBuild: true 1357 | dev: true 1358 | optional: true 1359 | 1360 | /esbuild-linux-arm64/0.14.36: 1361 | resolution: {integrity: sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==} 1362 | engines: {node: '>=12'} 1363 | cpu: [arm64] 1364 | os: [linux] 1365 | requiresBuild: true 1366 | dev: true 1367 | optional: true 1368 | 1369 | /esbuild-linux-mips64le/0.14.36: 1370 | resolution: {integrity: sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==} 1371 | engines: {node: '>=12'} 1372 | cpu: [mips64el] 1373 | os: [linux] 1374 | requiresBuild: true 1375 | dev: true 1376 | optional: true 1377 | 1378 | /esbuild-linux-ppc64le/0.14.36: 1379 | resolution: {integrity: sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==} 1380 | engines: {node: '>=12'} 1381 | cpu: [ppc64] 1382 | os: [linux] 1383 | requiresBuild: true 1384 | dev: true 1385 | optional: true 1386 | 1387 | /esbuild-linux-riscv64/0.14.36: 1388 | resolution: {integrity: sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==} 1389 | engines: {node: '>=12'} 1390 | cpu: [riscv64] 1391 | os: [linux] 1392 | requiresBuild: true 1393 | dev: true 1394 | optional: true 1395 | 1396 | /esbuild-linux-s390x/0.14.36: 1397 | resolution: {integrity: sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==} 1398 | engines: {node: '>=12'} 1399 | cpu: [s390x] 1400 | os: [linux] 1401 | requiresBuild: true 1402 | dev: true 1403 | optional: true 1404 | 1405 | /esbuild-netbsd-64/0.14.36: 1406 | resolution: {integrity: sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==} 1407 | engines: {node: '>=12'} 1408 | cpu: [x64] 1409 | os: [netbsd] 1410 | requiresBuild: true 1411 | dev: true 1412 | optional: true 1413 | 1414 | /esbuild-openbsd-64/0.14.36: 1415 | resolution: {integrity: sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==} 1416 | engines: {node: '>=12'} 1417 | cpu: [x64] 1418 | os: [openbsd] 1419 | requiresBuild: true 1420 | dev: true 1421 | optional: true 1422 | 1423 | /esbuild-sunos-64/0.14.36: 1424 | resolution: {integrity: sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==} 1425 | engines: {node: '>=12'} 1426 | cpu: [x64] 1427 | os: [sunos] 1428 | requiresBuild: true 1429 | dev: true 1430 | optional: true 1431 | 1432 | /esbuild-windows-32/0.14.36: 1433 | resolution: {integrity: sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==} 1434 | engines: {node: '>=12'} 1435 | cpu: [ia32] 1436 | os: [win32] 1437 | requiresBuild: true 1438 | dev: true 1439 | optional: true 1440 | 1441 | /esbuild-windows-64/0.14.36: 1442 | resolution: {integrity: sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==} 1443 | engines: {node: '>=12'} 1444 | cpu: [x64] 1445 | os: [win32] 1446 | requiresBuild: true 1447 | dev: true 1448 | optional: true 1449 | 1450 | /esbuild-windows-arm64/0.14.36: 1451 | resolution: {integrity: sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==} 1452 | engines: {node: '>=12'} 1453 | cpu: [arm64] 1454 | os: [win32] 1455 | requiresBuild: true 1456 | dev: true 1457 | optional: true 1458 | 1459 | /esbuild/0.14.36: 1460 | resolution: {integrity: sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==} 1461 | engines: {node: '>=12'} 1462 | hasBin: true 1463 | requiresBuild: true 1464 | optionalDependencies: 1465 | esbuild-android-64: 0.14.36 1466 | esbuild-android-arm64: 0.14.36 1467 | esbuild-darwin-64: 0.14.36 1468 | esbuild-darwin-arm64: 0.14.36 1469 | esbuild-freebsd-64: 0.14.36 1470 | esbuild-freebsd-arm64: 0.14.36 1471 | esbuild-linux-32: 0.14.36 1472 | esbuild-linux-64: 0.14.36 1473 | esbuild-linux-arm: 0.14.36 1474 | esbuild-linux-arm64: 0.14.36 1475 | esbuild-linux-mips64le: 0.14.36 1476 | esbuild-linux-ppc64le: 0.14.36 1477 | esbuild-linux-riscv64: 0.14.36 1478 | esbuild-linux-s390x: 0.14.36 1479 | esbuild-netbsd-64: 0.14.36 1480 | esbuild-openbsd-64: 0.14.36 1481 | esbuild-sunos-64: 0.14.36 1482 | esbuild-windows-32: 0.14.36 1483 | esbuild-windows-64: 0.14.36 1484 | esbuild-windows-arm64: 0.14.36 1485 | dev: true 1486 | 1487 | /escalade/3.1.1: 1488 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1489 | engines: {node: '>=6'} 1490 | dev: true 1491 | 1492 | /escape-html/1.0.3: 1493 | resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=} 1494 | dev: false 1495 | 1496 | /escape-string-regexp/1.0.5: 1497 | resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} 1498 | engines: {node: '>=0.8.0'} 1499 | dev: true 1500 | 1501 | /escape-string-regexp/4.0.0: 1502 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1503 | engines: {node: '>=10'} 1504 | dev: true 1505 | 1506 | /eslint-config-airbnb-base/15.0.0_25dbcfb8cfecb7418ebda712664abe37: 1507 | resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} 1508 | engines: {node: ^10.12.0 || >=12.0.0} 1509 | peerDependencies: 1510 | eslint: ^7.32.0 || ^8.2.0 1511 | eslint-plugin-import: ^2.25.2 1512 | dependencies: 1513 | confusing-browser-globals: 1.0.11 1514 | eslint: 8.13.0 1515 | eslint-plugin-import: 2.26.0_eslint@8.13.0 1516 | object.assign: 4.1.2 1517 | object.entries: 1.1.5 1518 | semver: 6.3.0 1519 | dev: true 1520 | 1521 | /eslint-config-prettier/8.5.0_eslint@8.13.0: 1522 | resolution: {integrity: sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==} 1523 | hasBin: true 1524 | peerDependencies: 1525 | eslint: '>=7.0.0' 1526 | dependencies: 1527 | eslint: 8.13.0 1528 | dev: true 1529 | 1530 | /eslint-import-resolver-node/0.3.6: 1531 | resolution: {integrity: sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==} 1532 | dependencies: 1533 | debug: 3.2.7 1534 | resolve: 1.22.0 1535 | dev: false 1536 | 1537 | /eslint-module-utils/2.7.3: 1538 | resolution: {integrity: sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==} 1539 | engines: {node: '>=4'} 1540 | dependencies: 1541 | debug: 3.2.7 1542 | find-up: 2.1.0 1543 | dev: false 1544 | 1545 | /eslint-plugin-import/2.26.0_eslint@8.13.0: 1546 | resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} 1547 | engines: {node: '>=4'} 1548 | peerDependencies: 1549 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1550 | dependencies: 1551 | array-includes: 3.1.4 1552 | array.prototype.flat: 1.3.0 1553 | debug: 2.6.9 1554 | doctrine: 2.1.0 1555 | eslint: 8.13.0 1556 | eslint-import-resolver-node: 0.3.6 1557 | eslint-module-utils: 2.7.3 1558 | has: 1.0.3 1559 | is-core-module: 2.8.1 1560 | is-glob: 4.0.3 1561 | minimatch: 3.1.2 1562 | object.values: 1.1.5 1563 | resolve: 1.22.0 1564 | tsconfig-paths: 3.14.1 1565 | dev: false 1566 | 1567 | /eslint-plugin-prettier/4.0.0_1815ac95b7fb26c13c7d48a8eef62d0f: 1568 | resolution: {integrity: sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==} 1569 | engines: {node: '>=6.0.0'} 1570 | peerDependencies: 1571 | eslint: '>=7.28.0' 1572 | eslint-config-prettier: '*' 1573 | prettier: '>=2.0.0' 1574 | peerDependenciesMeta: 1575 | eslint-config-prettier: 1576 | optional: true 1577 | dependencies: 1578 | eslint: 8.13.0 1579 | eslint-config-prettier: 8.5.0_eslint@8.13.0 1580 | prettier: 2.6.2 1581 | prettier-linter-helpers: 1.0.0 1582 | dev: true 1583 | 1584 | /eslint-plugin-vue/8.6.0_eslint@8.13.0: 1585 | resolution: {integrity: sha512-abXiF2J18n/7ZPy9foSlJyouKf54IqpKlNvNmzhM93N0zs3QUxZG/oBd3tVPOJTKg7SlhBUtPxugpqzNbgGpQQ==} 1586 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1587 | peerDependencies: 1588 | eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 1589 | dependencies: 1590 | eslint: 8.13.0 1591 | eslint-utils: 3.0.0_eslint@8.13.0 1592 | natural-compare: 1.4.0 1593 | semver: 7.3.7 1594 | vue-eslint-parser: 8.3.0_eslint@8.13.0 1595 | transitivePeerDependencies: 1596 | - supports-color 1597 | dev: true 1598 | 1599 | /eslint-scope/5.1.1: 1600 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 1601 | engines: {node: '>=8.0.0'} 1602 | dependencies: 1603 | esrecurse: 4.3.0 1604 | estraverse: 4.3.0 1605 | dev: true 1606 | 1607 | /eslint-scope/7.1.1: 1608 | resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} 1609 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1610 | dependencies: 1611 | esrecurse: 4.3.0 1612 | estraverse: 5.3.0 1613 | dev: true 1614 | 1615 | /eslint-utils/3.0.0_eslint@8.13.0: 1616 | resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} 1617 | engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} 1618 | peerDependencies: 1619 | eslint: '>=5' 1620 | dependencies: 1621 | eslint: 8.13.0 1622 | eslint-visitor-keys: 2.1.0 1623 | dev: true 1624 | 1625 | /eslint-visitor-keys/2.1.0: 1626 | resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} 1627 | engines: {node: '>=10'} 1628 | dev: true 1629 | 1630 | /eslint-visitor-keys/3.3.0: 1631 | resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} 1632 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1633 | 1634 | /eslint/8.13.0: 1635 | resolution: {integrity: sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ==} 1636 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1637 | hasBin: true 1638 | dependencies: 1639 | '@eslint/eslintrc': 1.2.1 1640 | '@humanwhocodes/config-array': 0.9.5 1641 | ajv: 6.12.6 1642 | chalk: 4.1.2 1643 | cross-spawn: 7.0.3 1644 | debug: 4.3.4 1645 | doctrine: 3.0.0 1646 | escape-string-regexp: 4.0.0 1647 | eslint-scope: 7.1.1 1648 | eslint-utils: 3.0.0_eslint@8.13.0 1649 | eslint-visitor-keys: 3.3.0 1650 | espree: 9.3.1 1651 | esquery: 1.4.0 1652 | esutils: 2.0.3 1653 | fast-deep-equal: 3.1.3 1654 | file-entry-cache: 6.0.1 1655 | functional-red-black-tree: 1.0.1 1656 | glob-parent: 6.0.2 1657 | globals: 13.13.0 1658 | ignore: 5.2.0 1659 | import-fresh: 3.3.0 1660 | imurmurhash: 0.1.4 1661 | is-glob: 4.0.3 1662 | js-yaml: 4.1.0 1663 | json-stable-stringify-without-jsonify: 1.0.1 1664 | levn: 0.4.1 1665 | lodash.merge: 4.6.2 1666 | minimatch: 3.1.2 1667 | natural-compare: 1.4.0 1668 | optionator: 0.9.1 1669 | regexpp: 3.2.0 1670 | strip-ansi: 6.0.1 1671 | strip-json-comments: 3.1.1 1672 | text-table: 0.2.0 1673 | v8-compile-cache: 2.3.0 1674 | transitivePeerDependencies: 1675 | - supports-color 1676 | dev: true 1677 | 1678 | /espree/9.3.1: 1679 | resolution: {integrity: sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==} 1680 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1681 | dependencies: 1682 | acorn: 8.7.0 1683 | acorn-jsx: 5.3.2_acorn@8.7.0 1684 | eslint-visitor-keys: 3.3.0 1685 | dev: true 1686 | 1687 | /esquery/1.4.0: 1688 | resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} 1689 | engines: {node: '>=0.10'} 1690 | dependencies: 1691 | estraverse: 5.3.0 1692 | dev: true 1693 | 1694 | /esrecurse/4.3.0: 1695 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1696 | engines: {node: '>=4.0'} 1697 | dependencies: 1698 | estraverse: 5.3.0 1699 | dev: true 1700 | 1701 | /estraverse/4.3.0: 1702 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1703 | engines: {node: '>=4.0'} 1704 | dev: true 1705 | 1706 | /estraverse/5.3.0: 1707 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1708 | engines: {node: '>=4.0'} 1709 | dev: true 1710 | 1711 | /estree-walker/2.0.2: 1712 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1713 | 1714 | /esutils/2.0.3: 1715 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1716 | engines: {node: '>=0.10.0'} 1717 | 1718 | /fast-deep-equal/3.1.3: 1719 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1720 | dev: true 1721 | 1722 | /fast-diff/1.2.0: 1723 | resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} 1724 | dev: true 1725 | 1726 | /fast-glob/3.2.11: 1727 | resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} 1728 | engines: {node: '>=8.6.0'} 1729 | dependencies: 1730 | '@nodelib/fs.stat': 2.0.5 1731 | '@nodelib/fs.walk': 1.2.8 1732 | glob-parent: 5.1.2 1733 | merge2: 1.4.1 1734 | micromatch: 4.0.5 1735 | 1736 | /fast-json-stable-stringify/2.1.0: 1737 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1738 | dev: true 1739 | 1740 | /fast-levenshtein/2.0.6: 1741 | resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=} 1742 | dev: true 1743 | 1744 | /fastq/1.13.0: 1745 | resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} 1746 | dependencies: 1747 | reusify: 1.0.4 1748 | 1749 | /file-entry-cache/6.0.1: 1750 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1751 | engines: {node: ^10.12.0 || >=12.0.0} 1752 | dependencies: 1753 | flat-cache: 3.0.4 1754 | dev: true 1755 | 1756 | /fill-range/7.0.1: 1757 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1758 | engines: {node: '>=8'} 1759 | dependencies: 1760 | to-regex-range: 5.0.1 1761 | 1762 | /find-up/2.1.0: 1763 | resolution: {integrity: sha1-RdG35QbHF93UgndaK3eSCjwMV6c=} 1764 | engines: {node: '>=4'} 1765 | dependencies: 1766 | locate-path: 2.0.0 1767 | dev: false 1768 | 1769 | /flat-cache/3.0.4: 1770 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} 1771 | engines: {node: ^10.12.0 || >=12.0.0} 1772 | dependencies: 1773 | flatted: 3.2.5 1774 | rimraf: 3.0.2 1775 | dev: true 1776 | 1777 | /flatted/3.2.5: 1778 | resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==} 1779 | dev: true 1780 | 1781 | /fs.realpath/1.0.0: 1782 | resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} 1783 | dev: true 1784 | 1785 | /fsevents/2.3.2: 1786 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1787 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1788 | os: [darwin] 1789 | requiresBuild: true 1790 | dev: true 1791 | optional: true 1792 | 1793 | /function-bind/1.1.1: 1794 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1795 | 1796 | /functional-red-black-tree/1.0.1: 1797 | resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=} 1798 | dev: true 1799 | 1800 | /gensync/1.0.0-beta.2: 1801 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1802 | engines: {node: '>=6.9.0'} 1803 | dev: true 1804 | 1805 | /get-intrinsic/1.1.1: 1806 | resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} 1807 | dependencies: 1808 | function-bind: 1.1.1 1809 | has: 1.0.3 1810 | has-symbols: 1.0.3 1811 | 1812 | /get-symbol-description/1.0.0: 1813 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1814 | engines: {node: '>= 0.4'} 1815 | dependencies: 1816 | call-bind: 1.0.2 1817 | get-intrinsic: 1.1.1 1818 | 1819 | /glob-parent/5.1.2: 1820 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1821 | engines: {node: '>= 6'} 1822 | dependencies: 1823 | is-glob: 4.0.3 1824 | 1825 | /glob-parent/6.0.2: 1826 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1827 | engines: {node: '>=10.13.0'} 1828 | dependencies: 1829 | is-glob: 4.0.3 1830 | dev: true 1831 | 1832 | /glob/7.2.0: 1833 | resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} 1834 | dependencies: 1835 | fs.realpath: 1.0.0 1836 | inflight: 1.0.6 1837 | inherits: 2.0.4 1838 | minimatch: 3.1.2 1839 | once: 1.4.0 1840 | path-is-absolute: 1.0.1 1841 | dev: true 1842 | 1843 | /globals/11.12.0: 1844 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1845 | engines: {node: '>=4'} 1846 | dev: true 1847 | 1848 | /globals/13.13.0: 1849 | resolution: {integrity: sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==} 1850 | engines: {node: '>=8'} 1851 | dependencies: 1852 | type-fest: 0.20.2 1853 | dev: true 1854 | 1855 | /globby/11.1.0: 1856 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1857 | engines: {node: '>=10'} 1858 | dependencies: 1859 | array-union: 2.1.0 1860 | dir-glob: 3.0.1 1861 | fast-glob: 3.2.11 1862 | ignore: 5.2.0 1863 | merge2: 1.4.1 1864 | slash: 3.0.0 1865 | 1866 | /has-bigints/1.0.1: 1867 | resolution: {integrity: sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==} 1868 | 1869 | /has-flag/3.0.0: 1870 | resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} 1871 | engines: {node: '>=4'} 1872 | dev: true 1873 | 1874 | /has-flag/4.0.0: 1875 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1876 | engines: {node: '>=8'} 1877 | dev: true 1878 | 1879 | /has-property-descriptors/1.0.0: 1880 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} 1881 | dependencies: 1882 | get-intrinsic: 1.1.1 1883 | 1884 | /has-symbols/1.0.3: 1885 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1886 | engines: {node: '>= 0.4'} 1887 | 1888 | /has-tostringtag/1.0.0: 1889 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1890 | engines: {node: '>= 0.4'} 1891 | dependencies: 1892 | has-symbols: 1.0.3 1893 | 1894 | /has/1.0.3: 1895 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1896 | engines: {node: '>= 0.4.0'} 1897 | dependencies: 1898 | function-bind: 1.1.1 1899 | 1900 | /hash-sum/2.0.0: 1901 | resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} 1902 | dev: true 1903 | 1904 | /hint.css/2.7.0: 1905 | resolution: {integrity: sha512-kNtr/oXTOFA+qYLFAHY1dKVKZuAbavCPB22+w9kaFzqjB9ZLSFJyksxrVsJCphQiQxAYLazXZdrOaGLRe0hZMA==} 1906 | dev: false 1907 | 1908 | /html-tags/3.2.0: 1909 | resolution: {integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==} 1910 | engines: {node: '>=8'} 1911 | dev: true 1912 | 1913 | /htmlparser2/7.2.0: 1914 | resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} 1915 | dependencies: 1916 | domelementtype: 2.3.0 1917 | domhandler: 4.3.1 1918 | domutils: 2.8.0 1919 | entities: 3.0.1 1920 | dev: true 1921 | 1922 | /ignore/5.2.0: 1923 | resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} 1924 | engines: {node: '>= 4'} 1925 | 1926 | /immutable/4.0.0: 1927 | resolution: {integrity: sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==} 1928 | dev: true 1929 | 1930 | /import-fresh/3.3.0: 1931 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1932 | engines: {node: '>=6'} 1933 | dependencies: 1934 | parent-module: 1.0.1 1935 | resolve-from: 4.0.0 1936 | dev: true 1937 | 1938 | /imurmurhash/0.1.4: 1939 | resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=} 1940 | engines: {node: '>=0.8.19'} 1941 | dev: true 1942 | 1943 | /inflight/1.0.6: 1944 | resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} 1945 | dependencies: 1946 | once: 1.4.0 1947 | wrappy: 1.0.2 1948 | dev: true 1949 | 1950 | /inherits/2.0.4: 1951 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1952 | dev: true 1953 | 1954 | /internal-slot/1.0.3: 1955 | resolution: {integrity: sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==} 1956 | engines: {node: '>= 0.4'} 1957 | dependencies: 1958 | get-intrinsic: 1.1.1 1959 | has: 1.0.3 1960 | side-channel: 1.0.4 1961 | 1962 | /intro.js/5.1.0: 1963 | resolution: {integrity: sha512-zwWl/duTh00eeNcZRU4o4/xxloNYPFKs4n4lMRDNx59jZr+qRI0jSOnzqYMOuVftD4beGrmxBHz4k8qp9/dCMA==} 1964 | dev: false 1965 | 1966 | /is-bigint/1.0.4: 1967 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1968 | dependencies: 1969 | has-bigints: 1.0.1 1970 | 1971 | /is-binary-path/2.1.0: 1972 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1973 | engines: {node: '>=8'} 1974 | dependencies: 1975 | binary-extensions: 2.2.0 1976 | dev: true 1977 | 1978 | /is-boolean-object/1.1.2: 1979 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1980 | engines: {node: '>= 0.4'} 1981 | dependencies: 1982 | call-bind: 1.0.2 1983 | has-tostringtag: 1.0.0 1984 | 1985 | /is-callable/1.2.4: 1986 | resolution: {integrity: sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==} 1987 | engines: {node: '>= 0.4'} 1988 | 1989 | /is-core-module/2.8.1: 1990 | resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} 1991 | dependencies: 1992 | has: 1.0.3 1993 | 1994 | /is-date-object/1.0.5: 1995 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1996 | engines: {node: '>= 0.4'} 1997 | dependencies: 1998 | has-tostringtag: 1.0.0 1999 | 2000 | /is-expression/4.0.0: 2001 | resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==} 2002 | dependencies: 2003 | acorn: 7.4.1 2004 | object-assign: 4.1.1 2005 | dev: true 2006 | 2007 | /is-extglob/2.1.1: 2008 | resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} 2009 | engines: {node: '>=0.10.0'} 2010 | 2011 | /is-glob/4.0.3: 2012 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 2013 | engines: {node: '>=0.10.0'} 2014 | dependencies: 2015 | is-extglob: 2.1.1 2016 | 2017 | /is-negative-zero/2.0.2: 2018 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 2019 | engines: {node: '>= 0.4'} 2020 | 2021 | /is-number-object/1.0.7: 2022 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 2023 | engines: {node: '>= 0.4'} 2024 | dependencies: 2025 | has-tostringtag: 1.0.0 2026 | 2027 | /is-number/7.0.0: 2028 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 2029 | engines: {node: '>=0.12.0'} 2030 | 2031 | /is-promise/2.2.2: 2032 | resolution: {integrity: sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==} 2033 | dev: true 2034 | 2035 | /is-regex/1.1.4: 2036 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 2037 | engines: {node: '>= 0.4'} 2038 | dependencies: 2039 | call-bind: 1.0.2 2040 | has-tostringtag: 1.0.0 2041 | 2042 | /is-shared-array-buffer/1.0.2: 2043 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 2044 | dependencies: 2045 | call-bind: 1.0.2 2046 | 2047 | /is-string/1.0.7: 2048 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 2049 | engines: {node: '>= 0.4'} 2050 | dependencies: 2051 | has-tostringtag: 1.0.0 2052 | 2053 | /is-symbol/1.0.4: 2054 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 2055 | engines: {node: '>= 0.4'} 2056 | dependencies: 2057 | has-symbols: 1.0.3 2058 | 2059 | /is-weakref/1.0.2: 2060 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 2061 | dependencies: 2062 | call-bind: 1.0.2 2063 | 2064 | /isexe/2.0.0: 2065 | resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} 2066 | dev: true 2067 | 2068 | /js-stringify/1.0.2: 2069 | resolution: {integrity: sha1-Fzb939lyTyijaCrcYjCufk6Weds=} 2070 | dev: true 2071 | 2072 | /js-tokens/4.0.0: 2073 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2074 | dev: true 2075 | 2076 | /js-yaml/4.1.0: 2077 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 2078 | hasBin: true 2079 | dependencies: 2080 | argparse: 2.0.1 2081 | dev: true 2082 | 2083 | /jsesc/2.5.2: 2084 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 2085 | engines: {node: '>=4'} 2086 | hasBin: true 2087 | dev: true 2088 | 2089 | /json-schema-traverse/0.4.1: 2090 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2091 | dev: true 2092 | 2093 | /json-stable-stringify-without-jsonify/1.0.1: 2094 | resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=} 2095 | dev: true 2096 | 2097 | /json5/1.0.1: 2098 | resolution: {integrity: sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==} 2099 | hasBin: true 2100 | dependencies: 2101 | minimist: 1.2.6 2102 | dev: false 2103 | 2104 | /json5/2.2.1: 2105 | resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} 2106 | engines: {node: '>=6'} 2107 | hasBin: true 2108 | dev: true 2109 | 2110 | /jsonc-parser/2.3.1: 2111 | resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} 2112 | dev: true 2113 | 2114 | /jsonc-parser/3.0.0: 2115 | resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==} 2116 | dev: true 2117 | 2118 | /jstransformer/1.0.0: 2119 | resolution: {integrity: sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM=} 2120 | dependencies: 2121 | is-promise: 2.2.2 2122 | promise: 7.3.1 2123 | dev: true 2124 | 2125 | /levn/0.4.1: 2126 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2127 | engines: {node: '>= 0.8.0'} 2128 | dependencies: 2129 | prelude-ls: 1.2.1 2130 | type-check: 0.4.0 2131 | dev: true 2132 | 2133 | /loaders.css/0.1.2: 2134 | resolution: {integrity: sha1-Op+0NybHMzSjgUKvnQYpAZtlh0M=} 2135 | dev: false 2136 | 2137 | /local-pkg/0.4.1: 2138 | resolution: {integrity: sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==} 2139 | engines: {node: '>=14'} 2140 | dev: true 2141 | 2142 | /locate-path/2.0.0: 2143 | resolution: {integrity: sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=} 2144 | engines: {node: '>=4'} 2145 | dependencies: 2146 | p-locate: 2.0.0 2147 | path-exists: 3.0.0 2148 | dev: false 2149 | 2150 | /lodash-es/4.17.21: 2151 | resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} 2152 | dev: false 2153 | 2154 | /lodash-unified/1.0.2_da03a4540fbd16bbaafbb96724306afd: 2155 | resolution: {integrity: sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g==} 2156 | peerDependencies: 2157 | '@types/lodash-es': '*' 2158 | lodash: '*' 2159 | lodash-es: '*' 2160 | dependencies: 2161 | '@types/lodash-es': 4.17.6 2162 | lodash: 4.17.21 2163 | lodash-es: 4.17.21 2164 | dev: false 2165 | 2166 | /lodash.merge/4.6.2: 2167 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2168 | dev: true 2169 | 2170 | /lodash/4.17.21: 2171 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 2172 | 2173 | /lru-cache/6.0.0: 2174 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2175 | engines: {node: '>=10'} 2176 | dependencies: 2177 | yallist: 4.0.0 2178 | 2179 | /magic-string/0.25.9: 2180 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} 2181 | dependencies: 2182 | sourcemap-codec: 1.4.8 2183 | dev: false 2184 | 2185 | /magic-string/0.26.1: 2186 | resolution: {integrity: sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==} 2187 | engines: {node: '>=12'} 2188 | dependencies: 2189 | sourcemap-codec: 1.4.8 2190 | dev: true 2191 | 2192 | /memoize-one/6.0.0: 2193 | resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} 2194 | dev: false 2195 | 2196 | /merge2/1.4.1: 2197 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2198 | engines: {node: '>= 8'} 2199 | 2200 | /micromatch/4.0.5: 2201 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2202 | engines: {node: '>=8.6'} 2203 | dependencies: 2204 | braces: 3.0.2 2205 | picomatch: 2.3.1 2206 | 2207 | /minimatch/3.1.2: 2208 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2209 | dependencies: 2210 | brace-expansion: 1.1.11 2211 | 2212 | /minimatch/5.0.1: 2213 | resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} 2214 | engines: {node: '>=10'} 2215 | dependencies: 2216 | brace-expansion: 2.0.1 2217 | dev: true 2218 | 2219 | /minimist/1.2.6: 2220 | resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} 2221 | dev: false 2222 | 2223 | /ms/2.0.0: 2224 | resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} 2225 | dev: false 2226 | 2227 | /ms/2.1.2: 2228 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2229 | 2230 | /nanoid/3.3.2: 2231 | resolution: {integrity: sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==} 2232 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2233 | hasBin: true 2234 | 2235 | /natural-compare/1.4.0: 2236 | resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} 2237 | dev: true 2238 | 2239 | /node-releases/2.0.3: 2240 | resolution: {integrity: sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==} 2241 | dev: true 2242 | 2243 | /normalize-path/3.0.0: 2244 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2245 | engines: {node: '>=0.10.0'} 2246 | dev: true 2247 | 2248 | /normalize-wheel-es/1.1.2: 2249 | resolution: {integrity: sha512-scX83plWJXYH1J4+BhAuIHadROzxX0UBF3+HuZNY2Ks8BciE7tSTQ+5JhTsvzjaO0/EJdm4JBGrfObKxFf3Png==} 2250 | dev: false 2251 | 2252 | /object-assign/4.1.1: 2253 | resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} 2254 | engines: {node: '>=0.10.0'} 2255 | dev: true 2256 | 2257 | /object-inspect/1.12.0: 2258 | resolution: {integrity: sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==} 2259 | 2260 | /object-keys/1.1.1: 2261 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2262 | engines: {node: '>= 0.4'} 2263 | 2264 | /object.assign/4.1.2: 2265 | resolution: {integrity: sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==} 2266 | engines: {node: '>= 0.4'} 2267 | dependencies: 2268 | call-bind: 1.0.2 2269 | define-properties: 1.1.4 2270 | has-symbols: 1.0.3 2271 | object-keys: 1.1.1 2272 | 2273 | /object.entries/1.1.5: 2274 | resolution: {integrity: sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==} 2275 | engines: {node: '>= 0.4'} 2276 | dependencies: 2277 | call-bind: 1.0.2 2278 | define-properties: 1.1.4 2279 | es-abstract: 1.19.5 2280 | dev: true 2281 | 2282 | /object.values/1.1.5: 2283 | resolution: {integrity: sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==} 2284 | engines: {node: '>= 0.4'} 2285 | dependencies: 2286 | call-bind: 1.0.2 2287 | define-properties: 1.1.4 2288 | es-abstract: 1.19.5 2289 | dev: false 2290 | 2291 | /once/1.4.0: 2292 | resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} 2293 | dependencies: 2294 | wrappy: 1.0.2 2295 | dev: true 2296 | 2297 | /optionator/0.9.1: 2298 | resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} 2299 | engines: {node: '>= 0.8.0'} 2300 | dependencies: 2301 | deep-is: 0.1.4 2302 | fast-levenshtein: 2.0.6 2303 | levn: 0.4.1 2304 | prelude-ls: 1.2.1 2305 | type-check: 0.4.0 2306 | word-wrap: 1.2.3 2307 | dev: true 2308 | 2309 | /p-limit/1.3.0: 2310 | resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} 2311 | engines: {node: '>=4'} 2312 | dependencies: 2313 | p-try: 1.0.0 2314 | dev: false 2315 | 2316 | /p-locate/2.0.0: 2317 | resolution: {integrity: sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=} 2318 | engines: {node: '>=4'} 2319 | dependencies: 2320 | p-limit: 1.3.0 2321 | dev: false 2322 | 2323 | /p-try/1.0.0: 2324 | resolution: {integrity: sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=} 2325 | engines: {node: '>=4'} 2326 | dev: false 2327 | 2328 | /parent-module/1.0.1: 2329 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2330 | engines: {node: '>=6'} 2331 | dependencies: 2332 | callsites: 3.1.0 2333 | dev: true 2334 | 2335 | /path-exists/3.0.0: 2336 | resolution: {integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=} 2337 | engines: {node: '>=4'} 2338 | dev: false 2339 | 2340 | /path-is-absolute/1.0.1: 2341 | resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} 2342 | engines: {node: '>=0.10.0'} 2343 | dev: true 2344 | 2345 | /path-key/3.1.1: 2346 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2347 | engines: {node: '>=8'} 2348 | dev: true 2349 | 2350 | /path-parse/1.0.7: 2351 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2352 | 2353 | /path-type/4.0.0: 2354 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2355 | engines: {node: '>=8'} 2356 | 2357 | /picocolors/1.0.0: 2358 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2359 | 2360 | /picomatch/2.3.1: 2361 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2362 | engines: {node: '>=8.6'} 2363 | 2364 | /postcss/8.4.12: 2365 | resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==} 2366 | engines: {node: ^10 || ^12 || >=14} 2367 | dependencies: 2368 | nanoid: 3.3.2 2369 | picocolors: 1.0.0 2370 | source-map-js: 1.0.2 2371 | 2372 | /prelude-ls/1.2.1: 2373 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2374 | engines: {node: '>= 0.8.0'} 2375 | dev: true 2376 | 2377 | /prettier-linter-helpers/1.0.0: 2378 | resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} 2379 | engines: {node: '>=6.0.0'} 2380 | dependencies: 2381 | fast-diff: 1.2.0 2382 | dev: true 2383 | 2384 | /prettier/2.6.2: 2385 | resolution: {integrity: sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==} 2386 | engines: {node: '>=10.13.0'} 2387 | hasBin: true 2388 | dev: true 2389 | 2390 | /promise/7.3.1: 2391 | resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} 2392 | dependencies: 2393 | asap: 2.0.6 2394 | dev: true 2395 | 2396 | /pug-attrs/3.0.0: 2397 | resolution: {integrity: sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==} 2398 | dependencies: 2399 | constantinople: 4.0.1 2400 | js-stringify: 1.0.2 2401 | pug-runtime: 3.0.1 2402 | dev: true 2403 | 2404 | /pug-code-gen/3.0.2: 2405 | resolution: {integrity: sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==} 2406 | dependencies: 2407 | constantinople: 4.0.1 2408 | doctypes: 1.1.0 2409 | js-stringify: 1.0.2 2410 | pug-attrs: 3.0.0 2411 | pug-error: 2.0.0 2412 | pug-runtime: 3.0.1 2413 | void-elements: 3.1.0 2414 | with: 7.0.2 2415 | dev: true 2416 | 2417 | /pug-error/2.0.0: 2418 | resolution: {integrity: sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==} 2419 | dev: true 2420 | 2421 | /pug-filters/4.0.0: 2422 | resolution: {integrity: sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==} 2423 | dependencies: 2424 | constantinople: 4.0.1 2425 | jstransformer: 1.0.0 2426 | pug-error: 2.0.0 2427 | pug-walk: 2.0.0 2428 | resolve: 1.22.0 2429 | dev: true 2430 | 2431 | /pug-lexer/5.0.1: 2432 | resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==} 2433 | dependencies: 2434 | character-parser: 2.2.0 2435 | is-expression: 4.0.0 2436 | pug-error: 2.0.0 2437 | dev: true 2438 | 2439 | /pug-linker/4.0.0: 2440 | resolution: {integrity: sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==} 2441 | dependencies: 2442 | pug-error: 2.0.0 2443 | pug-walk: 2.0.0 2444 | dev: true 2445 | 2446 | /pug-load/3.0.0: 2447 | resolution: {integrity: sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==} 2448 | dependencies: 2449 | object-assign: 4.1.1 2450 | pug-walk: 2.0.0 2451 | dev: true 2452 | 2453 | /pug-parser/6.0.0: 2454 | resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==} 2455 | dependencies: 2456 | pug-error: 2.0.0 2457 | token-stream: 1.0.0 2458 | dev: true 2459 | 2460 | /pug-runtime/3.0.1: 2461 | resolution: {integrity: sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==} 2462 | dev: true 2463 | 2464 | /pug-strip-comments/2.0.0: 2465 | resolution: {integrity: sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==} 2466 | dependencies: 2467 | pug-error: 2.0.0 2468 | dev: true 2469 | 2470 | /pug-walk/2.0.0: 2471 | resolution: {integrity: sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==} 2472 | dev: true 2473 | 2474 | /pug/3.0.2: 2475 | resolution: {integrity: sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==} 2476 | dependencies: 2477 | pug-code-gen: 3.0.2 2478 | pug-filters: 4.0.0 2479 | pug-lexer: 5.0.1 2480 | pug-linker: 4.0.0 2481 | pug-load: 3.0.0 2482 | pug-parser: 6.0.0 2483 | pug-runtime: 3.0.1 2484 | pug-strip-comments: 2.0.0 2485 | dev: true 2486 | 2487 | /punycode/2.1.1: 2488 | resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} 2489 | engines: {node: '>=6'} 2490 | dev: true 2491 | 2492 | /queue-microtask/1.2.3: 2493 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2494 | 2495 | /readdirp/3.6.0: 2496 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2497 | engines: {node: '>=8.10.0'} 2498 | dependencies: 2499 | picomatch: 2.3.1 2500 | dev: true 2501 | 2502 | /regexpp/3.2.0: 2503 | resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} 2504 | engines: {node: '>=8'} 2505 | dev: true 2506 | 2507 | /request-light/0.5.8: 2508 | resolution: {integrity: sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==} 2509 | dev: true 2510 | 2511 | /resolve-from/4.0.0: 2512 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2513 | engines: {node: '>=4'} 2514 | dev: true 2515 | 2516 | /resolve/1.22.0: 2517 | resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} 2518 | hasBin: true 2519 | dependencies: 2520 | is-core-module: 2.8.1 2521 | path-parse: 1.0.7 2522 | supports-preserve-symlinks-flag: 1.0.0 2523 | 2524 | /reusify/1.0.4: 2525 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2526 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2527 | 2528 | /rimraf/3.0.2: 2529 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2530 | hasBin: true 2531 | dependencies: 2532 | glob: 7.2.0 2533 | dev: true 2534 | 2535 | /rollup/2.70.2: 2536 | resolution: {integrity: sha512-EitogNZnfku65I1DD5Mxe8JYRUCy0hkK5X84IlDtUs+O6JRMpRciXTzyCUuX11b5L5pvjH+OmFXiQ3XjabcXgg==} 2537 | engines: {node: '>=10.0.0'} 2538 | hasBin: true 2539 | optionalDependencies: 2540 | fsevents: 2.3.2 2541 | dev: true 2542 | 2543 | /run-parallel/1.2.0: 2544 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2545 | dependencies: 2546 | queue-microtask: 1.2.3 2547 | 2548 | /safe-buffer/5.1.2: 2549 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 2550 | dev: true 2551 | 2552 | /sass/1.50.0: 2553 | resolution: {integrity: sha512-cLsD6MEZ5URXHStxApajEh7gW189kkjn4Rc8DQweMyF+o5HF5nfEz8QYLMlPsTOD88DknatTmBWkOcw5/LnJLQ==} 2554 | engines: {node: '>=12.0.0'} 2555 | hasBin: true 2556 | dependencies: 2557 | chokidar: 3.5.3 2558 | immutable: 4.0.0 2559 | source-map-js: 1.0.2 2560 | dev: true 2561 | 2562 | /semver/6.3.0: 2563 | resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} 2564 | hasBin: true 2565 | dev: true 2566 | 2567 | /semver/7.3.7: 2568 | resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} 2569 | engines: {node: '>=10'} 2570 | hasBin: true 2571 | dependencies: 2572 | lru-cache: 6.0.0 2573 | 2574 | /shebang-command/2.0.0: 2575 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2576 | engines: {node: '>=8'} 2577 | dependencies: 2578 | shebang-regex: 3.0.0 2579 | dev: true 2580 | 2581 | /shebang-regex/3.0.0: 2582 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2583 | engines: {node: '>=8'} 2584 | dev: true 2585 | 2586 | /side-channel/1.0.4: 2587 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2588 | dependencies: 2589 | call-bind: 1.0.2 2590 | get-intrinsic: 1.1.1 2591 | object-inspect: 1.12.0 2592 | 2593 | /slash/3.0.0: 2594 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2595 | engines: {node: '>=8'} 2596 | 2597 | /sortablejs/1.14.0: 2598 | resolution: {integrity: sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==} 2599 | dev: false 2600 | 2601 | /source-map-js/1.0.2: 2602 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2603 | engines: {node: '>=0.10.0'} 2604 | 2605 | /source-map/0.5.7: 2606 | resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} 2607 | engines: {node: '>=0.10.0'} 2608 | dev: true 2609 | 2610 | /source-map/0.6.1: 2611 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 2612 | engines: {node: '>=0.10.0'} 2613 | 2614 | /sourcemap-codec/1.4.8: 2615 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 2616 | 2617 | /string.prototype.trimend/1.0.4: 2618 | resolution: {integrity: sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==} 2619 | dependencies: 2620 | call-bind: 1.0.2 2621 | define-properties: 1.1.4 2622 | 2623 | /string.prototype.trimstart/1.0.4: 2624 | resolution: {integrity: sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==} 2625 | dependencies: 2626 | call-bind: 1.0.2 2627 | define-properties: 1.1.4 2628 | 2629 | /strip-ansi/6.0.1: 2630 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2631 | engines: {node: '>=8'} 2632 | dependencies: 2633 | ansi-regex: 5.0.1 2634 | dev: true 2635 | 2636 | /strip-bom/3.0.0: 2637 | resolution: {integrity: sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=} 2638 | engines: {node: '>=4'} 2639 | dev: false 2640 | 2641 | /strip-json-comments/3.1.1: 2642 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2643 | engines: {node: '>=8'} 2644 | dev: true 2645 | 2646 | /supports-color/5.5.0: 2647 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2648 | engines: {node: '>=4'} 2649 | dependencies: 2650 | has-flag: 3.0.0 2651 | dev: true 2652 | 2653 | /supports-color/7.2.0: 2654 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2655 | engines: {node: '>=8'} 2656 | dependencies: 2657 | has-flag: 4.0.0 2658 | dev: true 2659 | 2660 | /supports-preserve-symlinks-flag/1.0.0: 2661 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2662 | engines: {node: '>= 0.4'} 2663 | 2664 | /svg-tags/1.0.0: 2665 | resolution: {integrity: sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=} 2666 | dev: true 2667 | 2668 | /text-table/0.2.0: 2669 | resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=} 2670 | dev: true 2671 | 2672 | /to-fast-properties/2.0.0: 2673 | resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} 2674 | engines: {node: '>=4'} 2675 | dev: true 2676 | 2677 | /to-regex-range/5.0.1: 2678 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2679 | engines: {node: '>=8.0'} 2680 | dependencies: 2681 | is-number: 7.0.0 2682 | 2683 | /token-stream/1.0.0: 2684 | resolution: {integrity: sha1-zCAOqyYT9BZtJ/+a/HylbUnfbrQ=} 2685 | dev: true 2686 | 2687 | /tsconfig-paths/3.14.1: 2688 | resolution: {integrity: sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==} 2689 | dependencies: 2690 | '@types/json5': 0.0.29 2691 | json5: 1.0.1 2692 | minimist: 1.2.6 2693 | strip-bom: 3.0.0 2694 | dev: false 2695 | 2696 | /tslib/1.14.1: 2697 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 2698 | 2699 | /tsutils/3.21.0_typescript@4.6.3: 2700 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 2701 | engines: {node: '>= 6'} 2702 | peerDependencies: 2703 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' 2704 | dependencies: 2705 | tslib: 1.14.1 2706 | typescript: 4.6.3 2707 | 2708 | /type-check/0.4.0: 2709 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2710 | engines: {node: '>= 0.8.0'} 2711 | dependencies: 2712 | prelude-ls: 1.2.1 2713 | dev: true 2714 | 2715 | /type-fest/0.20.2: 2716 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2717 | engines: {node: '>=10'} 2718 | dev: true 2719 | 2720 | /typescript/4.6.3: 2721 | resolution: {integrity: sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==} 2722 | engines: {node: '>=4.2.0'} 2723 | hasBin: true 2724 | dev: true 2725 | 2726 | /unbox-primitive/1.0.1: 2727 | resolution: {integrity: sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==} 2728 | dependencies: 2729 | function-bind: 1.1.1 2730 | has-bigints: 1.0.1 2731 | has-symbols: 1.0.3 2732 | which-boxed-primitive: 1.0.2 2733 | 2734 | /unplugin-auto-import/0.7.1_vite@2.9.5: 2735 | resolution: {integrity: sha512-9865OV9eP99PNxHR2mtTDExeN01m4M9boT5U2BtIwsU1wDRsaFIYWLwcCBEjvXzXfTTC2NNMskhHGVAMfL2WgA==} 2736 | engines: {node: '>=14'} 2737 | peerDependencies: 2738 | '@vueuse/core': '*' 2739 | peerDependenciesMeta: 2740 | '@vueuse/core': 2741 | optional: true 2742 | dependencies: 2743 | '@antfu/utils': 0.5.1 2744 | '@rollup/pluginutils': 4.2.1 2745 | local-pkg: 0.4.1 2746 | magic-string: 0.26.1 2747 | resolve: 1.22.0 2748 | unplugin: 0.6.2_vite@2.9.5 2749 | transitivePeerDependencies: 2750 | - esbuild 2751 | - rollup 2752 | - vite 2753 | - webpack 2754 | dev: true 2755 | 2756 | /unplugin-vue-components/0.19.3_vite@2.9.5+vue@3.2.33: 2757 | resolution: {integrity: sha512-z/kpYJnqrJuWglDNs7fy0YRHr41oLc07y2TkP3by6DqPb1GG9xGC9SFigeFwd4J7GVTqyFVsnjoeup7uK7I2dA==} 2758 | engines: {node: '>=14'} 2759 | peerDependencies: 2760 | '@babel/parser': ^7.15.8 2761 | '@babel/traverse': ^7.15.4 2762 | vue: 2 || 3 2763 | peerDependenciesMeta: 2764 | '@babel/parser': 2765 | optional: true 2766 | '@babel/traverse': 2767 | optional: true 2768 | dependencies: 2769 | '@antfu/utils': 0.5.1 2770 | '@rollup/pluginutils': 4.2.1 2771 | chokidar: 3.5.3 2772 | debug: 4.3.4 2773 | fast-glob: 3.2.11 2774 | local-pkg: 0.4.1 2775 | magic-string: 0.26.1 2776 | minimatch: 5.0.1 2777 | resolve: 1.22.0 2778 | unplugin: 0.6.2_vite@2.9.5 2779 | vue: 3.2.33 2780 | transitivePeerDependencies: 2781 | - esbuild 2782 | - rollup 2783 | - supports-color 2784 | - vite 2785 | - webpack 2786 | dev: true 2787 | 2788 | /unplugin/0.6.2_vite@2.9.5: 2789 | resolution: {integrity: sha512-+QONc2uBFQbeo4x5mlJHjTKjR6pmuchMpGVrWhwdGFFMb4ttFZ4E9KqhOOrNcm3Q8NNyB1vJ4s5e36IZC7UWYw==} 2790 | peerDependencies: 2791 | esbuild: '>=0.13' 2792 | rollup: ^2.50.0 2793 | vite: ^2.3.0 2794 | webpack: 4 || 5 2795 | peerDependenciesMeta: 2796 | esbuild: 2797 | optional: true 2798 | rollup: 2799 | optional: true 2800 | vite: 2801 | optional: true 2802 | webpack: 2803 | optional: true 2804 | dependencies: 2805 | chokidar: 3.5.3 2806 | vite: 2.9.5_sass@1.50.0 2807 | webpack-sources: 3.2.3 2808 | webpack-virtual-modules: 0.4.3 2809 | dev: true 2810 | 2811 | /upath/2.0.1: 2812 | resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} 2813 | engines: {node: '>=4'} 2814 | dev: true 2815 | 2816 | /uri-js/4.4.1: 2817 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2818 | dependencies: 2819 | punycode: 2.1.1 2820 | dev: true 2821 | 2822 | /v8-compile-cache/2.3.0: 2823 | resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} 2824 | dev: true 2825 | 2826 | /vite/2.9.5_sass@1.50.0: 2827 | resolution: {integrity: sha512-dvMN64X2YEQgSXF1lYabKXw3BbN6e+BL67+P3Vy4MacnY+UzT1AfkHiioFSi9+uiDUiaDy7Ax/LQqivk6orilg==} 2828 | engines: {node: '>=12.2.0'} 2829 | hasBin: true 2830 | peerDependencies: 2831 | less: '*' 2832 | sass: '*' 2833 | stylus: '*' 2834 | peerDependenciesMeta: 2835 | less: 2836 | optional: true 2837 | sass: 2838 | optional: true 2839 | stylus: 2840 | optional: true 2841 | dependencies: 2842 | esbuild: 0.14.36 2843 | postcss: 8.4.12 2844 | resolve: 1.22.0 2845 | rollup: 2.70.2 2846 | sass: 1.50.0 2847 | optionalDependencies: 2848 | fsevents: 2.3.2 2849 | dev: true 2850 | 2851 | /void-elements/3.1.0: 2852 | resolution: {integrity: sha1-YU9/v42AHwu18GYfWy9XhXUOTwk=} 2853 | engines: {node: '>=0.10.0'} 2854 | dev: true 2855 | 2856 | /vscode-css-languageservice/5.4.1: 2857 | resolution: {integrity: sha512-W7D3GKFXf97ReAaU4EZ2nxVO1kQhztbycJgc1b/Ipr0h8zYWr88BADmrXu02z+lsCS84D7Sr4hoUzDKeaFn2Kg==} 2858 | dependencies: 2859 | vscode-languageserver-textdocument: 1.0.4 2860 | vscode-languageserver-types: 3.16.0 2861 | vscode-nls: 5.0.0 2862 | vscode-uri: 3.0.3 2863 | dev: true 2864 | 2865 | /vscode-html-languageservice/4.2.4: 2866 | resolution: {integrity: sha512-1HqvXKOq9WlZyW4HTD+0XzrjZoZ/YFrgQY2PZqktbRloHXVAUKm6+cAcvZi4YqKPVn05/CK7do+KBHfuSaEdbg==} 2867 | dependencies: 2868 | vscode-languageserver-textdocument: 1.0.4 2869 | vscode-languageserver-types: 3.16.0 2870 | vscode-nls: 5.0.0 2871 | vscode-uri: 3.0.3 2872 | dev: true 2873 | 2874 | /vscode-json-languageservice/4.2.1: 2875 | resolution: {integrity: sha512-xGmv9QIWs2H8obGbWg+sIPI/3/pFgj/5OWBhNzs00BkYQ9UaB2F6JJaGB/2/YOZJ3BvLXQTC4Q7muqU25QgAhA==} 2876 | dependencies: 2877 | jsonc-parser: 3.0.0 2878 | vscode-languageserver-textdocument: 1.0.4 2879 | vscode-languageserver-types: 3.16.0 2880 | vscode-nls: 5.0.0 2881 | vscode-uri: 3.0.3 2882 | dev: true 2883 | 2884 | /vscode-jsonrpc/8.0.0-next.7: 2885 | resolution: {integrity: sha512-JX/F31LEsims0dAlOTKFE4E+AJMiJvdRSRViifFJSqSN7EzeYyWlfuDchF7g91oRNPZOIWfibTkDf3/UMsQGzQ==} 2886 | engines: {node: '>=14.0.0'} 2887 | dev: true 2888 | 2889 | /vscode-languageserver-protocol/3.17.0-next.16: 2890 | resolution: {integrity: sha512-tx4DnXw9u3N7vw+bx6n2NKp6FoxoNwiP/biH83AS30I2AnTGyLd7afSeH6Oewn2E8jvB7K15bs12sMppkKOVeQ==} 2891 | dependencies: 2892 | vscode-jsonrpc: 8.0.0-next.7 2893 | vscode-languageserver-types: 3.17.0-next.9 2894 | dev: true 2895 | 2896 | /vscode-languageserver-textdocument/1.0.4: 2897 | resolution: {integrity: sha512-/xhqXP/2A2RSs+J8JNXpiiNVvvNM0oTosNVmQnunlKvq9o4mupHOBAnnzH0lwIPKazXKvAKsVp1kr+H/K4lgoQ==} 2898 | dev: true 2899 | 2900 | /vscode-languageserver-types/3.16.0: 2901 | resolution: {integrity: sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==} 2902 | dev: true 2903 | 2904 | /vscode-languageserver-types/3.17.0-next.9: 2905 | resolution: {integrity: sha512-9/PeDNPYduaoXRUzYpqmu4ZV9L01HGo0wH9FUt+sSHR7IXwA7xoXBfNUlv8gB9H0D2WwEmMomSy1NmhjKQyn3A==} 2906 | dev: true 2907 | 2908 | /vscode-languageserver/8.0.0-next.10: 2909 | resolution: {integrity: sha512-sdjldl9ipuBSWVw5ENVMRcOVQwF0o+J6+lNA7FrB8MiLmzflnfjRoJMqA5tCEY8S/J/+P56ZR/dqiQnRYg5m8w==} 2910 | hasBin: true 2911 | dependencies: 2912 | vscode-languageserver-protocol: 3.17.0-next.16 2913 | dev: true 2914 | 2915 | /vscode-nls/5.0.0: 2916 | resolution: {integrity: sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==} 2917 | dev: true 2918 | 2919 | /vscode-pug-languageservice/0.29.8: 2920 | resolution: {integrity: sha512-QHYAzDSJLg7GOLxCZ12qsM0dAM0dPeMSS1t4kKfzLsfpErmZpFzkAIXbidVrNMdMffGZMtTuIlcpEyWHbx96Iw==} 2921 | dependencies: 2922 | '@volar/code-gen': 0.29.8 2923 | '@volar/shared': 0.29.8 2924 | '@volar/source-map': 0.29.8 2925 | '@volar/transforms': 0.29.8 2926 | pug-lexer: 5.0.1 2927 | pug-parser: 6.0.0 2928 | vscode-languageserver: 8.0.0-next.10 2929 | dev: true 2930 | 2931 | /vscode-typescript-languageservice/0.29.8: 2932 | resolution: {integrity: sha512-eecDqHk4WjEvy6VHQ6teHczppQ9yJO2wExCy7yu7WiFj35qbw0h4G6Erv46MvP3ClL8FggFzD7s1qM6vdqJUfw==} 2933 | dependencies: 2934 | '@volar/shared': 0.29.8 2935 | semver: 7.3.7 2936 | upath: 2.0.1 2937 | vscode-languageserver: 8.0.0-next.10 2938 | vscode-languageserver-textdocument: 1.0.4 2939 | dev: true 2940 | 2941 | /vscode-uri/2.1.2: 2942 | resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==} 2943 | dev: true 2944 | 2945 | /vscode-uri/3.0.3: 2946 | resolution: {integrity: sha512-EcswR2S8bpR7fD0YPeS7r2xXExrScVMxg4MedACaWHEtx9ftCF/qHG1xGkolzTPcEmjTavCQgbVzHUIdTMzFGA==} 2947 | dev: true 2948 | 2949 | /vscode-vue-languageservice/0.29.8: 2950 | resolution: {integrity: sha512-qSJdvW5ttyGUB/8uWDKgo8vnIoFnXYlBP4Z/cn54btsRn6ZMw7IJGJU1381e7p/yGvMTLeGbugD53SghbnSa6g==} 2951 | dependencies: 2952 | '@volar/code-gen': 0.29.8 2953 | '@volar/html2pug': 0.29.8 2954 | '@volar/shared': 0.29.8 2955 | '@volar/source-map': 0.29.8 2956 | '@volar/transforms': 0.29.8 2957 | '@volar/vue-code-gen': 0.29.8 2958 | '@vscode/emmet-helper': 2.8.4 2959 | '@vue/reactivity': 3.2.33 2960 | '@vue/shared': 3.2.33 2961 | request-light: 0.5.8 2962 | upath: 2.0.1 2963 | vscode-css-languageservice: 5.4.1 2964 | vscode-html-languageservice: 4.2.4 2965 | vscode-json-languageservice: 4.2.1 2966 | vscode-languageserver: 8.0.0-next.10 2967 | vscode-languageserver-textdocument: 1.0.4 2968 | vscode-pug-languageservice: 0.29.8 2969 | vscode-typescript-languageservice: 0.29.8 2970 | dev: true 2971 | 2972 | /vue-demi/0.12.5_vue@3.2.33: 2973 | resolution: {integrity: sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q==} 2974 | engines: {node: '>=12'} 2975 | hasBin: true 2976 | requiresBuild: true 2977 | peerDependencies: 2978 | '@vue/composition-api': ^1.0.0-rc.1 2979 | vue: ^3.0.0-0 || ^2.6.0 2980 | peerDependenciesMeta: 2981 | '@vue/composition-api': 2982 | optional: true 2983 | dependencies: 2984 | vue: 3.2.33 2985 | dev: false 2986 | 2987 | /vue-eslint-parser/8.3.0_eslint@8.13.0: 2988 | resolution: {integrity: sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==} 2989 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2990 | peerDependencies: 2991 | eslint: '>=6.0.0' 2992 | dependencies: 2993 | debug: 4.3.4 2994 | eslint: 8.13.0 2995 | eslint-scope: 7.1.1 2996 | eslint-visitor-keys: 3.3.0 2997 | espree: 9.3.1 2998 | esquery: 1.4.0 2999 | lodash: 4.17.21 3000 | semver: 7.3.7 3001 | transitivePeerDependencies: 3002 | - supports-color 3003 | dev: true 3004 | 3005 | /vue-router/4.0.14_vue@3.2.33: 3006 | resolution: {integrity: sha512-wAO6zF9zxA3u+7AkMPqw9LjoUCjSxfFvINQj3E/DceTt6uEz1XZLraDhdg2EYmvVwTBSGlLYsUw8bDmx0754Mw==} 3007 | peerDependencies: 3008 | vue: ^3.2.0 3009 | dependencies: 3010 | '@vue/devtools-api': 6.1.4 3011 | vue: 3.2.33 3012 | dev: false 3013 | 3014 | /vue-tsc/0.29.8_typescript@4.6.3: 3015 | resolution: {integrity: sha512-pT0wLRjvRuSmB+J4WJT6uuV9mO0KtSSXEAtaVXZQzyk5+DJdbLIQTbRce/TXSkfqt1l1WogO78RjtOJFiMCgfQ==} 3016 | hasBin: true 3017 | peerDependencies: 3018 | typescript: '*' 3019 | dependencies: 3020 | '@volar/shared': 0.29.8 3021 | typescript: 4.6.3 3022 | vscode-vue-languageservice: 0.29.8 3023 | dev: true 3024 | 3025 | /vue/3.2.33: 3026 | resolution: {integrity: sha512-si1ExAlDUrLSIg/V7D/GgA4twJwfsfgG+t9w10z38HhL/HA07132pUQ2KuwAo8qbCyMJ9e6OqrmWrOCr+jW7ZQ==} 3027 | dependencies: 3028 | '@vue/compiler-dom': 3.2.33 3029 | '@vue/compiler-sfc': 3.2.33 3030 | '@vue/runtime-dom': 3.2.33 3031 | '@vue/server-renderer': 3.2.33_vue@3.2.33 3032 | '@vue/shared': 3.2.33 3033 | dev: false 3034 | 3035 | /vuedraggable/4.1.0_vue@3.2.33: 3036 | resolution: {integrity: sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==} 3037 | peerDependencies: 3038 | vue: ^3.0.1 3039 | dependencies: 3040 | sortablejs: 1.14.0 3041 | vue: 3.2.33 3042 | dev: false 3043 | 3044 | /vuex/4.0.2_vue@3.2.33: 3045 | resolution: {integrity: sha512-M6r8uxELjZIK8kTKDGgZTYX/ahzblnzC4isU1tpmEuOIIKmV+TRdc+H4s8ds2NuZ7wpUTdGRzJRtoj+lI+pc0Q==} 3046 | peerDependencies: 3047 | vue: ^3.0.2 3048 | dependencies: 3049 | '@vue/devtools-api': 6.1.4 3050 | vue: 3.2.33 3051 | dev: false 3052 | 3053 | /webpack-sources/3.2.3: 3054 | resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} 3055 | engines: {node: '>=10.13.0'} 3056 | dev: true 3057 | 3058 | /webpack-virtual-modules/0.4.3: 3059 | resolution: {integrity: sha512-5NUqC2JquIL2pBAAo/VfBP6KuGkHIZQXW/lNKupLPfhViwh8wNsu0BObtl09yuKZszeEUfbXz8xhrHvSG16Nqw==} 3060 | dev: true 3061 | 3062 | /which-boxed-primitive/1.0.2: 3063 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 3064 | dependencies: 3065 | is-bigint: 1.0.4 3066 | is-boolean-object: 1.1.2 3067 | is-number-object: 1.0.7 3068 | is-string: 1.0.7 3069 | is-symbol: 1.0.4 3070 | 3071 | /which/2.0.2: 3072 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3073 | engines: {node: '>= 8'} 3074 | hasBin: true 3075 | dependencies: 3076 | isexe: 2.0.0 3077 | dev: true 3078 | 3079 | /with/7.0.2: 3080 | resolution: {integrity: sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==} 3081 | engines: {node: '>= 10.0.0'} 3082 | dependencies: 3083 | '@babel/parser': 7.17.9 3084 | '@babel/types': 7.17.0 3085 | assert-never: 1.2.1 3086 | babel-walk: 3.0.0-canary-5 3087 | dev: true 3088 | 3089 | /word-wrap/1.2.3: 3090 | resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} 3091 | engines: {node: '>=0.10.0'} 3092 | dev: true 3093 | 3094 | /wrappy/1.0.2: 3095 | resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} 3096 | dev: true 3097 | 3098 | /yallist/4.0.0: 3099 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3100 | -------------------------------------------------------------------------------- /public/starpixel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swanine/form-design/7bba037fe7aab956eedee3ea87a200b57b12b470/public/starpixel.png -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import { RouterView } from 'vue-router' 2 | import { defineComponent } from 'vue' 3 | 4 | export default defineComponent({ 5 | render() { 6 | return ( 7 | <> 8 | 9 | 10 | ) 11 | } 12 | }) 13 | -------------------------------------------------------------------------------- /src/assets/images/draw.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/images/pixel.svg: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /src/assets/images/星宿.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/styles/index.scss: -------------------------------------------------------------------------------- 1 | @import './normalize.scss'; 2 | @import './reset.scss'; 3 | -------------------------------------------------------------------------------- /src/assets/styles/mixins.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swanine/form-design/7bba037fe7aab956eedee3ea87a200b57b12b470/src/assets/styles/mixins.scss -------------------------------------------------------------------------------- /src/assets/styles/normalize.scss: -------------------------------------------------------------------------------- 1 | /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ 2 | 3 | /* Document 4 | ========================================================================== */ 5 | 6 | /** 7 | * 1. Correct the line height in all browsers. 8 | * 2. Prevent adjustments of font size after orientation changes in iOS. 9 | */ 10 | 11 | html { 12 | line-height: 1.15; /* 1 */ 13 | -webkit-text-size-adjust: 100%; /* 2 */ 14 | } 15 | 16 | /* Sections 17 | ========================================================================== */ 18 | 19 | /** 20 | * Remove the margin in all browsers. 21 | */ 22 | 23 | body { 24 | margin: 0; 25 | } 26 | 27 | /** 28 | * Render the `main` element consistently in IE. 29 | */ 30 | 31 | main { 32 | display: block; 33 | } 34 | 35 | /** 36 | * Correct the font size and margin on `h1` elements within `section` and 37 | * `article` contexts in Chrome, Firefox, and Safari. 38 | */ 39 | 40 | h1 { 41 | font-size: 2em; 42 | margin: 0.67em 0; 43 | } 44 | 45 | /* Grouping content 46 | ========================================================================== */ 47 | 48 | /** 49 | * 1. Add the correct box sizing in Firefox. 50 | * 2. Show the overflow in Edge and IE. 51 | */ 52 | 53 | hr { 54 | box-sizing: content-box; /* 1 */ 55 | height: 0; /* 1 */ 56 | overflow: visible; /* 2 */ 57 | } 58 | 59 | /** 60 | * 1. Correct the inheritance and scaling of font size in all browsers. 61 | * 2. Correct the odd `em` font sizing in all browsers. 62 | */ 63 | 64 | pre { 65 | font-family: monospace, monospace; /* 1 */ 66 | font-size: 1em; /* 2 */ 67 | } 68 | 69 | /* Text-level semantics 70 | ========================================================================== */ 71 | 72 | /** 73 | * Remove the gray background on active links in IE 10. 74 | */ 75 | 76 | a { 77 | background-color: transparent; 78 | } 79 | 80 | /** 81 | * 1. Remove the bottom border in Chrome 57- 82 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. 83 | */ 84 | 85 | abbr[title] { 86 | border-bottom: none; /* 1 */ 87 | text-decoration: underline; /* 2 */ 88 | text-decoration: underline dotted; /* 2 */ 89 | } 90 | 91 | /** 92 | * Add the correct font weight in Chrome, Edge, and Safari. 93 | */ 94 | 95 | b, 96 | strong { 97 | font-weight: bolder; 98 | } 99 | 100 | /** 101 | * 1. Correct the inheritance and scaling of font size in all browsers. 102 | * 2. Correct the odd `em` font sizing in all browsers. 103 | */ 104 | 105 | code, 106 | kbd, 107 | samp { 108 | font-family: monospace, monospace; /* 1 */ 109 | font-size: 1em; /* 2 */ 110 | } 111 | 112 | /** 113 | * Add the correct font size in all browsers. 114 | */ 115 | 116 | small { 117 | font-size: 80%; 118 | } 119 | 120 | /** 121 | * Prevent `sub` and `sup` elements from affecting the line height in 122 | * all browsers. 123 | */ 124 | 125 | sub, 126 | sup { 127 | font-size: 75%; 128 | line-height: 0; 129 | position: relative; 130 | vertical-align: baseline; 131 | } 132 | 133 | sub { 134 | bottom: -0.25em; 135 | } 136 | 137 | sup { 138 | top: -0.5em; 139 | } 140 | 141 | /* Embedded content 142 | ========================================================================== */ 143 | 144 | /** 145 | * Remove the border on images inside links in IE 10. 146 | */ 147 | 148 | img { 149 | border-style: none; 150 | } 151 | 152 | /* Forms 153 | ========================================================================== */ 154 | 155 | /** 156 | * 1. Change the font styles in all browsers. 157 | * 2. Remove the margin in Firefox and Safari. 158 | */ 159 | 160 | button, 161 | input, 162 | optgroup, 163 | select, 164 | textarea { 165 | font-family: inherit; /* 1 */ 166 | font-size: 100%; /* 1 */ 167 | line-height: 1.15; /* 1 */ 168 | margin: 0; /* 2 */ 169 | } 170 | 171 | /** 172 | * Show the overflow in IE. 173 | * 1. Show the overflow in Edge. 174 | */ 175 | 176 | button, 177 | input { /* 1 */ 178 | overflow: visible; 179 | } 180 | 181 | /** 182 | * Remove the inheritance of text transform in Edge, Firefox, and IE. 183 | * 1. Remove the inheritance of text transform in Firefox. 184 | */ 185 | 186 | button, 187 | select { /* 1 */ 188 | text-transform: none; 189 | } 190 | 191 | /** 192 | * Correct the inability to style clickable types in iOS and Safari. 193 | */ 194 | 195 | button, 196 | [type="button"], 197 | [type="reset"], 198 | [type="submit"] { 199 | -webkit-appearance: button; 200 | } 201 | 202 | /** 203 | * Remove the inner border and padding in Firefox. 204 | */ 205 | 206 | button::-moz-focus-inner, 207 | [type="button"]::-moz-focus-inner, 208 | [type="reset"]::-moz-focus-inner, 209 | [type="submit"]::-moz-focus-inner { 210 | border-style: none; 211 | padding: 0; 212 | } 213 | 214 | /** 215 | * Restore the focus styles unset by the previous rule. 216 | */ 217 | 218 | button:-moz-focusring, 219 | [type="button"]:-moz-focusring, 220 | [type="reset"]:-moz-focusring, 221 | [type="submit"]:-moz-focusring { 222 | outline: 1px dotted ButtonText; 223 | } 224 | 225 | /** 226 | * Correct the padding in Firefox. 227 | */ 228 | 229 | fieldset { 230 | padding: 0.35em 0.75em 0.625em; 231 | } 232 | 233 | /** 234 | * 1. Correct the text wrapping in Edge and IE. 235 | * 2. Correct the color inheritance from `fieldset` elements in IE. 236 | * 3. Remove the padding so developers are not caught out when they zero out 237 | * `fieldset` elements in all browsers. 238 | */ 239 | 240 | legend { 241 | box-sizing: border-box; /* 1 */ 242 | color: inherit; /* 2 */ 243 | display: table; /* 1 */ 244 | max-width: 100%; /* 1 */ 245 | padding: 0; /* 3 */ 246 | white-space: normal; /* 1 */ 247 | } 248 | 249 | /** 250 | * Add the correct vertical alignment in Chrome, Firefox, and Opera. 251 | */ 252 | 253 | progress { 254 | vertical-align: baseline; 255 | } 256 | 257 | /** 258 | * Remove the default vertical scrollbar in IE 10+. 259 | */ 260 | 261 | textarea { 262 | overflow: auto; 263 | } 264 | 265 | /** 266 | * 1. Add the correct box sizing in IE 10. 267 | * 2. Remove the padding in IE 10. 268 | */ 269 | 270 | [type="checkbox"], 271 | [type="radio"] { 272 | box-sizing: border-box; /* 1 */ 273 | padding: 0; /* 2 */ 274 | } 275 | 276 | /** 277 | * Correct the cursor style of increment and decrement buttons in Chrome. 278 | */ 279 | 280 | [type="number"]::-webkit-inner-spin-button, 281 | [type="number"]::-webkit-outer-spin-button { 282 | height: auto; 283 | } 284 | 285 | /** 286 | * 1. Correct the odd appearance in Chrome and Safari. 287 | * 2. Correct the outline style in Safari. 288 | */ 289 | 290 | [type="search"] { 291 | -webkit-appearance: textfield; /* 1 */ 292 | outline-offset: -2px; /* 2 */ 293 | } 294 | 295 | /** 296 | * Remove the inner padding in Chrome and Safari on macOS. 297 | */ 298 | 299 | [type="search"]::-webkit-search-decoration { 300 | -webkit-appearance: none; 301 | } 302 | 303 | /** 304 | * 1. Correct the inability to style clickable types in iOS and Safari. 305 | * 2. Change font properties to `inherit` in Safari. 306 | */ 307 | 308 | ::-webkit-file-upload-button { 309 | -webkit-appearance: button; /* 1 */ 310 | font: inherit; /* 2 */ 311 | } 312 | 313 | /* Interactive 314 | ========================================================================== */ 315 | 316 | /* 317 | * Add the correct display in Edge, IE 10+, and Firefox. 318 | */ 319 | 320 | details { 321 | display: block; 322 | } 323 | 324 | /* 325 | * Add the correct display in all browsers. 326 | */ 327 | 328 | summary { 329 | display: list-item; 330 | } 331 | 332 | /* Misc 333 | ========================================================================== */ 334 | 335 | /** 336 | * Add the correct display in IE 10+. 337 | */ 338 | 339 | template { 340 | display: none; 341 | } 342 | 343 | /** 344 | * Add the correct display in IE 10. 345 | */ 346 | 347 | [hidden] { 348 | display: none; 349 | } 350 | -------------------------------------------------------------------------------- /src/assets/styles/reset.scss: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | } 4 | 5 | body { 6 | overflow: hidden; 7 | } 8 | 9 | #app { 10 | // font-family: sourceHanSans, sans-serif; 11 | -webkit-font-smoothing: antialiased; 12 | -moz-osx-font-smoothing: grayscale; 13 | color: #2c3e50; 14 | } 15 | 16 | .page_wrapper { 17 | width: 100vw; 18 | height: 100vh; 19 | 20 | .head__container { 21 | position: relative; 22 | height: 3.5rem; 23 | width: 100%; 24 | text-align: center; 25 | line-height: 3.5rem; 26 | letter-spacing: 1px; 27 | box-shadow: 0 4px 6px #0c1f500b; 28 | background-image: linear-gradient(to left, 29 | #faf2f4 0%, 30 | #fafefa 39%, 31 | #ebf2fd 50%, 32 | #fef7fc 81%, 33 | #fbfbee 100%); 34 | z-index: 99; 35 | 36 | &>span { 37 | font-size: 1.3rem; 38 | font-weight: 600; 39 | } 40 | 41 | .button_group { 42 | display: flex; 43 | position: absolute; 44 | right: 20px; 45 | top: 50%; 46 | transform: translateY(-50%); 47 | } 48 | } 49 | 50 | .home__wrapper { 51 | display: flex; 52 | flex: 1; 53 | height: calc(100% - 3.5rem); 54 | 55 | >.el-scrollbar { 56 | flex: 1; 57 | transition-property: background-color, backdrop-filter, position, z-index; 58 | transition-duration: .3s; 59 | transition-timing-function: cubic-bezier(0.55, 0.085, 0.68, 0.53); 60 | 61 | 62 | .el-scrollbar__view { 63 | display: flex; 64 | justify-content: center; 65 | padding: 20px 20px 0; 66 | min-height: 100%; 67 | background-color: #f9fafb; 68 | } 69 | } 70 | 71 | .plugins_wrap { 72 | width: 16.5rem; 73 | background-color: #fff; 74 | 75 | .el-scrollbar__view { 76 | padding: 10px 25px 10px 20px; 77 | } 78 | } 79 | } 80 | } 81 | 82 | .form_wrap { 83 | max-width: 56.25rem; 84 | height: 100%; 85 | 86 | .form_card { 87 | width: 100%; 88 | height: 100%; 89 | 90 | .form_head { 91 | padding-bottom: 12px; 92 | margin-bottom: 20px; 93 | border-radius: 10px; 94 | box-shadow: 0 4px 10px #0c1f5014; 95 | background-color: #fff; 96 | 97 | & .inseted:hover { 98 | background-color: #f4f5f5; 99 | } 100 | 101 | & .is_inset { 102 | background-color: #f4f5f5; 103 | 104 | input { 105 | width: 100%; 106 | padding: 0; 107 | border: none; 108 | outline: none; 109 | background-color: transparent; 110 | } 111 | } 112 | 113 | .form_head_main { 114 | flex: 1; 115 | background-color: #fff; 116 | border-radius: 1rem 1rem 0 0; 117 | // background-image: linear-gradient(-20deg, #fbfcdb 0%, #e9defa 100%); 118 | 119 | img { 120 | width: 100%; 121 | } 122 | 123 | .form_head_title { 124 | display: flex; 125 | align-items: center; 126 | margin: 20px 16px 0; 127 | 128 | .title_context { 129 | width: 100%; 130 | padding: 5px 4px; 131 | border-radius: 3px; 132 | font-size: 20px; 133 | line-height: 1.5; 134 | font-weight: bold; 135 | color: #131416; 136 | cursor: pointer; 137 | transition: all ease 0.2s; 138 | 139 | input { 140 | font-size: 20px; 141 | font-weight: bold; 142 | color: #131416; 143 | } 144 | } 145 | } 146 | } 147 | 148 | .form_head_attach { 149 | margin: 0 16px; 150 | 151 | .attach_context { 152 | display: flex; 153 | align-items: center; 154 | padding: 4px; 155 | margin: 4px 0; 156 | border-radius: 3px; 157 | color: #aaaeb3; 158 | font-size: 14px; 159 | cursor: pointer; 160 | transition: all ease 0.2s; 161 | } 162 | } 163 | } 164 | 165 | .plugin_title { 166 | padding: 4px 0 10px; 167 | font-size: 0.875rem; 168 | min-height: 1.875rem; 169 | } 170 | } 171 | } 172 | 173 | .preview { 174 | .home__wrapper>.el-scrollbar { 175 | position: fixed; 176 | width: 100vw; 177 | height: 100vh; 178 | top: 0; 179 | left: 50%; 180 | transform: translateX(-50%); 181 | background-color: #28394a57; 182 | // backdrop-filter: blur(1px); 183 | z-index: 999; 184 | 185 | .el-scrollbar__view { 186 | background-color: transparent; 187 | } 188 | } 189 | 190 | .plugin_config { 191 | display: none; 192 | visibility: hidden; 193 | } 194 | } 195 | -------------------------------------------------------------------------------- /src/assets/styles/variables.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swanine/form-design/7bba037fe7aab956eedee3ea87a200b57b12b470/src/assets/styles/variables.scss -------------------------------------------------------------------------------- /src/assets/styles/思源黑体SourceHanSansCN-Regular.be37d606385ec5a4ff63.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swanine/form-design/7bba037fe7aab956eedee3ea87a200b57b12b470/src/assets/styles/思源黑体SourceHanSansCN-Regular.be37d606385ec5a4ff63.otf -------------------------------------------------------------------------------- /src/components/Common.tsx: -------------------------------------------------------------------------------- 1 | import { defineComponent, PropType, ref } from 'vue' 2 | import plugins from './plugins/index' 3 | import IConfig from './plugins/types/pluginConfig' 4 | 5 | export default defineComponent({ 6 | props: { 7 | config: { 8 | type: Object as PropType 9 | } 10 | }, 11 | setup(props) { 12 | return () => { 13 | return ( 14 | <> 15 |
{props.config?.name}
16 | {plugins.map((item) => { 17 | if (props.config?.plugin === item.name) { 18 | console.log(item) 19 | return ( 20 | 21 | ) 22 | } 23 | })} 24 | 25 | ) 26 | } 27 | } 28 | }) 29 | -------------------------------------------------------------------------------- /src/components/FormBody.vue: -------------------------------------------------------------------------------- 1 | 26 | 27 | 66 | 67 | 104 | -------------------------------------------------------------------------------- /src/components/FormHead.tsx: -------------------------------------------------------------------------------- 1 | import { defineComponent, ref } from 'vue' 2 | import { useStore, mapGetters } from 'vuex' 3 | 4 | export default defineComponent({ 5 | directives: { 6 | focus: { 7 | mounted: function (el: HTMLInputElement, bind) { 8 | el.focus() 9 | 10 | // 这里拿到指令参数bind,Mutations调用 11 | el.onkeyup = function (e: KeyboardEvent) { 12 | if (e.key === 'Enter') { 13 | bind.value((this as HTMLInputElement).value) 14 | } 15 | } 16 | } 17 | } 18 | }, 19 | setup() { 20 | /** 21 | * TODO: bug 22 | * 修改内容点击下一input未赋值 23 | */ 24 | /* 25 | TODO 26 | 下面这里是一个优化点: 27 | 在directives中mapMutations中的this有问题 28 | 我不想改成render结构就这么先凑合吧 29 | 目前是通过自定义指令将函数对象传递到指令中通过bind.value调用 30 | */ 31 | const store = useStore() 32 | const { setFormInfoName, setFormInfoDesc } = { 33 | setFormInfoName: (val: string) => store.commit('setFormInfoName', val), 34 | setFormInfoDesc: (val: string) => store.commit('setFormInfoDesc', val) 35 | } 36 | 37 | // 当前修改的 38 | const currentFormInfoName = ref('') 39 | // 修改表单信息 40 | const changeInfo = (event: MouseEvent, name: string) => { 41 | event.stopPropagation() 42 | currentFormInfoName.value = name 43 | 44 | /** 45 | * TODO 46 | * 一个优化点: 47 | * 将事件处理移至指令中处理 48 | * 目前是会重复添加 49 | */ 50 | const callback = (e: MouseEvent) => { 51 | e.stopPropagation() 52 | if ((event.target as Element).contains(e.target as Element)) return 53 | window.removeEventListener('click', callback) 54 | 55 | const value = 56 | currentFormInfoName.value === 'name' ? formInfoName : formInfoDesc 57 | 58 | store.commit('setFormInfo', { 59 | key: currentFormInfoName.value, 60 | value: value.value 61 | }) 62 | currentFormInfoName.value = '' 63 | } 64 | 65 | // 只有点击头部信息输入才触发事件 66 | const names = ['name', 'description'] 67 | if (names.includes(currentFormInfoName.value)) { 68 | window.addEventListener('click', callback) 69 | return 70 | } 71 | 72 | window.removeEventListener('click', callback) 73 | } 74 | 75 | const getFormInfo = store.getters.getFormInfo 76 | const formInfoName = ref(getFormInfo('name')) 77 | const formInfoDesc = ref(getFormInfo('description')) 78 | 79 | return () => { 80 | return ( 81 |
86 |
87 | 92 |
93 |
changeInfo(event, 'name')} 100 | > 101 | {currentFormInfoName.value === 'name' ? ( 102 | 108 | ) : ( 109 | {getFormInfo('name') || '点击编辑表单名'} 110 | )} 111 |
112 |
113 |
114 |
115 |
changeInfo(event, 'description')} 122 | > 123 | {currentFormInfoName.value === 'description' ? ( 124 | 130 | ) : ( 131 | {getFormInfo('description') || '添加描述'} 132 | )} 133 |
134 | 135 |
console.log(event)} 138 | > 139 | 表单样式 140 |
141 |
142 |
143 | ) 144 | } 145 | } 146 | }) 147 | -------------------------------------------------------------------------------- /src/components/FormView.tsx: -------------------------------------------------------------------------------- 1 | import { defineComponent, onMounted } from 'vue' 2 | import { useStore } from 'vuex' 3 | import FromHead from './FormHead' 4 | import FromBody from './FormBody.vue' 5 | 6 | export default defineComponent({ 7 | setup() { 8 | const store = useStore() 9 | 10 | onMounted(() => { 11 | const mask = document.querySelector('.mask .el-scrollbar__view') 12 | mask?.addEventListener('click', (e) => { 13 | mask === e.target && store.commit('changePreview', false) 14 | }) 15 | }) 16 | 17 | return () => { 18 | return ( 19 | <> 20 | 21 |
22 |
23 | 24 | 25 |
26 |
27 |
28 | 29 | ) 30 | } 31 | } 32 | }) 33 | -------------------------------------------------------------------------------- /src/components/PageHead.tsx: -------------------------------------------------------------------------------- 1 | import { defineComponent } from 'vue' 2 | import { useStore } from 'vuex' 3 | import Rbutton from '../rosy-ui/button/index' 4 | 5 | export default defineComponent({ 6 | setup() { 7 | const store = useStore() 8 | const handleClick = () => { 9 | store.commit('changePreview', true) 10 | } 11 | 12 | return () => { 13 | return ( 14 | <> 15 |
16 | 表单设计 17 |
22 | 预览 23 |
24 |
25 | 26 | ) 27 | } 28 | } 29 | }) 30 | -------------------------------------------------------------------------------- /src/components/PluginConfig.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 44 | 45 | 58 | -------------------------------------------------------------------------------- /src/components/PluginsCard.vue: -------------------------------------------------------------------------------- 1 | 28 | 29 | 84 | 85 | 122 | -------------------------------------------------------------------------------- /src/components/PluginsWrap.tsx: -------------------------------------------------------------------------------- 1 | import { defineComponent, onMounted } from 'vue' 2 | import PluginsCard from './PluginsCard.vue' 3 | import introJs from 'intro.js' 4 | 5 | export default defineComponent({ 6 | setup() { 7 | onMounted(() => { 8 | const isIntroJs = localStorage.getItem('course') ?? false 9 | 10 | !isIntroJs && 11 | introJs() 12 | .setOptions({ 13 | prevLabel: '上一步', 14 | nextLabel: '下一步', 15 | skipLabel: '跳过', 16 | doneLabel: '结束', 17 | tooltipPosition: 'right', 18 | positionPrecedence: ['right', 'bottom', 'left', 'top'] 19 | }) 20 | .oncomplete(function () { 21 | //点击跳过按钮后执行的事件 22 | }) 23 | .onexit(function () { 24 | //点击结束按钮后, 执行的事件 25 | // 只有用户点击结束,才在下次取消指引 26 | localStorage.setItem('course', 'course') 27 | }) 28 | .start() 29 | }) 30 | return () => { 31 | return ( 32 |
33 | 34 | 39 | 40 | 41 |
42 | ) 43 | } 44 | } 45 | }) 46 | -------------------------------------------------------------------------------- /src/components/common.scss: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/components/plugins/Input.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/components/plugins/Textarea.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /src/components/plugins/index.ts: -------------------------------------------------------------------------------- 1 | import Input from './Input.vue' 2 | import Textarea from './Textarea.vue' 3 | 4 | // eslint-disable-next-line import/prefer-default-export 5 | export default [Input, Textarea] 6 | -------------------------------------------------------------------------------- /src/components/plugins/publicPlugins.ts: -------------------------------------------------------------------------------- 1 | const PLUGINS = [ 2 | { 3 | value: '', 4 | name: '单行文本', 5 | id: 1, 6 | width: '50%', 7 | type: 'text', 8 | plugin: 'Input' 9 | }, 10 | { 11 | value: '', 12 | name: '多行文本', 13 | id: 2, 14 | width: '100%', 15 | type: 'textarea', 16 | plugin: 'Textarea' 17 | }, 18 | { 19 | value: '', 20 | name: '计数器', 21 | id: 3, 22 | width: '25%', 23 | type: 'counter', 24 | plugin: 'Counter' 25 | }, 26 | { 27 | value: '', 28 | name: '下拉选择', 29 | id: 4, 30 | width: '50%', 31 | type: 'dropdown', 32 | plugin: 'Dropdown' 33 | }, 34 | { value: '', name: '时间选择', id: 5, width: '50%', type: 'Timer' }, 35 | { value: '', name: '颜色选择', id: 6, width: '25%', type: 'Color' }, 36 | { value: '', name: '按钮', id: 7, width: '25%' }, 37 | { value: '', name: '文字', id: 8, width: '25%' }, 38 | { value: '', name: '文字链接', id: 9, width: '50%' }, 39 | { value: '', name: '按钮', id: 10, width: '50%' } 40 | ] 41 | 42 | export default PLUGINS 43 | -------------------------------------------------------------------------------- /src/components/plugins/types/pluginConfig.ts: -------------------------------------------------------------------------------- 1 | export default interface IConfig { 2 | id: number | string 3 | readonly?: boolean 4 | name: string 5 | value: any 6 | type?: string 7 | width?: number 8 | placeholder?: string 9 | required?: boolean 10 | plugin: string 11 | } 12 | -------------------------------------------------------------------------------- /src/components/plugins/types/pluginProp.ts: -------------------------------------------------------------------------------- 1 | export default interface IProp {} 2 | -------------------------------------------------------------------------------- /src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | declare module '*.vue' { 4 | import type { DefineComponent } from 'vue' 5 | // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types 6 | const component: DefineComponent<{}, {}, any> 7 | export default component 8 | } 9 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import ElementPlus from 'element-plus' 3 | import App from './App' 4 | import router from './router/index' 5 | import store from './store/index' 6 | import 'loaders.css/loaders.min.css' 7 | import './assets/styles/index.scss' 8 | import 'intro.js/introjs.css' 9 | import 'element-plus/dist/index.css' 10 | import 'hint.css/hint.min.css' 11 | 12 | createApp(App).use(router).use(store).use(ElementPlus).mount('#app') 13 | -------------------------------------------------------------------------------- /src/rosy-ui/button/index.ts: -------------------------------------------------------------------------------- 1 | import Rbutton from './src/button' 2 | 3 | export default Rbutton 4 | -------------------------------------------------------------------------------- /src/rosy-ui/button/src/button-types.ts: -------------------------------------------------------------------------------- 1 | import type { ComputedRef, ExtractPropTypes, PropType } from 'vue' 2 | 3 | export type IButtonType = 'default' | 'plain' | 'text' 4 | export type IButtonSize = 'large' | 'small' | 'mini' 5 | export type IButtonColor = 'primary' | 'success' | 'warning' | 'danger' 6 | 7 | export const buttonProps = { 8 | type: { 9 | type: String as PropType, 10 | default: 'default' 11 | }, 12 | size: { 13 | type: String as PropType, 14 | default: 'small' 15 | }, 16 | color: { 17 | type: String as PropType, 18 | default: 'primary' 19 | }, 20 | disabled: { 21 | type: Boolean, 22 | default: false 23 | }, 24 | onClick: { 25 | type: Function 26 | } 27 | } as const 28 | 29 | export type ButtonProps = ExtractPropTypes 30 | 31 | export interface UseButtonReturnType { 32 | classes: ComputedRef<{ [key: string]: string | boolean }> 33 | } 34 | -------------------------------------------------------------------------------- /src/rosy-ui/button/src/button.scss: -------------------------------------------------------------------------------- 1 | /* 仅做初次测试用例,需重新编写样式文件 */ 2 | 3 | .rosy-button { 4 | padding: 8px 15px; 5 | border-radius: 4px; 6 | background-color: transparent; 7 | outline: none; 8 | border: none; 9 | border-width: 1px; 10 | font-size: 14px; 11 | transition: background-color 0.26s, box-shadow 0.26s; 12 | 13 | &+.rosy-button { 14 | margin-left: 10px; 15 | } 16 | 17 | &:hover { 18 | cursor: pointer; 19 | } 20 | 21 | &:disabled { 22 | cursor: not-allowed; 23 | } 24 | 25 | &.default { 26 | color: #ffffff; 27 | } 28 | 29 | &-primary { 30 | background-color: #ff466b; 31 | 32 | &:hover { 33 | background-color: #fe5f7f; 34 | } 35 | 36 | &:focus { 37 | box-shadow: 0 0 0 2px #ff003342; 38 | background-color: #fe5f7f; 39 | } 40 | } 41 | 42 | &-success { 43 | background-color: #67c23a; 44 | 45 | &:hover { 46 | background-color: #67c23ace; 47 | } 48 | 49 | &:focus { 50 | box-shadow: 0 0 0 2px #55ff0031; 51 | background-color: #67c23ace; 52 | } 53 | } 54 | 55 | &-large { 56 | padding: 12px 19px; 57 | font-size: 14px; 58 | } 59 | 60 | &-small { 61 | padding: 8px 15px; 62 | font-size: 14px; 63 | } 64 | 65 | &-mini { 66 | padding: 5px 11px; 67 | font-size: 12px; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /src/rosy-ui/button/src/button.tsx: -------------------------------------------------------------------------------- 1 | import { defineComponent, toRefs } from 'vue' 2 | import type { SetupContext } from 'vue' 3 | import { buttonProps, ButtonProps } from './button-types' 4 | import useButton from './use-button' 5 | import './button.scss' 6 | import ripple from '../../directives/ripple/v-ripple-directives' 7 | 8 | export default defineComponent({ 9 | name: 'RButton', 10 | props: buttonProps, 11 | emits: ['click'], 12 | directives: { ripple }, 13 | setup(props: ButtonProps, ctx: SetupContext) { 14 | const { disabled } = toRefs(props) 15 | 16 | const { classes } = useButton(props, ctx) 17 | 18 | const onClick = (e: MouseEvent) => { 19 | ctx.emit('click', e) 20 | } 21 | 22 | return () => { 23 | return ( 24 | 32 | ) 33 | } 34 | } 35 | }) 36 | -------------------------------------------------------------------------------- /src/rosy-ui/button/src/use-button.ts: -------------------------------------------------------------------------------- 1 | import { computed } from 'vue' 2 | import type { SetupContext } from 'vue' 3 | import { ButtonProps, UseButtonReturnType } from './button-types' 4 | 5 | export default function useButton( 6 | props: ButtonProps, 7 | // eslint-disable-next-line no-unused-vars 8 | ctx: SetupContext 9 | ): UseButtonReturnType { 10 | const classes = computed(() => ({ 11 | 'rosy-button': true, 12 | [`${props.type}`]: true, 13 | [`rosy-button-${props.color}`]: true, 14 | [`rosy-button-${props.size}`]: true 15 | })) 16 | 17 | return { classes } 18 | } 19 | -------------------------------------------------------------------------------- /src/rosy-ui/directives/drag/drag.ts: -------------------------------------------------------------------------------- 1 | import { TVector, TVectorRange, IOptions } from './type/type' 2 | import { 3 | getPosition, 4 | formatVector, 5 | diffVector, 6 | addVector, 7 | setTranslatePosition 8 | } from './utils/dragUtils' 9 | 10 | const drag = (element: HTMLElement, options?: IOptions) => { 11 | let { outerElement, innerElement, onDragStart, onDrag, onDragEnd } = 12 | options ?? {} 13 | // 元素的transform属性值,getComputedStyle返回值为matrix3d形式 14 | let startTransform = window.getComputedStyle(element).transform 15 | 16 | // 拖拽开始时的鼠标位置 17 | let startPosition: TVector | null = null 18 | 19 | // 拖拽结束时的鼠标位置 20 | let endPosition: TVector | null = null 21 | 22 | // 拖拽位移向量范围 23 | let draggingMoveVectorRange: TVectorRange | null = null 24 | // 元素位移向量(拖拽后修改) 25 | let draggedMoveVector: TVector = [0, 0] 26 | // 元素位移向量(拖拽时修改) 27 | let draggingMoveVector: TVector = [0, 0] 28 | 29 | // 拖拽范围元素 30 | outerElement = outerElement ?? document.body 31 | // 拖拽的元素 32 | element = element 33 | // 拖拽图标元素 34 | innerElement = innerElement ?? element 35 | 36 | const onMouseDown = (e: MouseEvent | TouchEvent) => { 37 | e.stopPropagation() 38 | // 记录当前鼠标或触摸位置 39 | startPosition = getPosition(e) 40 | 41 | if (outerElement && element && innerElement) { 42 | // 记录拖拽位移向量范围 43 | const outerElementRect = outerElement.getBoundingClientRect() 44 | const elementRect = element.getBoundingClientRect() 45 | console.log(outerElementRect, elementRect) 46 | 47 | draggingMoveVectorRange = [ 48 | outerElementRect.top - elementRect.top, 49 | outerElementRect.bottom - elementRect.bottom, 50 | outerElementRect.left - elementRect.left, 51 | outerElementRect.right - elementRect.right 52 | ] 53 | } 54 | typeof onDragStart === 'function' && onDragStart(draggedMoveVector) 55 | } 56 | 57 | const onMouseMove = (e: MouseEvent | TouchEvent) => { 58 | if (startPosition && draggingMoveVectorRange) { 59 | // 当前鼠标或触摸位置 60 | endPosition = getPosition(e) 61 | 62 | // 本次的拖拽位移向量 63 | const currentMoveVector = formatVector( 64 | diffVector(startPosition, endPosition), 65 | draggingMoveVectorRange 66 | ) 67 | // 之前的拖拽位移向量+本次的拖拽位移向量 68 | draggingMoveVector = addVector(draggedMoveVector, currentMoveVector) 69 | element.style.transform = setTranslatePosition( 70 | startTransform, 71 | draggingMoveVector 72 | ) 73 | typeof onDrag === 'function' && onDrag(draggingMoveVector) 74 | } 75 | } 76 | const onMouseUp = () => { 77 | if (startPosition && draggingMoveVectorRange) { 78 | draggedMoveVector = draggingMoveVector 79 | typeof onDragEnd === 'function' && onDragEnd(draggedMoveVector) 80 | } 81 | startPosition = null 82 | } 83 | 84 | const addEventListener = () => { 85 | if (innerElement) { 86 | innerElement.addEventListener('mousedown', onMouseDown) 87 | document.addEventListener('mousemove', onMouseMove) 88 | document.addEventListener('mouseup', onMouseUp) 89 | } 90 | } 91 | 92 | const removeEventListener = () => { 93 | if (innerElement) { 94 | innerElement.removeEventListener('mousedown', onMouseDown) 95 | document.removeEventListener('mousemove', onMouseMove) 96 | document.removeEventListener('mouseup', onMouseUp) 97 | } 98 | } 99 | 100 | addEventListener() 101 | return removeEventListener 102 | } 103 | 104 | export { drag } 105 | -------------------------------------------------------------------------------- /src/rosy-ui/directives/drag/type/type.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * 向量类型 3 | */ 4 | export type TVector = [number, number] 5 | 6 | /** 7 | * 向量范围 8 | */ 9 | export type TVectorRange = [number, number, number, number] 10 | 11 | export interface IOptions { 12 | /** 拖拽范围元素 */ 13 | outerElement?: HTMLElement 14 | /** 拖拽图标元素 */ 15 | innerElement?: HTMLElement 16 | /** 拖拽开始的回调 */ 17 | onDragStart?: (v: TVector) => void 18 | /** 拖拽中的回调 */ 19 | onDrag?: (v: TVector) => void 20 | /** 拖拽结束的回调 */ 21 | onDragEnd?: (v: TVector) => void 22 | } 23 | -------------------------------------------------------------------------------- /src/rosy-ui/directives/drag/utils/dragUtils.ts: -------------------------------------------------------------------------------- 1 | import { TVector } from '../type/type' 2 | 3 | /** 4 | * 向量加法 5 | * @param vector1 向量1 6 | * @param vector2 向量2 7 | * @returns 向量1 + 向量2 8 | */ 9 | export const addVector = (vector1: TVector, vector2: TVector): TVector => { 10 | const x = vector1[0] + vector2[0] 11 | const y = vector1[1] + vector2[1] 12 | return [x, y] 13 | } 14 | 15 | /** 16 | * 向量减法 17 | * @param vector1 向量1 18 | * @param vector2 向量2 19 | * @returns 向量2 - 向量1 20 | */ 21 | export const diffVector = (vector1: TVector, vector2: TVector): TVector => { 22 | const x = vector2[0] - vector1[0] 23 | const y = vector2[1] - vector1[1] 24 | return [x, y] 25 | } 26 | 27 | /** 28 | * 规范化向量 29 | * @param vector 向量 30 | * @param range 向量取值范围 31 | * @returns 规范化后的向量 32 | */ 33 | export const formatVector = (vector: TVector, range: number[]): TVector => { 34 | let x = vector[0] 35 | let y = vector[1] 36 | x = Math.max(x, range[2]) 37 | x = Math.min(x, range[3]) 38 | y = Math.max(y, range[0]) 39 | y = Math.min(y, range[1]) 40 | return [x, y] 41 | } 42 | 43 | /** 44 | * 从旧transform属性和偏移向量获取新transform属性 45 | * @param transform 旧transform属性 46 | * @param vector 偏移向量 47 | * @returns 新transform属性 48 | */ 49 | export const setTranslatePosition = ( 50 | transform: string, 51 | vector: TVector 52 | ): string => { 53 | return `translate3d(${vector[0]}px, ${vector[1]}px, 0px) ${transform.replace( 54 | 'none', 55 | '' 56 | )}` 57 | } 58 | export const getPosition = (e: MouseEvent | TouchEvent): TVector => { 59 | if (e instanceof MouseEvent) { 60 | return [e.pageX, e.pageY] 61 | } 62 | const touch = e.touches[0] 63 | return [touch.pageX, touch.pageY] 64 | } 65 | -------------------------------------------------------------------------------- /src/rosy-ui/directives/drag/v-drag-directives.ts: -------------------------------------------------------------------------------- 1 | import { drag } from './drag' 2 | 3 | export default { 4 | mounted(el: HTMLElement, bind: any) { 5 | // el.addEventListener('pointerdown', (event) => { 6 | // 必须确保disabled 属性存在 否则指令终止报错 7 | // if (bind.value && bind.value.disabled) return 8 | 9 | drag(el, bind.value) 10 | // }) 11 | }, 12 | updated(el: HTMLElement, bind: any) {} 13 | } 14 | -------------------------------------------------------------------------------- /src/rosy-ui/directives/ripple/ripple.ts: -------------------------------------------------------------------------------- 1 | import { 2 | createContainer, 3 | getRelativePointer, 4 | getDistanceToFurthestCorner, 5 | createrippleElement 6 | } from './utils/rippleUtils' 7 | 8 | const options = { 9 | directive: 'ripple', 10 | color: 'currentColor', 11 | initialOpacity: 0.2, 12 | finalOpacity: 0.1, 13 | duration: 0.8, 14 | easing: 'ease-out', 15 | delayTime: 50, 16 | disabled: false 17 | } 18 | 19 | const ripple = (event: PointerEvent, el: HTMLElement) => { 20 | const rect = el.getBoundingClientRect() 21 | const computedStyles = window.getComputedStyle(el) 22 | const { x, y } = getRelativePointer(event, rect) 23 | const size = 2.56 * getDistanceToFurthestCorner(x, y, rect) 24 | const rippleContainer = createContainer(computedStyles) 25 | const rippleEl = createrippleElement(x, y, size, options) 26 | 27 | let originalPositionValue = '' 28 | if (computedStyles.position === 'static') { 29 | // eslint-disable-next-line no-unused-vars 30 | if (el.style.position) originalPositionValue = el.style.position 31 | // eslint-disable-next-line no-param-reassign 32 | el.style.position = 'relative' 33 | } 34 | 35 | rippleContainer.appendChild(rippleEl) 36 | el.appendChild(rippleContainer) 37 | 38 | let shouldDissolveripple = false 39 | const releaseripple = (e?: any) => { 40 | if (typeof e !== 'undefined') { 41 | document.removeEventListener('pointerup', releaseripple) 42 | document.removeEventListener('pointercancel', releaseripple) 43 | } 44 | 45 | if (shouldDissolveripple) dissolveripple() 46 | else shouldDissolveripple = true 47 | } 48 | 49 | const dissolveripple = () => { 50 | rippleEl.style.transition = 'opacity 150ms linear' 51 | rippleEl.style.opacity = '0' 52 | 53 | setTimeout(() => { 54 | rippleContainer.remove() 55 | }, 150) 56 | } 57 | 58 | document.addEventListener('pointerup', releaseripple) 59 | document.addEventListener('pointercancel', releaseripple) 60 | 61 | const token = setTimeout(() => { 62 | document.removeEventListener('pointercancel', cancelripple) 63 | 64 | requestAnimationFrame(() => { 65 | rippleEl.style.transform = `translate(-50%,-50%) scale(1)` 66 | rippleEl.style.opacity = `${options.finalOpacity}` 67 | 68 | setTimeout(() => releaseripple(), options.duration * 1000) 69 | }) 70 | }, options.delayTime) 71 | 72 | const cancelripple = () => { 73 | clearTimeout(token) 74 | 75 | rippleContainer.remove() 76 | document.removeEventListener('pointerup', releaseripple) 77 | document.removeEventListener('pointercancel', releaseripple) 78 | document.removeEventListener('pointercancel', cancelripple) 79 | } 80 | 81 | document.addEventListener('pointercancel', cancelripple) 82 | } 83 | 84 | // eslint-disable-next-line import/prefer-default-export 85 | export { ripple } 86 | -------------------------------------------------------------------------------- /src/rosy-ui/directives/ripple/utils/rippleUtils.ts: -------------------------------------------------------------------------------- 1 | export function createContainer({ 2 | borderTopLeftRadius, 3 | borderTopRightRadius, 4 | borderBottomLeftRadius, 5 | borderBottomRightRadius 6 | }: CSSStyleDeclaration): HTMLDivElement { 7 | const container = document.createElement('div') 8 | container.style.top = '0' 9 | container.style.left = '0' 10 | container.style.width = '100%' 11 | container.style.height = '100%' 12 | container.style.position = 'absolute' 13 | container.style.borderRadius = `${borderTopLeftRadius} ${borderTopRightRadius} ${borderBottomRightRadius} ${borderBottomLeftRadius}` 14 | container.style.overflow = 'hidden' 15 | container.style.pointerEvents = 'none' 16 | 17 | return container 18 | } 19 | 20 | export function magnitude( 21 | x1: number, 22 | y1: number, 23 | x2: number, 24 | y2: number 25 | ): number { 26 | const deltaX = x1 - x2 27 | const deltaY = y1 - y2 28 | 29 | return Math.sqrt(deltaX * deltaX + deltaY * deltaY) 30 | } 31 | 32 | export function getDistanceToFurthestCorner( 33 | x: number, 34 | y: number, 35 | { width, height }: DOMRect 36 | ): number { 37 | // 获取点击目标的位置到块级作用域边界的距离 38 | const topLeft = magnitude(x, y, 0, 0) 39 | const topRight = magnitude(x, y, width, 0) 40 | const bottomLeft = magnitude(x, y, 0, height) 41 | const bottomRight = magnitude(x, y, width, height) 42 | return Math.max(topLeft, topRight, bottomLeft, bottomRight) 43 | } 44 | 45 | export const createrippleElement = ( 46 | x: number, 47 | y: number, 48 | size: number, 49 | options: any 50 | ): HTMLElement => { 51 | const rippleElement = document.createElement('div') 52 | 53 | rippleElement.style.position = 'absolute' 54 | rippleElement.style.width = `${size}px` 55 | rippleElement.style.height = `${size}px` 56 | rippleElement.style.top = `${y}px` 57 | rippleElement.style.left = `${x}px` 58 | rippleElement.style.background = options.color 59 | rippleElement.style.borderRadius = '50%' 60 | rippleElement.style.opacity = `${options.initialOpacity}` 61 | rippleElement.style.transform = `translate(-50%,-50%) scale(0)` 62 | rippleElement.style.transition = `transform ${options.duration}s ${options.easing}, opacity ${options.duration}s ${options.easing}` 63 | 64 | return rippleElement 65 | } 66 | 67 | export const getRelativePointer = ( 68 | { x, y }: PointerEvent, 69 | { top, left }: DOMRect 70 | ) => ({ 71 | x: x - left, 72 | y: y - top 73 | }) 74 | -------------------------------------------------------------------------------- /src/rosy-ui/directives/ripple/v-ripple-directives.ts: -------------------------------------------------------------------------------- 1 | import { ripple } from './ripple' 2 | 3 | export default { 4 | mounted(el: HTMLElement, bind: any) { 5 | el.addEventListener('pointerdown', (event) => { 6 | // 必须确保disabled 属性存在 否则指令终止报错 7 | if (bind.value && bind.value.disabled) return 8 | 9 | ripple(event, el) 10 | }) 11 | }, 12 | // eslint-disable-next-line no-unused-vars 13 | updated(el: HTMLElement, bind: any) {} 14 | } 15 | -------------------------------------------------------------------------------- /src/router/index.ts: -------------------------------------------------------------------------------- 1 | import { createWebHashHistory, RouteRecordRaw, createRouter } from 'vue-router' 2 | 3 | const routes: RouteRecordRaw[] = [ 4 | { 5 | path: '/', 6 | name: 'home', 7 | component: () => import('~/views/home') 8 | // children: [ 9 | // { 10 | // path: '/preview', 11 | // component: () => import('~/views/preview') 12 | // } 13 | // ] 14 | }, 15 | { 16 | path: '/preview', 17 | component: () => import('~/views/preview') 18 | } 19 | ] 20 | 21 | const router = createRouter({ 22 | history: createWebHashHistory(), 23 | routes 24 | }) 25 | 26 | export default router 27 | -------------------------------------------------------------------------------- /src/store/index.ts: -------------------------------------------------------------------------------- 1 | import { createStore } from 'vuex' 2 | import { IRootState } from './type' 3 | import PLUGINS from '../components/plugins/publicPlugins' 4 | 5 | const store = createStore({ 6 | state() { 7 | return { 8 | formPluginList: [...PLUGINS], 9 | currentSelectPlugin: { 10 | name: '' 11 | }, 12 | previewClass: false, 13 | formInfo: { 14 | name: '', 15 | description: '', 16 | formStyle: '' 17 | } 18 | } 19 | }, 20 | mutations: { 21 | // 设置当前选择组件 22 | setCurrentSelectPlugin(state, val) { 23 | state.currentSelectPlugin = val 24 | }, 25 | resetFormPluginList(state, val) { 26 | state.formPluginList = val 27 | }, 28 | 29 | // 拖拽添加新组件 30 | setFormPluginList(state, item) { 31 | state.formPluginList.push(item) 32 | }, 33 | 34 | // 根据id查找修改的组件 35 | setFormPluginItem(state, payload) { 36 | const { id, changeProp, changeValue } = payload 37 | const targetItem = state.formPluginList.find((item) => item.id === id) 38 | targetItem[changeProp] = changeValue 39 | }, 40 | 41 | // 预览 42 | changePreview(state, val) { 43 | state.previewClass = val 44 | }, 45 | 46 | setFormInfo(state, { key, value }) { 47 | state.formInfo[key] = value 48 | }, 49 | 50 | // 设置表单名 51 | setFormInfoName(state, name) { 52 | state.formInfo.name = name 53 | }, 54 | 55 | // 设置表单描述 56 | setFormInfoDesc(state, desc) { 57 | state.formInfo.description = desc 58 | }, 59 | 60 | // 设置表单样式 61 | setFormInfoStyle(state, style) { 62 | state.formInfo.formStyle = style 63 | } 64 | }, 65 | getters: { 66 | getFormList(state) { 67 | return state.formPluginList 68 | }, 69 | getFormInfo: (state) => (key: any) => { 70 | return state.formInfo[key] 71 | } 72 | }, 73 | actions: {} 74 | }) 75 | 76 | export default store 77 | -------------------------------------------------------------------------------- /src/store/type.ts: -------------------------------------------------------------------------------- 1 | export interface IPlugin { 2 | name: string 3 | } 4 | 5 | export interface IRootState { 6 | currentSelectPlugin: IPlugin 7 | formPluginList: any[] 8 | previewClass: boolean 9 | formInfo: { 10 | name: string 11 | description: string 12 | formStyle: string 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/views/home/index.tsx: -------------------------------------------------------------------------------- 1 | import { defineComponent, computed, onMounted } from 'vue' 2 | import PageHead from '~/components/PageHead' 3 | import PluginsWrap from '~/components/PluginsWrap' 4 | import FormView from '~/components/FormView' 5 | import PluginConfig from '~/components/PluginConfig.vue' 6 | import { useStore } from 'vuex' 7 | 8 | export default defineComponent({ 9 | setup() { 10 | onMounted(() => { 11 | const loader = document.querySelector('.loader') 12 | loader?.remove() 13 | }) 14 | 15 | const store = useStore() 16 | const current = computed(() => store.state.currentSelectPlugin) 17 | const preview = computed(() => store.state.previewClass) 18 | 19 | return () => { 20 | return ( 21 |
22 | 23 |
24 | 25 | 26 | 27 |
28 |
29 | ) 30 | } 31 | } 32 | }) 33 | -------------------------------------------------------------------------------- /src/views/preview/index.scss: -------------------------------------------------------------------------------- 1 | .preview__wrap { 2 | position: absolute; 3 | top: 0; 4 | left: 0; 5 | display: flex; 6 | justify-content: center; 7 | width: 100vw; 8 | height: 100vh; 9 | background-color: rgba(0, 0, 0, 0.2); 10 | z-index: 199; 11 | 12 | .form_wrap { 13 | max-width: 57rem; 14 | padding: 30px 0; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/views/preview/index.tsx: -------------------------------------------------------------------------------- 1 | import { defineComponent } from 'vue' 2 | import FormView from '~/components/FormView' 3 | import './index.scss' 4 | 5 | export default defineComponent({ 6 | setup() { 7 | return () => { 8 | return ( 9 | <> 10 |
11 | 12 |
13 | 14 | ) 15 | } 16 | } 17 | }) 18 | -------------------------------------------------------------------------------- /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 | "types": ["element-plus/global"], 15 | "baseUrl": "./", 16 | "paths": { 17 | "~/*": ["src/*"] 18 | } 19 | }, 20 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], 21 | "references": [{ "path": "./tsconfig.node.json" }] 22 | } 23 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "esnext", 5 | "moduleResolution": "node" 6 | }, 7 | "include": ["vite.config.ts"] 8 | } 9 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import { resolve } from 'path' 3 | import vue from '@vitejs/plugin-vue' 4 | import vueJsx from '@vitejs/plugin-vue-jsx' 5 | import AutoImport from 'unplugin-auto-import/vite' 6 | import Components from 'unplugin-vue-components/vite' 7 | import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' 8 | 9 | // https://vitejs.dev/config/ 10 | export default defineConfig({ 11 | plugins: [ 12 | vue(), 13 | vueJsx(), 14 | AutoImport({ 15 | resolvers: [ElementPlusResolver()] 16 | }), 17 | Components({ 18 | resolvers: [ElementPlusResolver()] 19 | }) 20 | ], 21 | resolve: { 22 | alias: { 23 | '~': resolve(__dirname, 'src') 24 | } 25 | }, 26 | base: './', 27 | server: { 28 | port: 8090, 29 | open: true 30 | } 31 | }) 32 | --------------------------------------------------------------------------------